mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 08:48:39 +09:00
Issue #1751 -- Remove XP_MACOSX conditionals from the rest of the tree.
This also removes some PP abuse and takes file entries out of PP when no longer needed without XP_MACOSX conditionals.
This commit is contained in:
parent
02c59100a8
commit
a4b0f333ba
153 changed files with 173 additions and 4556 deletions
|
|
@ -35,10 +35,10 @@ EPlatformDisabledState PlatformDisabledState();
|
||||||
void PreInit();
|
void PreInit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MOZ_ACCESSIBILITY_ATK) || defined(XP_MACOSX)
|
#if defined(MOZ_ACCESSIBILITY_ATK)
|
||||||
/**
|
/**
|
||||||
* Is platform accessibility enabled.
|
* Is platform accessibility enabled.
|
||||||
* Only used on linux with atk and MacOS for now.
|
* Only used on linux with atk.
|
||||||
*/
|
*/
|
||||||
bool ShouldA11yBeEnabled();
|
bool ShouldA11yBeEnabled();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,4 @@ pref("browser.preferences.instantApply", false);
|
||||||
#else
|
#else
|
||||||
pref("browser.preferences.instantApply", true);
|
pref("browser.preferences.instantApply", true);
|
||||||
#endif
|
#endif
|
||||||
#ifdef XP_MACOSX
|
|
||||||
pref("browser.preferences.animateFadeIn", true);
|
|
||||||
#else
|
|
||||||
pref("browser.preferences.animateFadeIn", false);
|
pref("browser.preferences.animateFadeIn", false);
|
||||||
#endif
|
|
||||||
|
|
|
||||||
|
|
@ -20,11 +20,6 @@
|
||||||
#define strcasecmp _stricmp
|
#define strcasecmp _stricmp
|
||||||
#define PATH_SEPARATOR_CHAR '\\'
|
#define PATH_SEPARATOR_CHAR '\\'
|
||||||
#define R_OK 04
|
#define R_OK 04
|
||||||
#elif defined(XP_MACOSX)
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <CoreFoundation/CoreFoundation.h>
|
|
||||||
#define PATH_SEPARATOR_CHAR '/'
|
|
||||||
#else
|
#else
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
@ -160,41 +155,6 @@ main(int argc, char **argv)
|
||||||
char greDir[MAXPATHLEN];
|
char greDir[MAXPATHLEN];
|
||||||
bool greFound = false;
|
bool greFound = false;
|
||||||
|
|
||||||
#if defined(XP_MACOSX)
|
|
||||||
CFBundleRef appBundle = CFBundleGetMainBundle();
|
|
||||||
if (!appBundle)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
CFURLRef resourcesURL = CFBundleCopyResourcesDirectoryURL(appBundle);
|
|
||||||
if (!resourcesURL)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
CFURLRef absResourcesURL = CFURLCopyAbsoluteURL(resourcesURL);
|
|
||||||
CFRelease(resourcesURL);
|
|
||||||
if (!absResourcesURL)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
CFURLRef iniFileURL =
|
|
||||||
CFURLCreateCopyAppendingPathComponent(kCFAllocatorDefault,
|
|
||||||
absResourcesURL,
|
|
||||||
CFSTR("application.ini"),
|
|
||||||
false);
|
|
||||||
CFRelease(absResourcesURL);
|
|
||||||
if (!iniFileURL)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
CFStringRef iniPathStr =
|
|
||||||
CFURLCopyFileSystemPath(iniFileURL, kCFURLPOSIXPathStyle);
|
|
||||||
CFRelease(iniFileURL);
|
|
||||||
if (!iniPathStr)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
CFStringGetCString(iniPathStr, iniPath, sizeof(iniPath),
|
|
||||||
kCFStringEncodingUTF8);
|
|
||||||
CFRelease(iniPathStr);
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
wchar_t wide_path[MAX_PATH];
|
wchar_t wide_path[MAX_PATH];
|
||||||
if (!::GetModuleFileNameW(nullptr, wide_path, MAX_PATH))
|
if (!::GetModuleFileNameW(nullptr, wide_path, MAX_PATH))
|
||||||
|
|
@ -276,8 +236,6 @@ main(int argc, char **argv)
|
||||||
|
|
||||||
strncpy(lastSlash, "application.ini", sizeof(iniPath) - (lastSlash - iniPath));
|
strncpy(lastSlash, "application.ini", sizeof(iniPath) - (lastSlash - iniPath));
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// If -app parameter was passed in, it is now time to take it under
|
// If -app parameter was passed in, it is now time to take it under
|
||||||
// consideration.
|
// consideration.
|
||||||
const char *appDataFile;
|
const char *appDataFile;
|
||||||
|
|
@ -334,33 +292,6 @@ main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!greFound) {
|
if (!greFound) {
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// The bundle can be found next to the executable, in the MacOS dir.
|
|
||||||
CFURLRef exurl = CFBundleCopyExecutableURL(appBundle);
|
|
||||||
CFURLRef absexurl = nullptr;
|
|
||||||
if (exurl) {
|
|
||||||
absexurl = CFURLCopyAbsoluteURL(exurl);
|
|
||||||
CFRelease(exurl);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (absexurl) {
|
|
||||||
char tbuffer[MAXPATHLEN];
|
|
||||||
|
|
||||||
if (CFURLGetFileSystemRepresentation(absexurl, true,
|
|
||||||
(UInt8*) tbuffer,
|
|
||||||
sizeof(tbuffer)) &&
|
|
||||||
access(tbuffer, R_OK | X_OK) == 0) {
|
|
||||||
if (realpath(tbuffer, greDir)) {
|
|
||||||
greFound = true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
greDir[0] = '\0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CFRelease(absexurl);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (!greFound) {
|
if (!greFound) {
|
||||||
Output(false, "Could not find the Mozilla runtime.\n");
|
Output(false, "Could not find the Mozilla runtime.\n");
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
||||||
|
|
@ -542,13 +542,6 @@ def target_is_unix(target):
|
||||||
|
|
||||||
set_define('XP_UNIX', target_is_unix)
|
set_define('XP_UNIX', target_is_unix)
|
||||||
|
|
||||||
@depends(target)
|
|
||||||
def target_is_osx(target):
|
|
||||||
if target.kernel == 'Darwin' and target.os == 'OSX':
|
|
||||||
return True
|
|
||||||
|
|
||||||
set_define('XP_MACOSX', target_is_osx)
|
|
||||||
|
|
||||||
@depends(target)
|
@depends(target)
|
||||||
def target_is_linux(target):
|
def target_is_linux(target):
|
||||||
if target.kernel == 'Linux':
|
if target.kernel == 'Linux':
|
||||||
|
|
|
||||||
|
|
@ -298,8 +298,6 @@ nsChromeRegistry::ConvertChromeURL(nsIURI* aChromeURI, nsIURI* *aResult)
|
||||||
if (flags & PLATFORM_PACKAGE) {
|
if (flags & PLATFORM_PACKAGE) {
|
||||||
#if defined(XP_WIN)
|
#if defined(XP_WIN)
|
||||||
path.Insert("win/", 0);
|
path.Insert("win/", 0);
|
||||||
#elif defined(XP_MACOSX)
|
|
||||||
path.Insert("mac/", 0);
|
|
||||||
#else
|
#else
|
||||||
path.Insert("unix/", 0);
|
path.Insert("unix/", 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,6 @@
|
||||||
|
|
||||||
#if defined(XP_WIN)
|
#if defined(XP_WIN)
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#elif defined(XP_MACOSX)
|
|
||||||
#include <CoreServices/CoreServices.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "nsArrayEnumerator.h"
|
#include "nsArrayEnumerator.h"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
# -*- makefile -*-
|
# -*- makefile -*-
|
||||||
# vim:set ts=8 sw=8 sts=8 noet:
|
|
||||||
#
|
#
|
||||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||||
|
|
@ -751,7 +750,6 @@ $(HOST_LIBRARY): $(HOST_OBJS) Makefile
|
||||||
$(EXPAND_LIBS_EXEC) --extract -- $(HOST_AR) $(HOST_AR_FLAGS) $(HOST_OBJS)
|
$(EXPAND_LIBS_EXEC) --extract -- $(HOST_AR) $(HOST_AR_FLAGS) $(HOST_OBJS)
|
||||||
|
|
||||||
ifdef HAVE_DTRACE
|
ifdef HAVE_DTRACE
|
||||||
ifndef XP_MACOSX
|
|
||||||
ifdef DTRACE_PROBE_OBJ
|
ifdef DTRACE_PROBE_OBJ
|
||||||
ifndef DTRACE_LIB_DEPENDENT
|
ifndef DTRACE_LIB_DEPENDENT
|
||||||
NON_DTRACE_OBJS := $(filter-out $(DTRACE_PROBE_OBJ),$(OBJS))
|
NON_DTRACE_OBJS := $(filter-out $(DTRACE_PROBE_OBJ),$(OBJS))
|
||||||
|
|
@ -760,7 +758,6 @@ $(DTRACE_PROBE_OBJ): $(NON_DTRACE_OBJS)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
|
|
||||||
# On Darwin (Mac OS X), dwarf2 debugging uses debug info left in .o files,
|
# On Darwin (Mac OS X), dwarf2 debugging uses debug info left in .o files,
|
||||||
# so instead of deleting .o files after repacking them into a dylib, we make
|
# so instead of deleting .o files after repacking them into a dylib, we make
|
||||||
|
|
@ -773,9 +770,7 @@ ifndef INCREMENTAL_LINKER
|
||||||
$(RM) $@
|
$(RM) $@
|
||||||
endif
|
endif
|
||||||
ifdef DTRACE_LIB_DEPENDENT
|
ifdef DTRACE_LIB_DEPENDENT
|
||||||
ifndef XP_MACOSX
|
|
||||||
dtrace -x nolibs -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(shell $(EXPAND_LIBS) $(MOZILLA_PROBE_LIBS))
|
dtrace -x nolibs -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(shell $(EXPAND_LIBS) $(MOZILLA_PROBE_LIBS))
|
||||||
endif
|
|
||||||
$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(SUB_SHLOBJS) $(DTRACE_PROBE_OBJ) $(MOZILLA_PROBE_LIBS) $(RESFILE) $(LDFLAGS) $(WRAP_LDFLAGS) $(STATIC_LIBS) $(RUST_STATIC_LIB_FOR_SHARED_LIB) $(SHARED_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(EXTRA_LIBS) $(OS_LIBS) $(SHLIB_LDENDFILE)
|
$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(SUB_SHLOBJS) $(DTRACE_PROBE_OBJ) $(MOZILLA_PROBE_LIBS) $(RESFILE) $(LDFLAGS) $(WRAP_LDFLAGS) $(STATIC_LIBS) $(RUST_STATIC_LIB_FOR_SHARED_LIB) $(SHARED_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(EXTRA_LIBS) $(OS_LIBS) $(SHLIB_LDENDFILE)
|
||||||
@$(RM) $(DTRACE_PROBE_OBJ)
|
@$(RM) $(DTRACE_PROBE_OBJ)
|
||||||
else # ! DTRACE_LIB_DEPENDENT
|
else # ! DTRACE_LIB_DEPENDENT
|
||||||
|
|
|
||||||
|
|
@ -18,10 +18,6 @@
|
||||||
|
|
||||||
// { %%%%% begin platform defs peculiar to Mork %%%%%
|
// { %%%%% begin platform defs peculiar to Mork %%%%%
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
#define MORK_MAC 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
#define MORK_WIN 1
|
#define MORK_WIN 1
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -32,7 +28,7 @@
|
||||||
|
|
||||||
// } %%%%% end platform defs peculiar to Mork %%%%%
|
// } %%%%% end platform defs peculiar to Mork %%%%%
|
||||||
|
|
||||||
#if defined(MORK_WIN) || defined(MORK_UNIX) || defined(MORK_MAC)
|
#if defined(MORK_WIN) || defined(MORK_UNIX)
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
@ -88,20 +84,15 @@ void mork_fileflush(FILE * file);
|
||||||
#define mork_kTAB '\011'
|
#define mork_kTAB '\011'
|
||||||
#define mork_kCRLF "\015\012" /* A CR LF equivalent string */
|
#define mork_kCRLF "\015\012" /* A CR LF equivalent string */
|
||||||
|
|
||||||
#if defined(MORK_MAC)
|
#if defined(MORK_WIN)
|
||||||
# define mork_kNewline "\015"
|
# define mork_kNewline "\015\012"
|
||||||
# define mork_kNewlineSize 1
|
# define mork_kNewlineSize 2
|
||||||
#else
|
#else
|
||||||
# if defined(MORK_WIN)
|
# if defined(MORK_UNIX)
|
||||||
# define mork_kNewline "\015\012"
|
# define mork_kNewline "\012"
|
||||||
# define mork_kNewlineSize 2
|
# define mork_kNewlineSize 1
|
||||||
# else
|
# endif /* MORK_UNIX */
|
||||||
# if defined(MORK_UNIX)
|
#endif /* MORK_WIN */
|
||||||
# define mork_kNewline "\012"
|
|
||||||
# define mork_kNewlineSize 1
|
|
||||||
# endif /* MORK_UNIX */
|
|
||||||
# endif /* MORK_WIN */
|
|
||||||
#endif /* MORK_MAC */
|
|
||||||
|
|
||||||
// { %%%%% begin assertion macro %%%%%
|
// { %%%%% begin assertion macro %%%%%
|
||||||
extern void mork_assertion_signal(const char* inMessage);
|
extern void mork_assertion_signal(const char* inMessage);
|
||||||
|
|
@ -114,7 +105,7 @@ extern void mork_assertion_signal(const char* inMessage);
|
||||||
|
|
||||||
// { %%%%% begin standard c utility methods %%%%%
|
// { %%%%% begin standard c utility methods %%%%%
|
||||||
|
|
||||||
#if defined(MORK_WIN) || defined(MORK_UNIX) || defined(MORK_MAC)
|
#if defined(MORK_WIN) || defined(MORK_UNIX)
|
||||||
#define MORK_USE_C_STDLIB 1
|
#define MORK_USE_C_STDLIB 1
|
||||||
#endif /*MORK_WIN*/
|
#endif /*MORK_WIN*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,11 +21,7 @@ window {
|
||||||
* depend on. Must style font-size to target linux.
|
* depend on. Must style font-size to target linux.
|
||||||
*/
|
*/
|
||||||
%ifdef XP_UNIX
|
%ifdef XP_UNIX
|
||||||
%ifndef XP_MACOSX
|
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
%else
|
|
||||||
font-size: 15px;
|
|
||||||
%endif
|
|
||||||
%else
|
%else
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
%endif
|
%endif
|
||||||
|
|
|
||||||
|
|
@ -142,16 +142,6 @@ function evaluateTestScript(script, toolbox) {
|
||||||
function bindToolboxHandlers() {
|
function bindToolboxHandlers() {
|
||||||
gToolbox.once("destroyed", quitApp);
|
gToolbox.once("destroyed", quitApp);
|
||||||
window.addEventListener("unload", onUnload);
|
window.addEventListener("unload", onUnload);
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// Badge the dock icon to differentiate this process from the main application process.
|
|
||||||
updateBadgeText(false);
|
|
||||||
|
|
||||||
// Once the debugger panel opens listen for thread pause / resume.
|
|
||||||
gToolbox.getPanelWhenReady("jsdebugger").then(panel => {
|
|
||||||
setupThreadListeners(panel);
|
|
||||||
});
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function setupThreadListeners(panel) {
|
function setupThreadListeners(panel) {
|
||||||
|
|
|
||||||
|
|
@ -110,7 +110,7 @@ devtools.jar:
|
||||||
content/framework/toolbox-init.js (framework/toolbox-init.js)
|
content/framework/toolbox-init.js (framework/toolbox-init.js)
|
||||||
content/framework/options-panel.css (framework/options-panel.css)
|
content/framework/options-panel.css (framework/options-panel.css)
|
||||||
content/framework/toolbox-process-window.xul (framework/toolbox-process-window.xul)
|
content/framework/toolbox-process-window.xul (framework/toolbox-process-window.xul)
|
||||||
* content/framework/toolbox-process-window.js (framework/toolbox-process-window.js)
|
content/framework/toolbox-process-window.js (framework/toolbox-process-window.js)
|
||||||
content/framework/dev-edition-promo/dev-edition-promo.xul (framework/dev-edition-promo/dev-edition-promo.xul)
|
content/framework/dev-edition-promo/dev-edition-promo.xul (framework/dev-edition-promo/dev-edition-promo.xul)
|
||||||
* content/framework/dev-edition-promo/dev-edition-promo.css (framework/dev-edition-promo/dev-edition-promo.css)
|
* content/framework/dev-edition-promo/dev-edition-promo.css (framework/dev-edition-promo/dev-edition-promo.css)
|
||||||
content/framework/dev-edition-promo/dev-edition-logo.png (framework/dev-edition-promo/dev-edition-logo.png)
|
content/framework/dev-edition-promo/dev-edition-logo.png (framework/dev-edition-promo/dev-edition-logo.png)
|
||||||
|
|
|
||||||
|
|
@ -32,18 +32,6 @@ public:
|
||||||
NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLObjectElement, object)
|
NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLObjectElement, object)
|
||||||
virtual int32_t TabIndexDefault() override;
|
virtual int32_t TabIndexDefault() override;
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// nsIDOMEventTarget
|
|
||||||
NS_IMETHOD PostHandleEvent(EventChainPostVisitor& aVisitor) override;
|
|
||||||
// Helper methods
|
|
||||||
static void OnFocusBlurPlugin(Element* aElement, bool aFocus);
|
|
||||||
static void HandleFocusBlurPlugin(Element* aElement, WidgetEvent* aEvent);
|
|
||||||
static void HandlePluginCrashed(Element* aElement);
|
|
||||||
static void HandlePluginInstantiated(Element* aElement);
|
|
||||||
// Weak pointer. Null if last action was blur.
|
|
||||||
static Element* sLastFocused;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Element
|
// Element
|
||||||
virtual bool IsInteractiveHTMLContent(bool aIgnoreTabindex) const override;
|
virtual bool IsInteractiveHTMLContent(bool aIgnoreTabindex) const override;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
/* vim:set ts=4 sw=4 sts=4 et cindent: */
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
* Copyright 1993 by OpenVision Technologies, Inc.
|
* Copyright 1993 by OpenVision Technologies, Inc.
|
||||||
*
|
*
|
||||||
|
|
@ -94,10 +93,6 @@
|
||||||
|
|
||||||
EXTERN_C_BEGIN
|
EXTERN_C_BEGIN
|
||||||
|
|
||||||
#if defined(XP_MACOSX)
|
|
||||||
# pragma pack(push,2)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the platform supports the xom.h header file, it should be
|
* If the platform supports the xom.h header file, it should be
|
||||||
* included here.
|
* included here.
|
||||||
|
|
@ -838,10 +833,6 @@ GSS_CALLCONV GSS_FUNC(gss_duplicate_name)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
#if defined(XP_MACOSX)
|
|
||||||
# pragma pack(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
EXTERN_C_END
|
EXTERN_C_END
|
||||||
|
|
||||||
#endif /* GSSAPI_H_ */
|
#endif /* GSSAPI_H_ */
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
/* vim:set ts=4 sw=4 sts=4 et cindent: */
|
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
@ -25,19 +24,6 @@
|
||||||
|
|
||||||
#include "nsAuthGSSAPI.h"
|
#include "nsAuthGSSAPI.h"
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
#include <Kerberos/Kerberos.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
typedef KLStatus (*KLCacheHasValidTickets_type)(
|
|
||||||
KLPrincipal,
|
|
||||||
KLKerberosVersion,
|
|
||||||
KLBoolean *,
|
|
||||||
KLPrincipal *,
|
|
||||||
char **);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(HAVE_RES_NINIT)
|
#if defined(HAVE_RES_NINIT)
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
|
|
@ -91,12 +77,6 @@ static PRLibrary* gssLibrary = nullptr;
|
||||||
#define gss_wrap_ptr ((gss_wrap_type)*gssFuncs[8].func)
|
#define gss_wrap_ptr ((gss_wrap_type)*gssFuncs[8].func)
|
||||||
#define gss_unwrap_ptr ((gss_unwrap_type)*gssFuncs[9].func)
|
#define gss_unwrap_ptr ((gss_unwrap_type)*gssFuncs[9].func)
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
static PRFuncPtr KLCacheHasValidTicketsPtr;
|
|
||||||
#define KLCacheHasValidTickets_ptr \
|
|
||||||
((KLCacheHasValidTickets_type)*KLCacheHasValidTicketsPtr)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static nsresult
|
static nsresult
|
||||||
gssInit()
|
gssInit()
|
||||||
{
|
{
|
||||||
|
|
@ -212,15 +192,6 @@ gssInit()
|
||||||
return NS_ERROR_FAILURE;
|
return NS_ERROR_FAILURE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef XP_MACOSX
|
|
||||||
if (gssNativeImp &&
|
|
||||||
!(KLCacheHasValidTicketsPtr =
|
|
||||||
PR_FindFunctionSymbol(lib, "KLCacheHasValidTickets"))) {
|
|
||||||
LOG(("Fail to load KLCacheHasValidTickets function from gssapi library\n"));
|
|
||||||
PR_UnloadLibrary(lib);
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
gssLibrary = lib;
|
gssLibrary = lib;
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
|
@ -441,24 +412,6 @@ nsAuthGSSAPI::GetNextToken(const void *inToken,
|
||||||
return NS_ERROR_UNEXPECTED;
|
return NS_ERROR_UNEXPECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(XP_MACOSX)
|
|
||||||
// Suppress Kerberos prompts to get credentials. See bug 240643.
|
|
||||||
// We can only use Mac OS X specific kerb functions if we are using
|
|
||||||
// the native lib
|
|
||||||
KLBoolean found;
|
|
||||||
bool doingMailTask = mServiceName.Find("imap@") ||
|
|
||||||
mServiceName.Find("pop@") ||
|
|
||||||
mServiceName.Find("smtp@") ||
|
|
||||||
mServiceName.Find("ldap@");
|
|
||||||
|
|
||||||
if (!doingMailTask && (gssNativeImp &&
|
|
||||||
(KLCacheHasValidTickets_ptr(nullptr, kerberosVersion_V5, &found, nullptr, nullptr) != klNoErr || !found)))
|
|
||||||
{
|
|
||||||
major_status = GSS_S_FAILURE;
|
|
||||||
minor_status = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif /* XP_MACOSX */
|
|
||||||
major_status = gss_init_sec_context_ptr(&minor_status,
|
major_status = gss_init_sec_context_ptr(&minor_status,
|
||||||
GSS_C_NO_CREDENTIAL,
|
GSS_C_NO_CREDENTIAL,
|
||||||
&mCtx,
|
&mCtx,
|
||||||
|
|
|
||||||
|
|
@ -123,20 +123,12 @@ AllowedImageSize(int32_t aWidth, int32_t aHeight)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// check to make sure we don't overflow a 32-bit
|
// check to make sure we don't overflow 32-bit size for RGBA
|
||||||
CheckedInt32 requiredBytes = CheckedInt32(aWidth) * CheckedInt32(aHeight) * 4;
|
CheckedInt32 requiredBytes = CheckedInt32(aWidth) * CheckedInt32(aHeight) * 4;
|
||||||
if (MOZ_UNLIKELY(!requiredBytes.isValid())) {
|
if (MOZ_UNLIKELY(!requiredBytes.isValid())) {
|
||||||
NS_WARNING("width or height too large");
|
NS_WARNING("width or height too large");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#if defined(XP_MACOSX)
|
|
||||||
// CoreGraphics is limited to images < 32K in *height*, so clamp all surfaces
|
|
||||||
// on the Mac to that height
|
|
||||||
if (MOZ_UNLIKELY(aHeight > SHRT_MAX)) {
|
|
||||||
NS_WARNING("image too big");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,7 @@
|
||||||
#include "nsIDateTimeFormat.h"
|
#include "nsIDateTimeFormat.h"
|
||||||
#include "mozilla/RefPtr.h"
|
#include "mozilla/RefPtr.h"
|
||||||
|
|
||||||
#if defined(XP_MACOSX)
|
#if defined(XP_UNIX)
|
||||||
#define USE_MAC_LOCALE
|
|
||||||
#elif defined(XP_UNIX)
|
|
||||||
#define USE_UNIX_LOCALE
|
#define USE_UNIX_LOCALE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -18,9 +16,6 @@
|
||||||
#ifdef USE_UNIX_LOCALE
|
#ifdef USE_UNIX_LOCALE
|
||||||
#include "unix/nsDateTimeFormatUnix.h"
|
#include "unix/nsDateTimeFormatUnix.h"
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_MAC_LOCALE
|
|
||||||
#include "mac/nsDateTimeFormatMac.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
using mozilla::MakeAndAddRef;
|
using mozilla::MakeAndAddRef;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,11 +15,7 @@
|
||||||
#include "nsLanguageAtomService.h"
|
#include "nsLanguageAtomService.h"
|
||||||
#include "nsPlatformCharset.h"
|
#include "nsPlatformCharset.h"
|
||||||
|
|
||||||
#if defined(XP_MACOSX)
|
#if defined(XP_UNIX)
|
||||||
#define USE_MAC_LOCALE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(XP_UNIX) && !defined(XP_MACOSX)
|
|
||||||
#define USE_UNIX_LOCALE
|
#define USE_UNIX_LOCALE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -28,11 +24,6 @@
|
||||||
#include "windows/nsDateTimeFormatWin.h"
|
#include "windows/nsDateTimeFormatWin.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_MAC_LOCALE
|
|
||||||
#include "mac/nsCollationMacUC.h"
|
|
||||||
#include "mac/nsDateTimeFormatMac.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef USE_UNIX_LOCALE
|
#ifdef USE_UNIX_LOCALE
|
||||||
#include "unix/nsCollationUnix.h"
|
#include "unix/nsCollationUnix.h"
|
||||||
#include "unix/nsDateTimeFormatUnix.h"
|
#include "unix/nsDateTimeFormatUnix.h"
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,6 @@
|
||||||
|
|
||||||
#if defined(XP_WIN)
|
#if defined(XP_WIN)
|
||||||
# include "nsWin32Locale.h"
|
# include "nsWin32Locale.h"
|
||||||
#elif defined(XP_MACOSX)
|
|
||||||
# include <Carbon/Carbon.h>
|
|
||||||
#elif defined(XP_UNIX)
|
#elif defined(XP_UNIX)
|
||||||
# include <locale.h>
|
# include <locale.h>
|
||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
|
|
@ -41,7 +39,7 @@ const char* LocaleList[LocaleListLength] =
|
||||||
#define NSILOCALE_MAX_ACCEPT_LANGUAGE 16
|
#define NSILOCALE_MAX_ACCEPT_LANGUAGE 16
|
||||||
#define NSILOCALE_MAX_ACCEPT_LENGTH 18
|
#define NSILOCALE_MAX_ACCEPT_LENGTH 18
|
||||||
|
|
||||||
#if (defined(XP_UNIX) && !defined(XP_MACOSX))
|
#if defined(XP_UNIX)
|
||||||
static int posix_locale_category[LocaleListLength] =
|
static int posix_locale_category[LocaleListLength] =
|
||||||
{
|
{
|
||||||
LC_COLLATE,
|
LC_COLLATE,
|
||||||
|
|
@ -113,7 +111,7 @@ nsLocaleService::nsLocaleService(void)
|
||||||
rv = NewLocale(xpLocale, getter_AddRefs(mApplicationLocale));
|
rv = NewLocale(xpLocale, getter_AddRefs(mApplicationLocale));
|
||||||
NS_ENSURE_SUCCESS_VOID(rv);
|
NS_ENSURE_SUCCESS_VOID(rv);
|
||||||
#endif
|
#endif
|
||||||
#if defined(XP_UNIX) && !defined(XP_MACOSX)
|
#if defined(XP_UNIX)
|
||||||
RefPtr<nsLocale> resultLocale(new nsLocale());
|
RefPtr<nsLocale> resultLocale(new nsLocale());
|
||||||
NS_ENSURE_TRUE_VOID(resultLocale);
|
NS_ENSURE_TRUE_VOID(resultLocale);
|
||||||
|
|
||||||
|
|
@ -154,36 +152,7 @@ nsLocaleService::nsLocaleService(void)
|
||||||
}
|
}
|
||||||
mSystemLocale = do_QueryInterface(resultLocale);
|
mSystemLocale = do_QueryInterface(resultLocale);
|
||||||
mApplicationLocale = do_QueryInterface(resultLocale);
|
mApplicationLocale = do_QueryInterface(resultLocale);
|
||||||
|
|
||||||
#endif // XP_UNIX
|
#endif // XP_UNIX
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// Get string representation of user's current locale
|
|
||||||
CFLocaleRef userLocaleRef = ::CFLocaleCopyCurrent();
|
|
||||||
CFStringRef userLocaleStr = ::CFLocaleGetIdentifier(userLocaleRef);
|
|
||||||
::CFRetain(userLocaleStr);
|
|
||||||
|
|
||||||
AutoTArray<UniChar, 32> buffer;
|
|
||||||
int size = ::CFStringGetLength(userLocaleStr);
|
|
||||||
buffer.SetLength(size + 1);
|
|
||||||
CFRange range = ::CFRangeMake(0, size);
|
|
||||||
::CFStringGetCharacters(userLocaleStr, range, buffer.Elements());
|
|
||||||
buffer[size] = 0;
|
|
||||||
|
|
||||||
// Convert the locale string to the format that Mozilla expects
|
|
||||||
nsAutoString xpLocale(reinterpret_cast<char16_t*>(buffer.Elements()));
|
|
||||||
xpLocale.ReplaceChar('_', '-');
|
|
||||||
|
|
||||||
nsresult rv = NewLocale(xpLocale, getter_AddRefs(mSystemLocale));
|
|
||||||
if (NS_SUCCEEDED(rv)) {
|
|
||||||
mApplicationLocale = mSystemLocale;
|
|
||||||
}
|
|
||||||
|
|
||||||
::CFRelease(userLocaleStr);
|
|
||||||
::CFRelease(userLocaleRef);
|
|
||||||
|
|
||||||
NS_ASSERTION(mApplicationLocale, "Failed to create locale objects");
|
|
||||||
#endif // XP_MACOSX
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nsLocaleService::~nsLocaleService(void)
|
nsLocaleService::~nsLocaleService(void)
|
||||||
|
|
@ -206,7 +175,7 @@ nsLocaleService::NewLocale(const nsAString &aLocale, nsILocale **_retval)
|
||||||
NS_ConvertASCIItoUTF16 category(LocaleList[i]);
|
NS_ConvertASCIItoUTF16 category(LocaleList[i]);
|
||||||
result = resultLocale->AddCategory(category, aLocale);
|
result = resultLocale->AddCategory(category, aLocale);
|
||||||
if (NS_FAILED(result)) return result;
|
if (NS_FAILED(result)) return result;
|
||||||
#if defined(XP_UNIX) && !defined(XP_MACOSX)
|
#if defined(XP_UNIX)
|
||||||
category.AppendLiteral("##PLATFORM");
|
category.AppendLiteral("##PLATFORM");
|
||||||
result = resultLocale->AddCategory(category, aLocale);
|
result = resultLocale->AddCategory(category, aLocale);
|
||||||
if (NS_FAILED(result)) return result;
|
if (NS_FAILED(result)) return result;
|
||||||
|
|
|
||||||
|
|
@ -101,12 +101,6 @@ public:
|
||||||
return mProcessType;
|
return mProcessType;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
task_t GetChildTask() {
|
|
||||||
return mChildTask;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Must run on the IO thread. Cause the OS process to exit and
|
* Must run on the IO thread. Cause the OS process to exit and
|
||||||
* ensure its OS resources are cleaned up.
|
* ensure its OS resources are cleaned up.
|
||||||
|
|
|
||||||
|
|
@ -126,12 +126,8 @@ DefaultJitOptions::DefaultJitOptions()
|
||||||
SET_DEFAULT(disableSharedStubs, false);
|
SET_DEFAULT(disableSharedStubs, false);
|
||||||
|
|
||||||
// Toggles whether sincos optimization is globally disabled.
|
// Toggles whether sincos optimization is globally disabled.
|
||||||
// See bug984018: The MacOS is the only one that has the sincos fast.
|
// See bug 984018 as to why this is disabled.
|
||||||
#if defined(XP_MACOSX)
|
SET_DEFAULT(disableSincos, true);
|
||||||
SET_DEFAULT(disableSincos, false);
|
|
||||||
#else
|
|
||||||
SET_DEFAULT(disableSincos, true);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Toggles whether sink code motion is globally disabled.
|
// Toggles whether sink code motion is globally disabled.
|
||||||
SET_DEFAULT(disableSink, true);
|
SET_DEFAULT(disableSink, true);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
|
dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
|
||||||
dnl vi: set tabstop=4 shiftwidth=4 expandtab syntax=m4:
|
|
||||||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
@ -567,11 +566,6 @@ case "$host" in
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*-darwin*)
|
|
||||||
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX"
|
|
||||||
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
|
|
||||||
;;
|
|
||||||
|
|
||||||
*-linux*|*-kfreebsd*-gnu|*-gnu*)
|
*-linux*|*-kfreebsd*-gnu|*-gnu*)
|
||||||
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
|
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
|
||||||
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
|
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,6 @@
|
||||||
#include "mozilla/WindowsDllBlocklist.h"
|
#include "mozilla/WindowsDllBlocklist.h"
|
||||||
|
|
||||||
#include "nsXULAppAPI.h"
|
#include "nsXULAppAPI.h"
|
||||||
#ifdef XP_MACOSX
|
|
||||||
#include "xpcshellMacUtils.h"
|
|
||||||
#endif
|
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <shlobj.h>
|
#include <shlobj.h>
|
||||||
|
|
@ -37,10 +34,6 @@ main(int argc, char** argv, char** envp)
|
||||||
gtk_parse_args(&argc, &argv);
|
gtk_parse_args(&argc, &argv);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
InitAutoreleasePool();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// unbuffer stdout so that output is in the correct order; note that stderr
|
// unbuffer stdout so that output is in the correct order; note that stderr
|
||||||
// is unbuffered by default
|
// is unbuffered by default
|
||||||
setbuf(stdout, 0);
|
setbuf(stdout, 0);
|
||||||
|
|
@ -51,9 +44,5 @@ main(int argc, char** argv, char** envp)
|
||||||
|
|
||||||
int result = XRE_XPCShellMain(argc, argv, envp);
|
int result = XRE_XPCShellMain(argc, argv, envp);
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
FinishAutoreleasePool();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -127,16 +127,6 @@ SandboxDump(JSContext* cx, unsigned argc, Value* vp)
|
||||||
if (!cstr)
|
if (!cstr)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#if defined(XP_MACOSX)
|
|
||||||
// Be nice and convert all \r to \n.
|
|
||||||
char* c = cstr;
|
|
||||||
char* cEnd = cstr + strlen(cstr);
|
|
||||||
while (c < cEnd) {
|
|
||||||
if (*c == '\r')
|
|
||||||
*c = '\n';
|
|
||||||
c++;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef ANDROID
|
#ifdef ANDROID
|
||||||
__android_log_write(ANDROID_LOG_INFO, "GeckoDump", cstr);
|
__android_log_write(ANDROID_LOG_INFO, "GeckoDump", cstr);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -3209,12 +3209,7 @@ XPCJSContext::Initialize()
|
||||||
// the web to base this decision primarily on the default stack size that the
|
// the web to base this decision primarily on the default stack size that the
|
||||||
// underlying platform makes available, but that seems to be what we do. :-(
|
// underlying platform makes available, but that seems to be what we do. :-(
|
||||||
|
|
||||||
#if defined(XP_MACOSX) || defined(DARWIN)
|
#if defined(MOZ_ASAN)
|
||||||
// MacOS has a gargantuan default stack size of 8MB. Go wild with 7MB,
|
|
||||||
// and give trusted script 180k extra. The stack is huge on mac anyway.
|
|
||||||
const size_t kStackQuota = 7 * 1024 * 1024;
|
|
||||||
const size_t kTrustedScriptBuffer = 180 * 1024;
|
|
||||||
#elif defined(MOZ_ASAN)
|
|
||||||
// ASan requires more stack space due to red-zones, so give it double the
|
// ASan requires more stack space due to red-zones, so give it double the
|
||||||
// default (1MB on 32-bit, 2MB on 64-bit). ASAN stack frame measurements
|
// default (1MB on 32-bit, 2MB on 64-bit). ASAN stack frame measurements
|
||||||
// were not taken at the time of this writing, so we hazard a guess that
|
// were not taken at the time of this writing, so we hazard a guess that
|
||||||
|
|
|
||||||
|
|
@ -1288,22 +1288,6 @@ XRE_XPCShellMain(int argc, char** argv, char** envp)
|
||||||
argc -= 2;
|
argc -= 2;
|
||||||
argv += 2;
|
argv += 2;
|
||||||
} else {
|
} else {
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// On OSX, the GreD needs to point to Contents/Resources in the .app
|
|
||||||
// bundle. Libraries will be loaded at a relative path to GreD, i.e.
|
|
||||||
// ../MacOS.
|
|
||||||
nsCOMPtr<nsIFile> tmpDir;
|
|
||||||
XRE_GetFileFromPath(argv[0], getter_AddRefs(greDir));
|
|
||||||
greDir->GetParent(getter_AddRefs(tmpDir));
|
|
||||||
tmpDir->Clone(getter_AddRefs(greDir));
|
|
||||||
tmpDir->SetNativeLeafName(NS_LITERAL_CSTRING("Resources"));
|
|
||||||
bool dirExists = false;
|
|
||||||
tmpDir->Exists(&dirExists);
|
|
||||||
if (dirExists) {
|
|
||||||
greDir = tmpDir.forget();
|
|
||||||
}
|
|
||||||
dirprovider.SetGREDirs(greDir);
|
|
||||||
#else
|
|
||||||
nsAutoString workingDir;
|
nsAutoString workingDir;
|
||||||
if (!GetCurrentWorkingDirectory(workingDir)) {
|
if (!GetCurrentWorkingDirectory(workingDir)) {
|
||||||
printf("GetCurrentWorkingDirectory failed.\n");
|
printf("GetCurrentWorkingDirectory failed.\n");
|
||||||
|
|
@ -1314,7 +1298,6 @@ XRE_XPCShellMain(int argc, char** argv, char** envp)
|
||||||
printf("NS_NewLocalFile failed.\n");
|
printf("NS_NewLocalFile failed.\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc > 1 && !strcmp(argv[1], "-a")) {
|
if (argc > 1 && !strcmp(argv[1], "-a")) {
|
||||||
|
|
@ -1570,13 +1553,6 @@ XPCShellDirProvider::SetGREDirs(nsIFile* greDir)
|
||||||
{
|
{
|
||||||
mGREDir = greDir;
|
mGREDir = greDir;
|
||||||
mGREDir->Clone(getter_AddRefs(mGREBinDir));
|
mGREDir->Clone(getter_AddRefs(mGREBinDir));
|
||||||
#ifdef XP_MACOSX
|
|
||||||
nsAutoCString leafName;
|
|
||||||
mGREDir->GetNativeLeafName(leafName);
|
|
||||||
if (leafName.Equals("Resources")) {
|
|
||||||
mGREBinDir->SetNativeLeafName(NS_LITERAL_CSTRING("MacOS"));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -387,47 +387,6 @@
|
||||||
#define NS_ABVIEW_CONTRACTID \
|
#define NS_ABVIEW_CONTRACTID \
|
||||||
"@mozilla.org/addressbook/abview;1"
|
"@mozilla.org/addressbook/abview;1"
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
//
|
|
||||||
// nsAbOSXDirectory
|
|
||||||
//
|
|
||||||
#define NS_ABOSXDIRECTORY_PREFIX "moz-abosxdirectory"
|
|
||||||
#define NS_ABOSXCARD_PREFIX "moz-abosxcard"
|
|
||||||
|
|
||||||
#define NS_ABOSXDIRECTORY_CONTRACTID \
|
|
||||||
NS_AB_DIRECTORY_TYPE_CONTRACTID_PREFIX NS_ABOSXDIRECTORY_PREFIX
|
|
||||||
|
|
||||||
#define NS_ABOSXDIRECTORY_CID \
|
|
||||||
{ /* {83781cc6-c682-11d6-bdeb-0005024967b8}*/ \
|
|
||||||
0x83781cc6, 0xc682, 0x11d6, \
|
|
||||||
{0xbd, 0xeb, 0x00, 0x05, 0x02, 0x49, 0x67, 0xb8} \
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// nsAbOSXCard
|
|
||||||
//
|
|
||||||
#define NS_ABOSXCARD_CONTRACTID \
|
|
||||||
NS_AB_DIRECTORY_TYPE_CONTRACTID_PREFIX NS_ABOSXCARD_PREFIX
|
|
||||||
|
|
||||||
#define NS_ABOSXCARD_CID \
|
|
||||||
{ /* {89bbf582-c682-11d6-bc9d-0005024967b8}*/ \
|
|
||||||
0x89bbf582, 0xc682, 0x11d6, \
|
|
||||||
{0xbc, 0x9d, 0x00, 0x05, 0x02, 0x49, 0x67, 0xb8} \
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// OS X directory factory
|
|
||||||
//
|
|
||||||
#define NS_ABOSXDIRFACTORY_CONTRACTID \
|
|
||||||
NS_AB_DIRECTORY_FACTORY_CONTRACTID_PREFIX NS_ABOSXDIRECTORY_PREFIX
|
|
||||||
|
|
||||||
#define NS_ABOSXDIRFACTORY_CID \
|
|
||||||
{ /* {90efe2fe-c682-11d6-9c83-0005024967b8}*/ \
|
|
||||||
0x90efe2fe, 0xc682, 0x11d6, \
|
|
||||||
{0x9c, 0x83, 0x00, 0x05, 0x02, 0x49, 0x67, 0xb8} \
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define NS_MSGVCARDSERVICE_CID \
|
#define NS_MSGVCARDSERVICE_CID \
|
||||||
{ 0x3c4ac0da, 0x2cda, 0x4018, \
|
{ 0x3c4ac0da, 0x2cda, 0x4018, \
|
||||||
{ 0x95, 0x51, 0xe1, 0x58, 0xb2, 0xe1, 0x22, 0xd3 }}
|
{ 0x95, 0x51, 0xe1, 0x58, 0xb2, 0xe1, 0x22, 0xd3 }}
|
||||||
|
|
|
||||||
|
|
@ -343,11 +343,7 @@
|
||||||
checked="true"/>
|
checked="true"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
<spacer flex="1"/>
|
<spacer flex="1"/>
|
||||||
#ifndef XP_MACOSX
|
|
||||||
<description>&clickFinish.label;</description>
|
<description>&clickFinish.label;</description>
|
||||||
#else
|
|
||||||
<description>&clickFinish.labelMac;</description>
|
|
||||||
#endif
|
|
||||||
</vbox>
|
</vbox>
|
||||||
</wizardpage>
|
</wizardpage>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -822,11 +822,6 @@ nsresult nsMsgFilter::ConvertMoveOrCopyToFolderValue(nsIMsgRuleAction *filterAct
|
||||||
if (offset != -1)
|
if (offset != -1)
|
||||||
moveValue.Cut(offset, 4);
|
moveValue.Cut(offset, 4);
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
nsCString unescapedMoveValue;
|
|
||||||
MsgUnescapeString(moveValue, 0, unescapedMoveValue);
|
|
||||||
moveValue = unescapedMoveValue;
|
|
||||||
#endif
|
|
||||||
destFolderUri.Append('/');
|
destFolderUri.Append('/');
|
||||||
if (filterVersion == k45Version)
|
if (filterVersion == k45Version)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -698,7 +698,6 @@ nsresult nsMessenger::SaveAttachment(nsIFile *aFile,
|
||||||
saveListener->QueryInterface(NS_GET_IID(nsIStreamListener),
|
saveListener->QueryInterface(NS_GET_IID(nsIStreamListener),
|
||||||
getter_AddRefs(convertedListener));
|
getter_AddRefs(convertedListener));
|
||||||
|
|
||||||
#ifndef XP_MACOSX
|
|
||||||
// if the content type is bin hex we are going to do a hokey hack and make sure we decode the bin hex
|
// if the content type is bin hex we are going to do a hokey hack and make sure we decode the bin hex
|
||||||
// when saving an attachment to disk..
|
// when saving an attachment to disk..
|
||||||
if (MsgLowerCaseEqualsLiteral(aContentType, APPLICATION_BINHEX))
|
if (MsgLowerCaseEqualsLiteral(aContentType, APPLICATION_BINHEX))
|
||||||
|
|
@ -713,7 +712,6 @@ nsresult nsMessenger::SaveAttachment(nsIFile *aFile,
|
||||||
channelSupport,
|
channelSupport,
|
||||||
getter_AddRefs(convertedListener));
|
getter_AddRefs(convertedListener));
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
nsCOMPtr<nsIURI> dummyNull;
|
nsCOMPtr<nsIURI> dummyNull;
|
||||||
if (fetchService)
|
if (fetchService)
|
||||||
rv = fetchService->FetchMimePart(URL, fullMessageUri.get(),
|
rv = fetchService->FetchMimePart(URL, fullMessageUri.get(),
|
||||||
|
|
@ -771,10 +769,6 @@ nsMessenger::SaveAttachmentToFolder(const nsACString& contentType, const nsACStr
|
||||||
ConvertAndSanitizeFileName(PromiseFlatCString(displayName).get(), unescapedFileName);
|
ConvertAndSanitizeFileName(PromiseFlatCString(displayName).get(), unescapedFileName);
|
||||||
rv = attachmentDestination->Append(unescapedFileName);
|
rv = attachmentDestination->Append(unescapedFileName);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
#ifdef XP_MACOSX
|
|
||||||
rv = attachmentDestination->CreateUnique(nsIFile::NORMAL_FILE_TYPE, ATTACHMENT_PERMISSION);
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
rv = SaveAttachment(attachmentDestination, url, messageUri, contentType, nullptr, nullptr);
|
rv = SaveAttachment(attachmentDestination, url, messageUri, contentType, nullptr, nullptr);
|
||||||
attachmentDestination.swap(*aOutFile);
|
attachmentDestination.swap(*aOutFile);
|
||||||
|
|
|
||||||
|
|
@ -353,11 +353,9 @@ NS_IMETHODIMP nsMsgMailSession::AddMsgWindow(nsIMsgWindow *msgWindow)
|
||||||
NS_IMETHODIMP nsMsgMailSession::RemoveMsgWindow(nsIMsgWindow *msgWindow)
|
NS_IMETHODIMP nsMsgMailSession::RemoveMsgWindow(nsIMsgWindow *msgWindow)
|
||||||
{
|
{
|
||||||
mWindows.RemoveObject(msgWindow);
|
mWindows.RemoveObject(msgWindow);
|
||||||
// Mac keeps a hidden window open so the app doesn't shut down when
|
// For suite, we don't want to disable mailnews when the last mail window
|
||||||
// the last window is closed. So don't shutdown the account manager in that
|
// is closed (other component windows may still be open).
|
||||||
// case. Similarly, for suite, we don't want to disable mailnews when the
|
#if !defined(MOZ_SUITE)
|
||||||
// last mail window is closed.
|
|
||||||
#if !defined(XP_MACOSX) && !defined(MOZ_SUITE)
|
|
||||||
if (!mWindows.Count())
|
if (!mWindows.Count())
|
||||||
{
|
{
|
||||||
nsresult rv;
|
nsresult rv;
|
||||||
|
|
|
||||||
|
|
@ -136,13 +136,11 @@ nsresult nsStatusBarBiffManager::PlayBiffSound(const char *aPrefBranch)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifndef XP_MACOSX
|
|
||||||
// if nothing played, play the default system sound
|
// if nothing played, play the default system sound
|
||||||
if (!customSoundPlayed) {
|
if (!customSoundPlayed) {
|
||||||
rv = mSound->PlayEventSound(nsISound::EVENT_NEW_MAIL_RECEIVED);
|
rv = mSound->PlayEventSound(nsISound::EVENT_NEW_MAIL_RECEIVED);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -611,7 +611,7 @@ nsresult NS_MsgCreatePathStringFromFolderURI(const char *aFolderURI,
|
||||||
? oldPath.FindChar('/', startSlashPos + 1) - 1 : oldPath.Length() - 1;
|
? oldPath.FindChar('/', startSlashPos + 1) - 1 : oldPath.Length() - 1;
|
||||||
if (endSlashPos < 0)
|
if (endSlashPos < 0)
|
||||||
endSlashPos = oldPath.Length();
|
endSlashPos = oldPath.Length();
|
||||||
#if defined(XP_UNIX) || defined(XP_MACOSX)
|
#if defined(XP_UNIX)
|
||||||
bool isLocalUri = aScheme.EqualsLiteral("none") ||
|
bool isLocalUri = aScheme.EqualsLiteral("none") ||
|
||||||
aScheme.EqualsLiteral("pop3") ||
|
aScheme.EqualsLiteral("pop3") ||
|
||||||
aScheme.EqualsLiteral("rss");
|
aScheme.EqualsLiteral("rss");
|
||||||
|
|
@ -636,7 +636,7 @@ nsresult NS_MsgCreatePathStringFromFolderURI(const char *aFolderURI,
|
||||||
CopyUTF16toMUTF7(pathPiece, tmp);
|
CopyUTF16toMUTF7(pathPiece, tmp);
|
||||||
CopyASCIItoUTF16(tmp, pathPiece);
|
CopyASCIItoUTF16(tmp, pathPiece);
|
||||||
}
|
}
|
||||||
#if defined(XP_UNIX) || defined(XP_MACOSX)
|
#if defined(XP_UNIX)
|
||||||
// Don't hash path pieces because local mail folder uri's have already
|
// Don't hash path pieces because local mail folder uri's have already
|
||||||
// been hashed. We're only doing this on the mac to limit potential
|
// been hashed. We're only doing this on the mac to limit potential
|
||||||
// regressions.
|
// regressions.
|
||||||
|
|
|
||||||
|
|
@ -102,9 +102,6 @@
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
#include "nsMessengerWinIntegration.h"
|
#include "nsMessengerWinIntegration.h"
|
||||||
#endif
|
#endif
|
||||||
#ifdef XP_MACOSX
|
|
||||||
#include "nsMessengerOSXIntegration.h"
|
|
||||||
#endif
|
|
||||||
#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
|
#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
|
||||||
#include "nsMessengerUnixIntegration.h"
|
#include "nsMessengerUnixIntegration.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -157,12 +154,6 @@
|
||||||
#include "nsAbOutlookDirectory.h"
|
#include "nsAbOutlookDirectory.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
#include "nsAbOSXDirectory.h"
|
|
||||||
#include "nsAbOSXCard.h"
|
|
||||||
#include "nsAbOSXDirFactory.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// bayesian spam filter includes
|
// bayesian spam filter includes
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
@ -379,9 +370,6 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsMsgShutdownService)
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsMessengerWinIntegration, Init)
|
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsMessengerWinIntegration, Init)
|
||||||
#endif
|
#endif
|
||||||
#ifdef XP_MACOSX
|
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsMessengerOSXIntegration, Init)
|
|
||||||
#endif
|
|
||||||
#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
|
#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsMessengerUnixIntegration, Init)
|
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsMessengerUnixIntegration, Init)
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -439,9 +427,6 @@ NS_DEFINE_NAMED_CID(NS_MSGNOTIFICATIONSERVICE_CID);
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
NS_DEFINE_NAMED_CID(NS_MESSENGERWININTEGRATION_CID);
|
NS_DEFINE_NAMED_CID(NS_MESSENGERWININTEGRATION_CID);
|
||||||
#endif
|
#endif
|
||||||
#ifdef XP_MACOSX
|
|
||||||
NS_DEFINE_NAMED_CID(NS_MESSENGEROSXINTEGRATION_CID);
|
|
||||||
#endif
|
|
||||||
#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
|
#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
|
||||||
NS_DEFINE_NAMED_CID(NS_MESSENGERUNIXINTEGRATION_CID);
|
NS_DEFINE_NAMED_CID(NS_MESSENGERUNIXINTEGRATION_CID);
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -499,12 +484,6 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbView)
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMsgVCardService)
|
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMsgVCardService)
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbLDIFService)
|
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbLDIFService)
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbOSXDirectory)
|
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbOSXCard)
|
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbOSXDirFactory)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
NS_DEFINE_NAMED_CID(NS_ABMANAGER_CID);
|
NS_DEFINE_NAMED_CID(NS_ABMANAGER_CID);
|
||||||
NS_DEFINE_NAMED_CID(NS_ABDIRECTORY_CID);
|
NS_DEFINE_NAMED_CID(NS_ABDIRECTORY_CID);
|
||||||
NS_DEFINE_NAMED_CID(NS_ABMDBDIRECTORY_CID);
|
NS_DEFINE_NAMED_CID(NS_ABMDBDIRECTORY_CID);
|
||||||
|
|
@ -536,11 +515,6 @@ NS_DEFINE_NAMED_CID(NS_ABLDAP_REPLICATIONQUERY_CID);
|
||||||
NS_DEFINE_NAMED_CID(NS_ABLDAP_PROCESSREPLICATIONDATA_CID);
|
NS_DEFINE_NAMED_CID(NS_ABLDAP_PROCESSREPLICATIONDATA_CID);
|
||||||
#endif
|
#endif
|
||||||
NS_DEFINE_NAMED_CID(NS_ABDIRECTORYQUERYPROXY_CID);
|
NS_DEFINE_NAMED_CID(NS_ABDIRECTORYQUERYPROXY_CID);
|
||||||
#ifdef XP_MACOSX
|
|
||||||
NS_DEFINE_NAMED_CID(NS_ABOSXDIRECTORY_CID);
|
|
||||||
NS_DEFINE_NAMED_CID(NS_ABOSXCARD_CID);
|
|
||||||
NS_DEFINE_NAMED_CID(NS_ABOSXDIRFACTORY_CID);
|
|
||||||
#endif
|
|
||||||
NS_DEFINE_NAMED_CID(NS_ABVIEW_CID);
|
NS_DEFINE_NAMED_CID(NS_ABVIEW_CID);
|
||||||
NS_DEFINE_NAMED_CID(NS_MSGVCARDSERVICE_CID);
|
NS_DEFINE_NAMED_CID(NS_MSGVCARDSERVICE_CID);
|
||||||
NS_DEFINE_NAMED_CID(NS_ABLDIFSERVICE_CID);
|
NS_DEFINE_NAMED_CID(NS_ABLDIFSERVICE_CID);
|
||||||
|
|
@ -923,9 +897,6 @@ const mozilla::Module::CIDEntry kMailNewsCIDs[] = {
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
{ &kNS_MESSENGERWININTEGRATION_CID, false, NULL, nsMessengerWinIntegrationConstructor},
|
{ &kNS_MESSENGERWININTEGRATION_CID, false, NULL, nsMessengerWinIntegrationConstructor},
|
||||||
#endif
|
#endif
|
||||||
#ifdef XP_MACOSX
|
|
||||||
{ &kNS_MESSENGEROSXINTEGRATION_CID, false, NULL, nsMessengerOSXIntegrationConstructor},
|
|
||||||
#endif
|
|
||||||
#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
|
#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
|
||||||
{ &kNS_MESSENGERUNIXINTEGRATION_CID, false, NULL, nsMessengerUnixIntegrationConstructor},
|
{ &kNS_MESSENGERUNIXINTEGRATION_CID, false, NULL, nsMessengerUnixIntegrationConstructor},
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -968,11 +939,6 @@ const mozilla::Module::CIDEntry kMailNewsCIDs[] = {
|
||||||
{ &kNS_ABLDAPDIRFACTORY_CID, false, NULL, nsAbLDAPDirFactoryConstructor },
|
{ &kNS_ABLDAPDIRFACTORY_CID, false, NULL, nsAbLDAPDirFactoryConstructor },
|
||||||
#endif
|
#endif
|
||||||
{ &kNS_ABDIRECTORYQUERYPROXY_CID, false, NULL, nsAbDirectoryQueryProxyConstructor },
|
{ &kNS_ABDIRECTORYQUERYPROXY_CID, false, NULL, nsAbDirectoryQueryProxyConstructor },
|
||||||
#ifdef XP_MACOSX
|
|
||||||
{ &kNS_ABOSXDIRECTORY_CID, false, NULL, nsAbOSXDirectoryConstructor },
|
|
||||||
{ &kNS_ABOSXCARD_CID, false, NULL, nsAbOSXCardConstructor },
|
|
||||||
{ &kNS_ABOSXDIRFACTORY_CID, false, NULL, nsAbOSXDirFactoryConstructor },
|
|
||||||
#endif
|
|
||||||
{ &kNS_ABVIEW_CID, false, NULL, nsAbViewConstructor },
|
{ &kNS_ABVIEW_CID, false, NULL, nsAbViewConstructor },
|
||||||
{ &kNS_MSGVCARDSERVICE_CID, false, NULL, nsMsgVCardServiceConstructor },
|
{ &kNS_MSGVCARDSERVICE_CID, false, NULL, nsMsgVCardServiceConstructor },
|
||||||
{ &kNS_ABLDIFSERVICE_CID, false, NULL, nsAbLDIFServiceConstructor },
|
{ &kNS_ABLDIFSERVICE_CID, false, NULL, nsAbLDIFServiceConstructor },
|
||||||
|
|
@ -1141,9 +1107,6 @@ const mozilla::Module::ContractIDEntry kMailNewsContracts[] = {
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
{ NS_MESSENGEROSINTEGRATION_CONTRACTID, &kNS_MESSENGERWININTEGRATION_CID },
|
{ NS_MESSENGEROSINTEGRATION_CONTRACTID, &kNS_MESSENGERWININTEGRATION_CID },
|
||||||
#endif
|
#endif
|
||||||
#ifdef XP_MACOSX
|
|
||||||
{ NS_MESSENGEROSINTEGRATION_CONTRACTID, &kNS_MESSENGEROSXINTEGRATION_CID },
|
|
||||||
#endif
|
|
||||||
#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
|
#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
|
||||||
{ NS_MESSENGEROSINTEGRATION_CONTRACTID, &kNS_MESSENGERUNIXINTEGRATION_CID },
|
{ NS_MESSENGEROSINTEGRATION_CONTRACTID, &kNS_MESSENGERUNIXINTEGRATION_CID },
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -1190,11 +1153,6 @@ const mozilla::Module::ContractIDEntry kMailNewsContracts[] = {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
{ NS_ABDIRECTORYQUERYPROXY_CONTRACTID, &kNS_ABDIRECTORYQUERYPROXY_CID },
|
{ NS_ABDIRECTORYQUERYPROXY_CONTRACTID, &kNS_ABDIRECTORYQUERYPROXY_CID },
|
||||||
#ifdef XP_MACOSX
|
|
||||||
{ NS_ABOSXDIRECTORY_CONTRACTID, &kNS_ABOSXDIRECTORY_CID },
|
|
||||||
{ NS_ABOSXCARD_CONTRACTID, &kNS_ABOSXCARD_CID },
|
|
||||||
{ NS_ABOSXDIRFACTORY_CONTRACTID, &kNS_ABOSXDIRFACTORY_CID },
|
|
||||||
#endif
|
|
||||||
{ NS_ABVIEW_CONTRACTID, &kNS_ABVIEW_CID },
|
{ NS_ABVIEW_CONTRACTID, &kNS_ABVIEW_CID },
|
||||||
{ NS_MSGVCARDSERVICE_CONTRACTID, &kNS_MSGVCARDSERVICE_CID },
|
{ NS_MSGVCARDSERVICE_CONTRACTID, &kNS_MSGVCARDSERVICE_CID },
|
||||||
{ NS_ABLDIFSERVICE_CONTRACTID, &kNS_ABLDIFSERVICE_CID },
|
{ NS_ABLDIFSERVICE_CONTRACTID, &kNS_ABLDIFSERVICE_CID },
|
||||||
|
|
@ -1343,10 +1301,6 @@ static const mozilla::Module::CategoryEntry kMailNewsCategories[] = {
|
||||||
{ XPCOM_DIRECTORY_PROVIDER_CATEGORY, "mail-directory-provider", NS_MAILDIRPROVIDER_CONTRACTID },
|
{ XPCOM_DIRECTORY_PROVIDER_CATEGORY, "mail-directory-provider", NS_MAILDIRPROVIDER_CONTRACTID },
|
||||||
{ "content-policy", NS_MSGCONTENTPOLICY_CONTRACTID, NS_MSGCONTENTPOLICY_CONTRACTID },
|
{ "content-policy", NS_MSGCONTENTPOLICY_CONTRACTID, NS_MSGCONTENTPOLICY_CONTRACTID },
|
||||||
MAILNEWSDLF_CATEGORIES
|
MAILNEWSDLF_CATEGORIES
|
||||||
#ifdef XP_MACOSX
|
|
||||||
{ "app-startup", NS_MESSENGEROSINTEGRATION_CONTRACTID, "service," NS_MESSENGEROSINTEGRATION_CONTRACTID}
|
|
||||||
,
|
|
||||||
#endif
|
|
||||||
// Address Book Entries
|
// Address Book Entries
|
||||||
{ "command-line-handler", "m-addressbook", NS_ABMANAGERSTARTUPHANDLER_CONTRACTID },
|
{ "command-line-handler", "m-addressbook", NS_ABMANAGERSTARTUPHANDLER_CONTRACTID },
|
||||||
// Bayesian Filter Entries
|
// Bayesian Filter Entries
|
||||||
|
|
|
||||||
|
|
@ -36,77 +36,6 @@
|
||||||
#include "mozilla/mailnews/MimeEncoder.h"
|
#include "mozilla/mailnews/MimeEncoder.h"
|
||||||
#include "nsIPrincipal.h"
|
#include "nsIPrincipal.h"
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
|
||||||
// Mac Specific Attachment Handling for AppleDouble Encoded Files
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
|
|
||||||
#define AD_WORKING_BUFF_SIZE FILE_IO_BUFFER_SIZE
|
|
||||||
|
|
||||||
extern void MacGetFileType(nsIFile *fs, bool *useDefault, char **type, char **encoding);
|
|
||||||
|
|
||||||
#include "nsILocalFileMac.h"
|
|
||||||
|
|
||||||
/* static */
|
|
||||||
nsresult nsSimpleZipper::Zip(nsIFile *aInputFile, nsIFile *aOutputFile)
|
|
||||||
{
|
|
||||||
// create zipwriter object
|
|
||||||
nsresult rv;
|
|
||||||
nsCOMPtr<nsIZipWriter> zipWriter = do_CreateInstance("@mozilla.org/zipwriter;1", &rv);
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
rv = zipWriter->Open(aOutputFile, PR_RDWR | PR_CREATE_FILE | PR_TRUNCATE);
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
rv = AddToZip(zipWriter, aInputFile, EmptyCString());
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
// we're done.
|
|
||||||
zipWriter->Close();
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* static */
|
|
||||||
nsresult nsSimpleZipper::AddToZip(nsIZipWriter *aZipWriter,
|
|
||||||
nsIFile *aFile,
|
|
||||||
const nsACString &aPath)
|
|
||||||
{
|
|
||||||
// find out the path this file/dir should have in the zip
|
|
||||||
nsCString leafName;
|
|
||||||
aFile->GetNativeLeafName(leafName);
|
|
||||||
nsCString currentPath(aPath);
|
|
||||||
currentPath += leafName;
|
|
||||||
|
|
||||||
bool isDirectory;
|
|
||||||
aFile->IsDirectory(&isDirectory);
|
|
||||||
// append slash for a directory entry
|
|
||||||
if (isDirectory)
|
|
||||||
currentPath.Append('/');
|
|
||||||
|
|
||||||
// add the file or directory entry to the zip
|
|
||||||
nsresult rv = aZipWriter->AddEntryFile(currentPath, nsIZipWriter::COMPRESSION_DEFAULT, aFile, false);
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
// if it's a directory, add all its contents too
|
|
||||||
if (isDirectory) {
|
|
||||||
nsCOMPtr<nsISimpleEnumerator> e;
|
|
||||||
nsresult rv = aFile->GetDirectoryEntries(getter_AddRefs(e));
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
nsCOMPtr<nsIDirectoryEnumerator> dirEnumerator = do_QueryInterface(e, &rv);
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
nsCOMPtr<nsIFile> currentFile;
|
|
||||||
while (NS_SUCCEEDED(dirEnumerator->GetNextFile(getter_AddRefs(currentFile))) && currentFile) {
|
|
||||||
rv = AddToZip(aZipWriter, currentFile, currentPath);
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
#endif // XP_MACOSX
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Class implementation...
|
// Class implementation...
|
||||||
//
|
//
|
||||||
|
|
@ -239,12 +168,7 @@ NS_IMETHODIMP nsMsgAttachmentHandler::GetAlreadyEncoded(bool* aAlreadyEncoded)
|
||||||
void
|
void
|
||||||
nsMsgAttachmentHandler::CleanupTempFile()
|
nsMsgAttachmentHandler::CleanupTempFile()
|
||||||
{
|
{
|
||||||
#ifdef XP_MACOSX
|
/** Mac Stub **/
|
||||||
if (mEncodedWorkingFile) {
|
|
||||||
mEncodedWorkingFile->Remove(false);
|
|
||||||
mEncodedWorkingFile = nullptr;
|
|
||||||
}
|
|
||||||
#endif // XP_MACOSX
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -549,13 +473,8 @@ FetcherURLDoneCallback(nsresult aStatus,
|
||||||
ma->m_size = totalSize;
|
ma->m_size = totalSize;
|
||||||
if (!aContentType.IsEmpty())
|
if (!aContentType.IsEmpty())
|
||||||
{
|
{
|
||||||
#ifdef XP_MACOSX
|
// can't send appledouble on non-macs
|
||||||
//Do not change the type if we are dealing with an encoded (e.g., appledouble or zip) file
|
|
||||||
if (!ma->mEncodedWorkingFile)
|
|
||||||
#else
|
|
||||||
// can't send appledouble on non-macs
|
|
||||||
if (!aContentType.EqualsLiteral("multipart/appledouble"))
|
if (!aContentType.EqualsLiteral("multipart/appledouble"))
|
||||||
#endif
|
|
||||||
ma->m_type = aContentType;
|
ma->m_type = aContentType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -698,15 +617,6 @@ done:
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
bool nsMsgAttachmentHandler::HasResourceFork(FSRef *fsRef)
|
|
||||||
{
|
|
||||||
FSCatalogInfo catalogInfo;
|
|
||||||
OSErr err = FSGetCatalogInfo(fsRef, kFSCatInfoDataSizes + kFSCatInfoRsrcSizes, &catalogInfo, nullptr, nullptr, nullptr);
|
|
||||||
return (err == noErr && catalogInfo.rsrcLogicalSize != 0);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
nsMsgAttachmentHandler::SnarfAttachment(nsMsgCompFields *compFields)
|
nsMsgAttachmentHandler::SnarfAttachment(nsMsgCompFields *compFields)
|
||||||
{
|
{
|
||||||
|
|
@ -747,33 +657,6 @@ nsMsgAttachmentHandler::SnarfAttachment(nsMsgCompFields *compFields)
|
||||||
nsCString sourceURISpec;
|
nsCString sourceURISpec;
|
||||||
rv = mURL->GetSpec(sourceURISpec);
|
rv = mURL->GetSpec(sourceURISpec);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
#ifdef XP_MACOSX
|
|
||||||
if (!m_bogus_attachment && StringBeginsWith(sourceURISpec, NS_LITERAL_CSTRING("file://")))
|
|
||||||
{
|
|
||||||
// Unescape the path (i.e. un-URLify it) before making a FSSpec
|
|
||||||
nsAutoCString filePath;
|
|
||||||
filePath.Adopt(nsMsgGetLocalFileFromURL(sourceURISpec.get()));
|
|
||||||
nsAutoCString unescapedFilePath;
|
|
||||||
MsgUnescapeString(filePath, 0, unescapedFilePath);
|
|
||||||
|
|
||||||
nsCOMPtr<nsIFile> sourceFile;
|
|
||||||
NS_NewNativeLocalFile(unescapedFilePath, true, getter_AddRefs(sourceFile));
|
|
||||||
if (!sourceFile)
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
|
|
||||||
// check if it is a bundle. if it is, we'll zip it.
|
|
||||||
// if not, we'll apple encode it (applesingle or appledouble)
|
|
||||||
nsCOMPtr<nsILocalFileMac> macFile(do_QueryInterface(sourceFile));
|
|
||||||
bool isPackage;
|
|
||||||
macFile->IsPackage(&isPackage);
|
|
||||||
if (isPackage)
|
|
||||||
rv = ConvertToZipFile(macFile);
|
|
||||||
else
|
|
||||||
rv = ConvertToAppleEncoding(sourceURISpec, unescapedFilePath, macFile);
|
|
||||||
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
}
|
|
||||||
#endif /* XP_MACOSX */
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Ok, here we are, we need to fire the URL off and get the data
|
// Ok, here we are, we need to fire the URL off and get the data
|
||||||
|
|
@ -793,236 +676,6 @@ nsMsgAttachmentHandler::SnarfAttachment(nsMsgCompFields *compFields)
|
||||||
return fetcher->FireURLRequest(mURL, mTmpFile, mOutFile, FetcherURLDoneCallback, this);
|
return fetcher->FireURLRequest(mURL, mTmpFile, mOutFile, FetcherURLDoneCallback, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
nsresult
|
|
||||||
nsMsgAttachmentHandler::ConvertToZipFile(nsILocalFileMac *aSourceFile)
|
|
||||||
{
|
|
||||||
// append ".zip" to the real file name
|
|
||||||
nsAutoCString zippedName;
|
|
||||||
nsresult rv = aSourceFile->GetNativeLeafName(zippedName);
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
zippedName.AppendLiteral(".zip");
|
|
||||||
|
|
||||||
// create a temporary file that we'll work on
|
|
||||||
nsCOMPtr <nsIFile> tmpFile;
|
|
||||||
rv = nsMsgCreateTempFile(zippedName.get(), getter_AddRefs(tmpFile));
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
mEncodedWorkingFile = do_QueryInterface(tmpFile);
|
|
||||||
|
|
||||||
// point our URL at the zipped temp file
|
|
||||||
NS_NewFileURI(getter_AddRefs(mURL), mEncodedWorkingFile);
|
|
||||||
|
|
||||||
// zip it!
|
|
||||||
rv = nsSimpleZipper::Zip(aSourceFile, mEncodedWorkingFile);
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
// set some metadata for this attachment, that will affect the MIME headers.
|
|
||||||
m_type = APPLICATION_ZIP;
|
|
||||||
m_realName = zippedName.get();
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsMsgAttachmentHandler::ConvertToAppleEncoding(const nsCString &aFileURI,
|
|
||||||
const nsCString &aFilePath,
|
|
||||||
nsILocalFileMac *aSourceFile)
|
|
||||||
{
|
|
||||||
// convert the apple file to AppleDouble first, and then patch the
|
|
||||||
// address in the url.
|
|
||||||
|
|
||||||
//We need to retrieve the file type and creator...
|
|
||||||
|
|
||||||
char fileInfo[32];
|
|
||||||
OSType type, creator;
|
|
||||||
|
|
||||||
nsresult rv = aSourceFile->GetFileType(&type);
|
|
||||||
if (NS_FAILED(rv))
|
|
||||||
return rv;
|
|
||||||
PR_snprintf(fileInfo, sizeof(fileInfo), "%X", type);
|
|
||||||
m_xMacType = fileInfo;
|
|
||||||
|
|
||||||
rv = aSourceFile->GetFileCreator(&creator);
|
|
||||||
if (NS_FAILED(rv))
|
|
||||||
return rv;
|
|
||||||
PR_snprintf(fileInfo, sizeof(fileInfo), "%X", creator);
|
|
||||||
m_xMacCreator = fileInfo;
|
|
||||||
|
|
||||||
FSRef fsRef;
|
|
||||||
aSourceFile->GetFSRef(&fsRef);
|
|
||||||
bool sendResourceFork = HasResourceFork(&fsRef);
|
|
||||||
|
|
||||||
// if we have a resource fork, check the filename extension, maybe we don't need the resource fork!
|
|
||||||
if (sendResourceFork)
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsIURL> fileUrl(do_CreateInstance(NS_STANDARDURL_CONTRACTID));
|
|
||||||
if (fileUrl)
|
|
||||||
{
|
|
||||||
rv = fileUrl->SetSpec(aFileURI);
|
|
||||||
if (NS_SUCCEEDED(rv))
|
|
||||||
{
|
|
||||||
nsAutoCString ext;
|
|
||||||
rv = fileUrl->GetFileExtension(ext);
|
|
||||||
if (NS_SUCCEEDED(rv) && !ext.IsEmpty())
|
|
||||||
{
|
|
||||||
sendResourceFork =
|
|
||||||
PL_strcasecmp(ext.get(), "TXT") &&
|
|
||||||
PL_strcasecmp(ext.get(), "JPG") &&
|
|
||||||
PL_strcasecmp(ext.get(), "GIF") &&
|
|
||||||
PL_strcasecmp(ext.get(), "TIF") &&
|
|
||||||
PL_strcasecmp(ext.get(), "HTM") &&
|
|
||||||
PL_strcasecmp(ext.get(), "HTML") &&
|
|
||||||
PL_strcasecmp(ext.get(), "ART") &&
|
|
||||||
PL_strcasecmp(ext.get(), "XUL") &&
|
|
||||||
PL_strcasecmp(ext.get(), "XML") &&
|
|
||||||
PL_strcasecmp(ext.get(), "CSS") &&
|
|
||||||
PL_strcasecmp(ext.get(), "JS");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Only use appledouble if we aren't uuencoding.
|
|
||||||
if( sendResourceFork )
|
|
||||||
{
|
|
||||||
char *separator;
|
|
||||||
|
|
||||||
separator = mime_make_separator("ad");
|
|
||||||
if (!separator)
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
|
|
||||||
nsCOMPtr <nsIFile> tmpFile;
|
|
||||||
nsresult rv = nsMsgCreateTempFile("appledouble", getter_AddRefs(tmpFile));
|
|
||||||
if (NS_SUCCEEDED(rv))
|
|
||||||
mEncodedWorkingFile = do_QueryInterface(tmpFile);
|
|
||||||
if (!mEncodedWorkingFile)
|
|
||||||
{
|
|
||||||
PR_FREEIF(separator);
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// RICHIE_MAC - ok, here's the deal, we have a file that we need
|
|
||||||
// to encode in appledouble encoding for the resource fork and put that
|
|
||||||
// into the mEncodedWorkingFile location. Then, we need to patch the new file
|
|
||||||
// spec into the array and send this as part of the 2 part appledouble/mime
|
|
||||||
// encoded mime part.
|
|
||||||
//
|
|
||||||
AppleDoubleEncodeObject *obj = new (AppleDoubleEncodeObject);
|
|
||||||
if (obj == NULL)
|
|
||||||
{
|
|
||||||
mEncodedWorkingFile = nullptr;
|
|
||||||
PR_FREEIF(separator);
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
}
|
|
||||||
|
|
||||||
rv = MsgGetFileStream(mEncodedWorkingFile, getter_AddRefs(obj->fileStream));
|
|
||||||
if (NS_FAILED(rv) || !obj->fileStream)
|
|
||||||
{
|
|
||||||
PR_FREEIF(separator);
|
|
||||||
delete obj;
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *working_buff = (char *) PR_Malloc(AD_WORKING_BUFF_SIZE);
|
|
||||||
if (!working_buff)
|
|
||||||
{
|
|
||||||
PR_FREEIF(separator);
|
|
||||||
delete obj;
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
}
|
|
||||||
|
|
||||||
obj->buff = working_buff;
|
|
||||||
obj->s_buff = AD_WORKING_BUFF_SIZE;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Setup all the need information on the apple double encoder.
|
|
||||||
//
|
|
||||||
ap_encode_init(&(obj->ap_encode_obj), aFilePath.get(), separator);
|
|
||||||
|
|
||||||
int32_t count;
|
|
||||||
|
|
||||||
OSErr status = noErr;
|
|
||||||
m_size = 0;
|
|
||||||
while (status == noErr)
|
|
||||||
{
|
|
||||||
status = ap_encode_next(&(obj->ap_encode_obj), obj->buff, obj->s_buff, &count);
|
|
||||||
if (status == noErr || status == errDone)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// we got the encode data, so call the next stream to write it to the disk.
|
|
||||||
//
|
|
||||||
uint32_t bytesWritten;
|
|
||||||
obj->fileStream->Write(obj->buff, count, &bytesWritten);
|
|
||||||
if (bytesWritten != (uint32_t) count)
|
|
||||||
status = errFileWrite;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ap_encode_end(&(obj->ap_encode_obj), (status >= 0)); // if this is true, ok, false abort
|
|
||||||
if (obj->fileStream)
|
|
||||||
obj->fileStream->Close();
|
|
||||||
|
|
||||||
PR_FREEIF(obj->buff); /* free the working buff. */
|
|
||||||
PR_FREEIF(obj);
|
|
||||||
|
|
||||||
nsCOMPtr <nsIURI> fileURI;
|
|
||||||
NS_NewFileURI(getter_AddRefs(fileURI), mEncodedWorkingFile);
|
|
||||||
|
|
||||||
nsCOMPtr<nsIFileURL> theFileURL = do_QueryInterface(fileURI, &rv);
|
|
||||||
NS_ENSURE_SUCCESS(rv,rv);
|
|
||||||
|
|
||||||
nsCString newURLSpec;
|
|
||||||
rv = fileURI->GetSpec(newURLSpec);
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
if (newURLSpec.IsEmpty())
|
|
||||||
{
|
|
||||||
PR_FREEIF(separator);
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (NS_FAILED(nsMsgNewURL(getter_AddRefs(mURL), newURLSpec.get())))
|
|
||||||
{
|
|
||||||
PR_FREEIF(separator);
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now after conversion, also patch the types.
|
|
||||||
char tmp[128];
|
|
||||||
PR_snprintf(tmp, sizeof(tmp), MULTIPART_APPLEDOUBLE ";\r\n boundary=\"%s\"", separator);
|
|
||||||
PR_FREEIF(separator);
|
|
||||||
m_type = tmp;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ( sendResourceFork )
|
|
||||||
{
|
|
||||||
// For now, just do the encoding, but in the old world we would ask the
|
|
||||||
// user about doing this conversion
|
|
||||||
printf("...we could ask the user about this conversion, but for now, nahh..\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
bool useDefault;
|
|
||||||
char *macType, *macEncoding;
|
|
||||||
if (m_type.IsEmpty() || m_type.LowerCaseEqualsLiteral(TEXT_PLAIN))
|
|
||||||
{
|
|
||||||
# define TEXT_TYPE 0x54455854 /* the characters 'T' 'E' 'X' 'T' */
|
|
||||||
# define text_TYPE 0x74657874 /* the characters 't' 'e' 'x' 't' */
|
|
||||||
|
|
||||||
if (type != TEXT_TYPE && type != text_TYPE)
|
|
||||||
{
|
|
||||||
MacGetFileType(aSourceFile, &useDefault, &macType, &macEncoding);
|
|
||||||
m_type = macType;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// don't bother to set the types if we failed in getting the file info.
|
|
||||||
}
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
#endif // XP_MACOSX
|
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
nsMsgAttachmentHandler::LoadDataFromFile(nsIFile *file, nsString &sigData, bool charsetConversion)
|
nsMsgAttachmentHandler::LoadDataFromFile(nsIFile *file, nsString &sigData, bool charsetConversion)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -16,42 +16,6 @@
|
||||||
#include "nsAutoPtr.h"
|
#include "nsAutoPtr.h"
|
||||||
#include "nsIMsgAttachmentHandler.h"
|
#include "nsIMsgAttachmentHandler.h"
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
|
|
||||||
#include "nsMsgAppleDouble.h"
|
|
||||||
#include "nsILocalFileMac.h"
|
|
||||||
|
|
||||||
class AppleDoubleEncodeObject
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
appledouble_encode_object ap_encode_obj;
|
|
||||||
char *buff; // the working buff
|
|
||||||
int32_t s_buff; // the working buff size
|
|
||||||
nsCOMPtr <nsIOutputStream> fileStream; // file to hold the encoding
|
|
||||||
};
|
|
||||||
|
|
||||||
class nsILocalFileMac;
|
|
||||||
class nsIZipWriter;
|
|
||||||
|
|
||||||
/* Simple utility class that will synchronously zip any file
|
|
||||||
(or folder hierarchy) you give it. */
|
|
||||||
class nsSimpleZipper
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
// Synchronously zips the input file/folder and writes all
|
|
||||||
// data to the output file.
|
|
||||||
static nsresult Zip(nsIFile *aInputFile, nsIFile *aOutputFile);
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
// Recursively adds the file or folder to aZipWriter.
|
|
||||||
static nsresult AddToZip(nsIZipWriter *aZipWriter,
|
|
||||||
nsIFile *aFile,
|
|
||||||
const nsACString &aPath);
|
|
||||||
};
|
|
||||||
#endif // XP_MACOSX
|
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
namespace mailnews {
|
namespace mailnews {
|
||||||
class MimeEncoder;
|
class MimeEncoder;
|
||||||
|
|
@ -95,14 +59,6 @@ private:
|
||||||
bool UseUUEncode_p(void);
|
bool UseUUEncode_p(void);
|
||||||
void AnalyzeDataChunk (const char *chunk, int32_t chunkSize);
|
void AnalyzeDataChunk (const char *chunk, int32_t chunkSize);
|
||||||
nsresult LoadDataFromFile(nsIFile *file, nsString &sigData, bool charsetConversion); //A similar function already exist in nsMsgCompose!
|
nsresult LoadDataFromFile(nsIFile *file, nsString &sigData, bool charsetConversion); //A similar function already exist in nsMsgCompose!
|
||||||
#ifdef XP_MACOSX
|
|
||||||
nsresult ConvertToAppleEncoding(const nsCString &aFileSpecURI,
|
|
||||||
const nsCString &aFilePath,
|
|
||||||
nsILocalFileMac *aSourceFile);
|
|
||||||
// zips this attachment and does the work to make this attachment handler handle it properly.
|
|
||||||
nsresult ConvertToZipFile(nsILocalFileMac *aSourceFile);
|
|
||||||
bool HasResourceFork(FSRef *fsRef);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//
|
//
|
||||||
public:
|
public:
|
||||||
|
|
@ -113,12 +69,6 @@ public:
|
||||||
nsMsgCompFields *mCompFields; // Message composition fields for the sender
|
nsMsgCompFields *mCompFields; // Message composition fields for the sender
|
||||||
bool m_bogus_attachment; // This is to catch problem children...
|
bool m_bogus_attachment; // This is to catch problem children...
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// if we need to encode this file into for example an appledouble, or zip file,
|
|
||||||
// this file is our working file. currently only needed on mac.
|
|
||||||
nsCOMPtr<nsIFile> mEncodedWorkingFile;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
nsCString m_xMacType; // Mac file type
|
nsCString m_xMacType; // Mac file type
|
||||||
nsCString m_xMacCreator; // Mac file creator
|
nsCString m_xMacCreator; // Mac file creator
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2088,9 +2088,7 @@ nsMsgComposeAndSend::AddCompFieldLocalAttachments()
|
||||||
if (NS_SUCCEEDED(rv) && !fileExt.IsEmpty()) {
|
if (NS_SUCCEEDED(rv) && !fileExt.IsEmpty()) {
|
||||||
nsAutoCString type;
|
nsAutoCString type;
|
||||||
mimeFinder->GetTypeFromExtension(fileExt, type);
|
mimeFinder->GetTypeFromExtension(fileExt, type);
|
||||||
#ifndef XP_MACOSX
|
|
||||||
if (!type.Equals("multipart/appledouble")) // can't do apple double on non-macs
|
if (!type.Equals("multipart/appledouble")) // can't do apple double on non-macs
|
||||||
#endif
|
|
||||||
m_attachments[newLoc]->m_type = type;
|
m_attachments[newLoc]->m_type = type;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2105,9 +2103,7 @@ nsMsgComposeAndSend::AddCompFieldLocalAttachments()
|
||||||
if (NS_SUCCEEDED(rv) && !fileExt.IsEmpty()) {
|
if (NS_SUCCEEDED(rv) && !fileExt.IsEmpty()) {
|
||||||
nsAutoCString type;
|
nsAutoCString type;
|
||||||
mimeFinder->GetTypeFromExtension(fileExt, type);
|
mimeFinder->GetTypeFromExtension(fileExt, type);
|
||||||
#ifndef XP_MACOSX
|
|
||||||
if (!type.Equals("multipart/appledouble")) // can't do apple double on non-macs
|
if (!type.Equals("multipart/appledouble")) // can't do apple double on non-macs
|
||||||
#endif
|
|
||||||
m_attachments[newLoc]->m_type = type;
|
m_attachments[newLoc]->m_type = type;
|
||||||
// rtf and vcs files may look like text to sniffers,
|
// rtf and vcs files may look like text to sniffers,
|
||||||
// but they're not human readable.
|
// but they're not human readable.
|
||||||
|
|
|
||||||
|
|
@ -724,27 +724,8 @@ bool nsIMAPBodypartLeaf::ShouldFetchInline(nsIMAPBodyShell *aShell)
|
||||||
|
|
||||||
return false; // we can leave it on the server
|
return false; // we can leave it on the server
|
||||||
}
|
}
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// If it is either applesingle, or a resource fork for appledouble
|
|
||||||
if (!PL_strcasecmp(m_contentType, "application/applefile"))
|
|
||||||
{
|
|
||||||
// if it is appledouble
|
|
||||||
if (m_parentPart->GetType() == IMAP_BODY_MULTIPART &&
|
|
||||||
!PL_strcasecmp(m_parentPart->GetBodySubType(), "appledouble"))
|
|
||||||
{
|
|
||||||
// This is the resource fork of a multipart/appledouble.
|
|
||||||
// We inherit the inline attributes of the parent,
|
|
||||||
// which was derived from its OTHER child. (The data fork.)
|
|
||||||
return m_parentPart->ShouldFetchInline(aShell);
|
|
||||||
}
|
|
||||||
else // it is applesingle
|
|
||||||
{
|
|
||||||
return false; // we can leave it on the server
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif // XP_MACOSX
|
|
||||||
|
|
||||||
// Leave out parts with type application/*
|
// Leave out parts with type application/(*)
|
||||||
if (!PL_strcasecmp(m_bodyType, "APPLICATION") && // If it is of type "application"
|
if (!PL_strcasecmp(m_bodyType, "APPLICATION") && // If it is of type "application"
|
||||||
PL_strncasecmp(m_bodySubType, "x-pkcs7", 7) // and it's not a signature (signatures are inline)
|
PL_strncasecmp(m_bodySubType, "x-pkcs7", 7) // and it's not a signature (signatures are inline)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
||||||
|
|
||||||
SOURCES += [
|
|
||||||
'nsAppleMailImport.cpp',
|
|
||||||
]
|
|
||||||
|
|
||||||
SOURCES += [
|
|
||||||
'nsEmlxHelperUtils.mm',
|
|
||||||
]
|
|
||||||
|
|
||||||
FINAL_LIBRARY = 'import'
|
|
||||||
|
|
||||||
|
|
@ -1,623 +0,0 @@
|
||||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
||||||
|
|
||||||
#include "nsStringGlue.h"
|
|
||||||
#include "nsCOMPtr.h"
|
|
||||||
#include "nsISupportsPrimitives.h"
|
|
||||||
#include "nsIImportService.h"
|
|
||||||
#include "nsIImportMailboxDescriptor.h"
|
|
||||||
#include "nsIImportGeneric.h"
|
|
||||||
#include "nsIFile.h"
|
|
||||||
#include "nsIStringBundle.h"
|
|
||||||
#include "nsIMsgFolder.h"
|
|
||||||
#include "nsIMsgHdr.h"
|
|
||||||
#include "nsIMsgPluggableStore.h"
|
|
||||||
#include "nsIMutableArray.h"
|
|
||||||
#include "nsNetUtil.h"
|
|
||||||
#include "nsMsgUtils.h"
|
|
||||||
#include "mozilla/Services.h"
|
|
||||||
|
|
||||||
#include "nsEmlxHelperUtils.h"
|
|
||||||
#include "nsAppleMailImport.h"
|
|
||||||
#include "nsIOutputStream.h"
|
|
||||||
|
|
||||||
PRLogModuleInfo *APPLEMAILLOGMODULE = nullptr;
|
|
||||||
|
|
||||||
// some hard-coded strings
|
|
||||||
#define DEFAULT_MAIL_FOLDER "~/Library/Mail/"
|
|
||||||
#define POP_MBOX_SUFFIX ".mbox"
|
|
||||||
#define IMAP_MBOX_SUFFIX ".imapmbox"
|
|
||||||
|
|
||||||
// stringbundle URI
|
|
||||||
#define APPLEMAIL_MSGS_URL "chrome://messenger/locale/appleMailImportMsgs.properties"
|
|
||||||
|
|
||||||
// magic constants
|
|
||||||
#define kAccountMailboxID 1234
|
|
||||||
|
|
||||||
nsAppleMailImportModule::nsAppleMailImportModule()
|
|
||||||
{
|
|
||||||
// Init logging module.
|
|
||||||
if (!APPLEMAILLOGMODULE)
|
|
||||||
APPLEMAILLOGMODULE = PR_NewLogModule("APPLEMAILIMPORTLOG");
|
|
||||||
|
|
||||||
IMPORT_LOG0("nsAppleMailImportModule Created");
|
|
||||||
|
|
||||||
nsCOMPtr<nsIStringBundleService> bundleService =
|
|
||||||
mozilla::services::GetStringBundleService();
|
|
||||||
if (bundleService)
|
|
||||||
bundleService->CreateBundle(APPLEMAIL_MSGS_URL, getter_AddRefs(mBundle));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nsAppleMailImportModule::~nsAppleMailImportModule()
|
|
||||||
{
|
|
||||||
IMPORT_LOG0("nsAppleMailImportModule Deleted");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
NS_IMPL_ISUPPORTS(nsAppleMailImportModule, nsIImportModule)
|
|
||||||
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsAppleMailImportModule::GetName(char16_t **aName)
|
|
||||||
{
|
|
||||||
return mBundle ?
|
|
||||||
mBundle->GetStringFromName(u"ApplemailImportName", aName) : NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsAppleMailImportModule::GetDescription(char16_t **aName)
|
|
||||||
{
|
|
||||||
return mBundle ?
|
|
||||||
mBundle->GetStringFromName(u"ApplemailImportDescription", aName) : NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsAppleMailImportModule::GetSupports(char **aSupports)
|
|
||||||
{
|
|
||||||
NS_ENSURE_ARG_POINTER(aSupports);
|
|
||||||
*aSupports = strdup(NS_IMPORT_MAIL_STR);
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsAppleMailImportModule::GetSupportsUpgrade(bool *aUpgrade)
|
|
||||||
{
|
|
||||||
NS_ENSURE_ARG_POINTER(aUpgrade);
|
|
||||||
*aUpgrade = false;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsAppleMailImportModule::GetImportInterface(const char *aImportType, nsISupports **aInterface)
|
|
||||||
{
|
|
||||||
NS_ENSURE_ARG_POINTER(aImportType);
|
|
||||||
NS_ENSURE_ARG_POINTER(aInterface);
|
|
||||||
*aInterface = nullptr;
|
|
||||||
nsresult rv = NS_ERROR_NOT_AVAILABLE;
|
|
||||||
|
|
||||||
if (!strcmp(aImportType, "mail")) {
|
|
||||||
nsCOMPtr<nsIImportMail> mail(do_CreateInstance(NS_APPLEMAILIMPL_CONTRACTID, &rv));
|
|
||||||
if (NS_SUCCEEDED(rv)) {
|
|
||||||
nsCOMPtr<nsIImportService> impSvc(do_GetService(NS_IMPORTSERVICE_CONTRACTID, &rv));
|
|
||||||
if (NS_SUCCEEDED(rv)) {
|
|
||||||
nsCOMPtr<nsIImportGeneric> generic;
|
|
||||||
rv = impSvc->CreateNewGenericMail(getter_AddRefs(generic));
|
|
||||||
if (NS_SUCCEEDED(rv)) {
|
|
||||||
nsAutoString name;
|
|
||||||
rv = mBundle->GetStringFromName(u"ApplemailImportName", getter_Copies(name));
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
nsCOMPtr<nsISupportsString> nameString(do_CreateInstance(NS_SUPPORTS_STRING_CONTRACTID, &rv));
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
nameString->SetData(name);
|
|
||||||
|
|
||||||
generic->SetData("name", nameString);
|
|
||||||
generic->SetData("mailInterface", mail);
|
|
||||||
|
|
||||||
generic.forget(aInterface);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark -
|
|
||||||
|
|
||||||
nsAppleMailImportMail::nsAppleMailImportMail() : mProgress(0), mCurDepth(0)
|
|
||||||
{
|
|
||||||
IMPORT_LOG0("nsAppleMailImportMail created");
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult nsAppleMailImportMail::Initialize()
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsIStringBundleService> bundleService =
|
|
||||||
mozilla::services::GetStringBundleService();
|
|
||||||
NS_ENSURE_TRUE(bundleService, NS_ERROR_UNEXPECTED);
|
|
||||||
|
|
||||||
return bundleService->CreateBundle(APPLEMAIL_MSGS_URL, getter_AddRefs(mBundle));
|
|
||||||
}
|
|
||||||
|
|
||||||
nsAppleMailImportMail::~nsAppleMailImportMail()
|
|
||||||
{
|
|
||||||
IMPORT_LOG0("nsAppleMailImportMail destroyed");
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMPL_ISUPPORTS(nsAppleMailImportMail, nsIImportMail)
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsAppleMailImportMail::GetDefaultLocation(nsIFile **aLocation, bool *aFound, bool *aUserVerify)
|
|
||||||
{
|
|
||||||
NS_ENSURE_ARG_POINTER(aFound);
|
|
||||||
NS_ENSURE_ARG_POINTER(aLocation);
|
|
||||||
NS_ENSURE_ARG_POINTER(aUserVerify);
|
|
||||||
|
|
||||||
*aLocation = nullptr;
|
|
||||||
*aFound = false;
|
|
||||||
*aUserVerify = true;
|
|
||||||
|
|
||||||
// try to find current user's top-level Mail folder
|
|
||||||
nsCOMPtr<nsIFile> mailFolder(do_CreateInstance(NS_LOCAL_FILE_CONTRACTID));
|
|
||||||
if (mailFolder) {
|
|
||||||
nsresult rv = mailFolder->InitWithNativePath(NS_LITERAL_CSTRING(DEFAULT_MAIL_FOLDER));
|
|
||||||
if (NS_SUCCEEDED(rv)) {
|
|
||||||
*aFound = true;
|
|
||||||
*aUserVerify = false;
|
|
||||||
mailFolder.forget(aLocation);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
// this is the method that initiates all searching for mailboxes.
|
|
||||||
// it will assume that it has a directory like ~/Library/Mail/
|
|
||||||
NS_IMETHODIMP nsAppleMailImportMail::FindMailboxes(nsIFile *aMailboxFile, nsIArray **aResult)
|
|
||||||
{
|
|
||||||
NS_ENSURE_ARG_POINTER(aMailboxFile);
|
|
||||||
NS_ENSURE_ARG_POINTER(aResult);
|
|
||||||
|
|
||||||
IMPORT_LOG0("FindMailboxes for Apple mail invoked");
|
|
||||||
|
|
||||||
bool exists = false;
|
|
||||||
nsresult rv = aMailboxFile->Exists(&exists);
|
|
||||||
if (NS_FAILED(rv) || !exists)
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
|
|
||||||
nsCOMPtr<nsIImportService> importService(do_GetService(NS_IMPORTSERVICE_CONTRACTID, &rv));
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
nsCOMPtr<nsIMutableArray> resultsArray(do_CreateInstance(NS_ARRAY_CONTRACTID, &rv));
|
|
||||||
if (!resultsArray)
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
|
|
||||||
mCurDepth = 1;
|
|
||||||
|
|
||||||
// 1. look for accounts with mailboxes
|
|
||||||
FindAccountMailDirs(aMailboxFile, resultsArray, importService);
|
|
||||||
mCurDepth--;
|
|
||||||
|
|
||||||
if (NS_SUCCEEDED(rv)) {
|
|
||||||
// 2. look for "global" mailboxes, that don't belong to any specific account. they are inside the
|
|
||||||
// root's Mailboxes/ folder
|
|
||||||
nsCOMPtr<nsIFile> mailboxesDir(do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv));
|
|
||||||
if (NS_SUCCEEDED(rv)) {
|
|
||||||
mailboxesDir->InitWithFile(aMailboxFile);
|
|
||||||
rv = mailboxesDir->Append(NS_LITERAL_STRING("Mailboxes"));
|
|
||||||
if (NS_SUCCEEDED(rv)) {
|
|
||||||
IMPORT_LOG0("Looking for global Apple mailboxes");
|
|
||||||
|
|
||||||
mCurDepth++;
|
|
||||||
rv = FindMboxDirs(mailboxesDir, resultsArray, importService);
|
|
||||||
mCurDepth--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (NS_SUCCEEDED(rv) && resultsArray)
|
|
||||||
resultsArray.forget(aResult);
|
|
||||||
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
// operates on the Mail/ directory root, trying to find accounts (which are folders named something like "POP-hwaara@gmail.com")
|
|
||||||
// and add their .mbox dirs
|
|
||||||
void nsAppleMailImportMail::FindAccountMailDirs(nsIFile *aRoot, nsIMutableArray *aMailboxDescs, nsIImportService *aImportService)
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsISimpleEnumerator> directoryEnumerator;
|
|
||||||
nsresult rv = aRoot->GetDirectoryEntries(getter_AddRefs(directoryEnumerator));
|
|
||||||
if (NS_FAILED(rv))
|
|
||||||
return;
|
|
||||||
|
|
||||||
bool hasMore = false;
|
|
||||||
while (NS_SUCCEEDED(directoryEnumerator->HasMoreElements(&hasMore)) && hasMore) {
|
|
||||||
|
|
||||||
// get the next file entry
|
|
||||||
nsCOMPtr<nsIFile> currentEntry;
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsISupports> rawSupports;
|
|
||||||
directoryEnumerator->GetNext(getter_AddRefs(rawSupports));
|
|
||||||
if (!rawSupports)
|
|
||||||
continue;
|
|
||||||
currentEntry = do_QueryInterface(rawSupports);
|
|
||||||
if (!currentEntry)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// make sure it's a directory
|
|
||||||
bool isDirectory = false;
|
|
||||||
currentEntry->IsDirectory(&isDirectory);
|
|
||||||
|
|
||||||
if (isDirectory) {
|
|
||||||
// now let's see if it's an account folder. if so, we want to traverse it for .mbox children
|
|
||||||
nsAutoString folderName;
|
|
||||||
currentEntry->GetLeafName(folderName);
|
|
||||||
bool isAccountFolder = false;
|
|
||||||
|
|
||||||
if (StringBeginsWith(folderName, NS_LITERAL_STRING("POP-"))) {
|
|
||||||
// cut off "POP-" prefix so we get a nice folder name
|
|
||||||
folderName.Cut(0, 4);
|
|
||||||
isAccountFolder = true;
|
|
||||||
}
|
|
||||||
else if (StringBeginsWith(folderName, NS_LITERAL_STRING("IMAP-"))) {
|
|
||||||
// cut off "IMAP-" prefix so we get a nice folder name
|
|
||||||
folderName.Cut(0, 5);
|
|
||||||
isAccountFolder = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAccountFolder) {
|
|
||||||
IMPORT_LOG1("Found account: %s\n", NS_ConvertUTF16toUTF8(folderName).get());
|
|
||||||
|
|
||||||
// create a mailbox for this account, so we get a parent for "Inbox", "Sent Messages", etc.
|
|
||||||
nsCOMPtr<nsIImportMailboxDescriptor> desc;
|
|
||||||
nsresult rv = aImportService->CreateNewMailboxDescriptor(getter_AddRefs(desc));
|
|
||||||
desc->SetSize(1);
|
|
||||||
desc->SetDepth(mCurDepth);
|
|
||||||
desc->SetDisplayName(folderName.get());
|
|
||||||
desc->SetIdentifier(kAccountMailboxID);
|
|
||||||
|
|
||||||
nsCOMPtr<nsIFile> mailboxDescFile;
|
|
||||||
rv = desc->GetFile(getter_AddRefs(mailboxDescFile));
|
|
||||||
if (!mailboxDescFile)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
mailboxDescFile->InitWithFile(currentEntry);
|
|
||||||
|
|
||||||
// add this mailbox descriptor to the list
|
|
||||||
aMailboxDescs->AppendElement(desc, false);
|
|
||||||
|
|
||||||
// now add all the children mailboxes
|
|
||||||
mCurDepth++;
|
|
||||||
FindMboxDirs(currentEntry, aMailboxDescs, aImportService);
|
|
||||||
mCurDepth--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// adds the specified file as a mailboxdescriptor to the array
|
|
||||||
nsresult nsAppleMailImportMail::AddMboxDir(nsIFile *aFolder, nsIMutableArray *aMailboxDescs, nsIImportService *aImportService)
|
|
||||||
{
|
|
||||||
nsAutoString folderName;
|
|
||||||
aFolder->GetLeafName(folderName);
|
|
||||||
|
|
||||||
// cut off the suffix, if any, or prefix if this is an account folder.
|
|
||||||
if (StringEndsWith(folderName, NS_LITERAL_STRING(POP_MBOX_SUFFIX)))
|
|
||||||
folderName.SetLength(folderName.Length()-5);
|
|
||||||
else if (StringEndsWith(folderName, NS_LITERAL_STRING(IMAP_MBOX_SUFFIX)))
|
|
||||||
folderName.SetLength(folderName.Length()-9);
|
|
||||||
else if (StringBeginsWith(folderName, NS_LITERAL_STRING("POP-")))
|
|
||||||
folderName.Cut(4, folderName.Length());
|
|
||||||
else if (StringBeginsWith(folderName, NS_LITERAL_STRING("IMAP-")))
|
|
||||||
folderName.Cut(5, folderName.Length());
|
|
||||||
|
|
||||||
nsCOMPtr<nsIImportMailboxDescriptor> desc;
|
|
||||||
nsresult rv = aImportService->CreateNewMailboxDescriptor(getter_AddRefs(desc));
|
|
||||||
if (NS_SUCCEEDED(rv)) {
|
|
||||||
// find out number of messages in this .mbox
|
|
||||||
uint32_t numMessages = 0;
|
|
||||||
{
|
|
||||||
// move to the .mbox's Messages folder
|
|
||||||
nsCOMPtr<nsIFile> messagesFolder;
|
|
||||||
aFolder->Clone(getter_AddRefs(messagesFolder));
|
|
||||||
nsresult rv = messagesFolder->Append(NS_LITERAL_STRING("Messages"));
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
// count the number of messages in this folder. it sucks that we have to iterate through the folder
|
|
||||||
// but XPCOM doesn't give us any way to just get the file count, unfortunately. :-(
|
|
||||||
nsCOMPtr<nsISimpleEnumerator> dirEnumerator;
|
|
||||||
messagesFolder->GetDirectoryEntries(getter_AddRefs(dirEnumerator));
|
|
||||||
if (dirEnumerator) {
|
|
||||||
bool hasMore = false;
|
|
||||||
while (NS_SUCCEEDED(dirEnumerator->HasMoreElements(&hasMore)) && hasMore) {
|
|
||||||
nsCOMPtr<nsISupports> rawSupports;
|
|
||||||
dirEnumerator->GetNext(getter_AddRefs(rawSupports));
|
|
||||||
if (!rawSupports)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
nsCOMPtr<nsIFile> file(do_QueryInterface(rawSupports));
|
|
||||||
if (file) {
|
|
||||||
bool isFile = false;
|
|
||||||
file->IsFile(&isFile);
|
|
||||||
if (isFile)
|
|
||||||
numMessages++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
desc->SetSize(numMessages);
|
|
||||||
desc->SetDisplayName(folderName.get());
|
|
||||||
desc->SetDepth(mCurDepth);
|
|
||||||
|
|
||||||
IMPORT_LOG3("Will import %s with approx %d messages, depth is %d", NS_ConvertUTF16toUTF8(folderName).get(), numMessages, mCurDepth);
|
|
||||||
|
|
||||||
// XXX: this is silly. there's no setter for the mailbox descriptor's file, so we need to get it, and then modify it.
|
|
||||||
nsCOMPtr<nsIFile> mailboxDescFile;
|
|
||||||
rv = desc->GetFile(getter_AddRefs(mailboxDescFile));
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
if (mailboxDescFile)
|
|
||||||
mailboxDescFile->InitWithFile(aFolder);
|
|
||||||
|
|
||||||
// add this mailbox descriptor to the list
|
|
||||||
aMailboxDescs->AppendElement(desc, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Starts looking for .mbox dirs in the specified dir. The .mbox dirs contain messages and can be considered leafs in a tree of
|
|
||||||
// nested mailboxes (subfolders).
|
|
||||||
//
|
|
||||||
// If a mailbox has sub-mailboxes, they are contained in a sibling folder with the same name without the ".mbox" part.
|
|
||||||
// example:
|
|
||||||
// MyParentMailbox.mbox/
|
|
||||||
// MyParentMailbox/
|
|
||||||
// MyChildMailbox.mbox/
|
|
||||||
// MyOtherChildMailbox.mbox/
|
|
||||||
//
|
|
||||||
nsresult nsAppleMailImportMail::FindMboxDirs(nsIFile *aFolder, nsIMutableArray *aMailboxDescs, nsIImportService *aImportService)
|
|
||||||
{
|
|
||||||
NS_ENSURE_ARG_POINTER(aFolder);
|
|
||||||
NS_ENSURE_ARG_POINTER(aMailboxDescs);
|
|
||||||
NS_ENSURE_ARG_POINTER(aImportService);
|
|
||||||
|
|
||||||
// make sure this is a directory.
|
|
||||||
bool isDir = false;
|
|
||||||
if (NS_FAILED(aFolder->IsDirectory(&isDir)) || !isDir)
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
|
|
||||||
// iterate through the folder contents
|
|
||||||
nsCOMPtr<nsISimpleEnumerator> directoryEnumerator;
|
|
||||||
nsresult rv = aFolder->GetDirectoryEntries(getter_AddRefs(directoryEnumerator));
|
|
||||||
if (NS_FAILED(rv) || !directoryEnumerator)
|
|
||||||
return rv;
|
|
||||||
|
|
||||||
bool hasMore = false;
|
|
||||||
while (NS_SUCCEEDED(directoryEnumerator->HasMoreElements(&hasMore)) && hasMore) {
|
|
||||||
|
|
||||||
// get the next file entry
|
|
||||||
nsCOMPtr<nsIFile> currentEntry;
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsISupports> rawSupports;
|
|
||||||
directoryEnumerator->GetNext(getter_AddRefs(rawSupports));
|
|
||||||
if (!rawSupports)
|
|
||||||
continue;
|
|
||||||
currentEntry = do_QueryInterface(rawSupports);
|
|
||||||
if (!currentEntry)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// we only care about directories...
|
|
||||||
if (NS_FAILED(currentEntry->IsDirectory(&isDir)) || !isDir)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// now find out if this is a .mbox dir
|
|
||||||
nsAutoString currentFolderName;
|
|
||||||
if (NS_SUCCEEDED(currentEntry->GetLeafName(currentFolderName)) &&
|
|
||||||
(StringEndsWith(currentFolderName, NS_LITERAL_STRING(POP_MBOX_SUFFIX)) ||
|
|
||||||
StringEndsWith(currentFolderName, NS_LITERAL_STRING(IMAP_MBOX_SUFFIX)))) {
|
|
||||||
IMPORT_LOG1("Adding .mbox dir: %s", NS_ConvertUTF16toUTF8(currentFolderName).get());
|
|
||||||
|
|
||||||
// add this .mbox
|
|
||||||
rv = AddMboxDir(currentEntry, aMailboxDescs, aImportService);
|
|
||||||
if (NS_FAILED(rv)) {
|
|
||||||
IMPORT_LOG1("Couldn't add .mbox for import: %s ... continuing anyway", NS_ConvertUTF16toUTF8(currentFolderName).get());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// see if this .mbox dir has any sub-mailboxes
|
|
||||||
nsAutoString siblingMailboxDirPath;
|
|
||||||
currentEntry->GetPath(siblingMailboxDirPath);
|
|
||||||
|
|
||||||
// cut off suffix
|
|
||||||
if (StringEndsWith(siblingMailboxDirPath, NS_LITERAL_STRING(IMAP_MBOX_SUFFIX)))
|
|
||||||
siblingMailboxDirPath.SetLength(siblingMailboxDirPath.Length()-9);
|
|
||||||
else if (StringEndsWith(siblingMailboxDirPath, NS_LITERAL_STRING(POP_MBOX_SUFFIX)))
|
|
||||||
siblingMailboxDirPath.SetLength(siblingMailboxDirPath.Length()-5);
|
|
||||||
|
|
||||||
IMPORT_LOG1("trying to locate a '%s'", NS_ConvertUTF16toUTF8(siblingMailboxDirPath).get());
|
|
||||||
nsCOMPtr<nsIFile> siblingMailboxDir(do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv));
|
|
||||||
if (NS_FAILED(rv))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
rv = siblingMailboxDir->InitWithPath(siblingMailboxDirPath);
|
|
||||||
bool reallyExists = false;
|
|
||||||
siblingMailboxDir->Exists(&reallyExists);
|
|
||||||
|
|
||||||
if (NS_SUCCEEDED(rv) && reallyExists) {
|
|
||||||
IMPORT_LOG1("Found what looks like an .mbox container: %s", NS_ConvertUTF16toUTF8(currentFolderName).get());
|
|
||||||
|
|
||||||
// traverse this folder for other .mboxes
|
|
||||||
mCurDepth++;
|
|
||||||
FindMboxDirs(siblingMailboxDir, aMailboxDescs, aImportService);
|
|
||||||
mCurDepth--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsAppleMailImportMail::ImportMailbox(nsIImportMailboxDescriptor *aMailbox,
|
|
||||||
nsIMsgFolder *aDstFolder,
|
|
||||||
char16_t **aErrorLog,
|
|
||||||
char16_t **aSuccessLog, bool *aFatalError)
|
|
||||||
{
|
|
||||||
nsAutoString errorLog, successLog;
|
|
||||||
|
|
||||||
// reset progress
|
|
||||||
mProgress = 0;
|
|
||||||
|
|
||||||
nsAutoString mailboxName;
|
|
||||||
aMailbox->GetDisplayName(getter_Copies(mailboxName));
|
|
||||||
|
|
||||||
nsCOMPtr<nsIFile> mboxFolder;
|
|
||||||
nsresult rv = aMailbox->GetFile(getter_AddRefs(mboxFolder));
|
|
||||||
if (NS_FAILED(rv) || !mboxFolder) {
|
|
||||||
ReportStatus(u"ApplemailImportMailboxConverterror", mailboxName, errorLog);
|
|
||||||
SetLogs(successLog, errorLog, aSuccessLog, aErrorLog);
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// if we're an account mailbox, nothing do. if we're a real mbox
|
|
||||||
// then we've got some messages to import!
|
|
||||||
uint32_t mailboxIdentifier;
|
|
||||||
aMailbox->GetIdentifier(&mailboxIdentifier);
|
|
||||||
|
|
||||||
if (mailboxIdentifier != kAccountMailboxID) {
|
|
||||||
// move to the .mbox's Messages folder
|
|
||||||
nsCOMPtr<nsIFile> messagesFolder;
|
|
||||||
mboxFolder->Clone(getter_AddRefs(messagesFolder));
|
|
||||||
rv = messagesFolder->Append(NS_LITERAL_STRING("Messages"));
|
|
||||||
if (NS_FAILED(rv)) {
|
|
||||||
// even if there are no messages, it might still be a valid mailbox, or even
|
|
||||||
// a parent for other mailboxes.
|
|
||||||
//
|
|
||||||
// just indicate that we're done, using the same number that we used to estimate
|
|
||||||
// number of messages earlier.
|
|
||||||
uint32_t finalSize;
|
|
||||||
aMailbox->GetSize(&finalSize);
|
|
||||||
mProgress = finalSize;
|
|
||||||
|
|
||||||
// report that we successfully imported this mailbox
|
|
||||||
ReportStatus(u"ApplemailImportMailboxSuccess", mailboxName, successLog);
|
|
||||||
SetLogs(successLog, errorLog, aSuccessLog, aErrorLog);
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
// let's import the messages!
|
|
||||||
nsCOMPtr<nsISimpleEnumerator> directoryEnumerator;
|
|
||||||
rv = messagesFolder->GetDirectoryEntries(getter_AddRefs(directoryEnumerator));
|
|
||||||
if (NS_FAILED(rv)) {
|
|
||||||
ReportStatus(u"ApplemailImportMailboxConvertError", mailboxName, errorLog);
|
|
||||||
SetLogs(successLog, errorLog, aSuccessLog, aErrorLog);
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// prepare an outstream to the destination file
|
|
||||||
nsCOMPtr<nsIMsgPluggableStore> msgStore;
|
|
||||||
rv = aDstFolder->GetMsgStore(getter_AddRefs(msgStore));
|
|
||||||
if (!msgStore || NS_FAILED(rv)) {
|
|
||||||
ReportStatus(u"ApplemailImportMailboxConverterror", mailboxName, errorLog);
|
|
||||||
SetLogs(successLog, errorLog, aSuccessLog, aErrorLog);
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool hasMore = false;
|
|
||||||
nsCOMPtr<nsIOutputStream> outStream;
|
|
||||||
|
|
||||||
while (NS_SUCCEEDED(directoryEnumerator->HasMoreElements(&hasMore)) && hasMore) {
|
|
||||||
// get the next file entry
|
|
||||||
nsCOMPtr<nsIFile> currentEntry;
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsISupports> rawSupports;
|
|
||||||
directoryEnumerator->GetNext(getter_AddRefs(rawSupports));
|
|
||||||
if (!rawSupports)
|
|
||||||
continue;
|
|
||||||
currentEntry = do_QueryInterface(rawSupports);
|
|
||||||
if (!currentEntry)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// make sure it's an .emlx file
|
|
||||||
bool isFile = false;
|
|
||||||
currentEntry->IsFile(&isFile);
|
|
||||||
if (!isFile)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
nsAutoString leafName;
|
|
||||||
currentEntry->GetLeafName(leafName);
|
|
||||||
if (!StringEndsWith(leafName, NS_LITERAL_STRING(".emlx")))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
nsCOMPtr<nsIMsgDBHdr> msgHdr;
|
|
||||||
bool reusable;
|
|
||||||
rv = msgStore->GetNewMsgOutputStream(aDstFolder, getter_AddRefs(msgHdr),
|
|
||||||
&reusable,
|
|
||||||
getter_AddRefs(outStream));
|
|
||||||
if (NS_FAILED(rv))
|
|
||||||
break;
|
|
||||||
|
|
||||||
// add the data to the mbox stream
|
|
||||||
if (NS_SUCCEEDED(nsEmlxHelperUtils::AddEmlxMessageToStream(currentEntry, outStream))) {
|
|
||||||
mProgress++;
|
|
||||||
msgStore->FinishNewMessage(outStream, msgHdr);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
msgStore->DiscardNewMessage(outStream, msgHdr);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (!reusable)
|
|
||||||
outStream->Close();
|
|
||||||
}
|
|
||||||
if (outStream)
|
|
||||||
outStream->Close();
|
|
||||||
}
|
|
||||||
// just indicate that we're done, using the same number that we used to estimate
|
|
||||||
// number of messages earlier.
|
|
||||||
uint32_t finalSize;
|
|
||||||
aMailbox->GetSize(&finalSize);
|
|
||||||
mProgress = finalSize;
|
|
||||||
|
|
||||||
// report that we successfully imported this mailbox
|
|
||||||
ReportStatus(u"ApplemailImportMailboxSuccess", mailboxName, successLog);
|
|
||||||
SetLogs(successLog, errorLog, aSuccessLog, aErrorLog);
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
void nsAppleMailImportMail::ReportStatus(const char16_t* aErrorName, nsString &aName,
|
|
||||||
nsAString &aStream)
|
|
||||||
{
|
|
||||||
// get (and format, if needed) the error string from the bundle
|
|
||||||
nsAutoString outString;
|
|
||||||
const char16_t *fmt = { aName.get() };
|
|
||||||
nsresult rv = mBundle->FormatStringFromName(aErrorName, &fmt, 1, getter_Copies(outString));
|
|
||||||
// write it out the stream
|
|
||||||
if (NS_SUCCEEDED(rv)) {
|
|
||||||
aStream.Append(outString);
|
|
||||||
aStream.Append(char16_t('\n'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void nsAppleMailImportMail::SetLogs(const nsAString &aSuccess, const nsAString &aError, char16_t **aOutSuccess, char16_t **aOutError)
|
|
||||||
{
|
|
||||||
if (aOutError && !*aOutError)
|
|
||||||
*aOutError = ToNewUnicode(aError);
|
|
||||||
if (aOutSuccess && !*aOutSuccess)
|
|
||||||
*aOutSuccess = ToNewUnicode(aSuccess);
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsAppleMailImportMail::GetImportProgress(uint32_t *aDoneSoFar)
|
|
||||||
{
|
|
||||||
NS_ENSURE_ARG_POINTER(aDoneSoFar);
|
|
||||||
*aDoneSoFar = mProgress;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsAppleMailImportMail::TranslateFolderName(const nsAString &aFolderName, nsAString &aResult)
|
|
||||||
{
|
|
||||||
aResult = aFolderName;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
@ -1,78 +0,0 @@
|
||||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
||||||
|
|
||||||
#ifndef nsAppleMailImport_h___
|
|
||||||
#define nsAppleMailImport_h___
|
|
||||||
|
|
||||||
#include "mozilla/Logging.h"
|
|
||||||
#include "nsIImportModule.h"
|
|
||||||
#include "nsCOMPtr.h"
|
|
||||||
#include "nsIStringBundle.h"
|
|
||||||
#include "nsIImportMail.h"
|
|
||||||
|
|
||||||
// logging facilities
|
|
||||||
extern PRLogModuleInfo *APPLEMAILLOGMODULE;
|
|
||||||
|
|
||||||
#define IMPORT_LOG0(x) MOZ_LOG(APPLEMAILLOGMODULE, mozilla::LogLevel::Debug, (x))
|
|
||||||
#define IMPORT_LOG1(x, y) MOZ_LOG(APPLEMAILLOGMODULE, mozilla::LogLevel::Debug, (x, y))
|
|
||||||
#define IMPORT_LOG2(x, y, z) MOZ_LOG(APPLEMAILLOGMODULE, mozilla::LogLevel::Debug, (x, y, z))
|
|
||||||
#define IMPORT_LOG3(a, b, c, d) MOZ_LOG(APPLEMAILLOGMODULE, mozilla::LogLevel::Debug, (a, b, c, d))
|
|
||||||
|
|
||||||
#define NS_APPLEMAILIMPL_CID \
|
|
||||||
{ 0x9117a1ea, 0xe012, 0x43b5, { 0xa0, 0x20, 0xcb, 0x8a, 0x66, 0xcc, 0x09, 0xe1 } }
|
|
||||||
|
|
||||||
#define NS_APPLEMAILIMPORT_CID \
|
|
||||||
{ 0x6d3f101c, 0x70ec, 0x4e04, { 0xb6, 0x8d, 0x99, 0x08, 0xd1, 0xae, 0xdd, 0xf3 } }
|
|
||||||
|
|
||||||
#define NS_APPLEMAILIMPL_CONTRACTID "@mozilla.org/import/import-appleMailImpl;1"
|
|
||||||
|
|
||||||
#define kAppleMailSupportsString "mail"
|
|
||||||
|
|
||||||
class nsIImportService;
|
|
||||||
class nsIMutableArray;
|
|
||||||
|
|
||||||
class nsAppleMailImportModule : public nsIImportModule
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
nsAppleMailImportModule();
|
|
||||||
|
|
||||||
NS_DECL_THREADSAFE_ISUPPORTS
|
|
||||||
NS_DECL_NSIIMPORTMODULE
|
|
||||||
|
|
||||||
private:
|
|
||||||
virtual ~nsAppleMailImportModule();
|
|
||||||
|
|
||||||
nsCOMPtr<nsIStringBundle> mBundle;
|
|
||||||
};
|
|
||||||
|
|
||||||
class nsAppleMailImportMail : public nsIImportMail
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
nsAppleMailImportMail();
|
|
||||||
|
|
||||||
NS_DECL_THREADSAFE_ISUPPORTS
|
|
||||||
NS_DECL_NSIIMPORTMAIL
|
|
||||||
|
|
||||||
nsresult Initialize();
|
|
||||||
|
|
||||||
private:
|
|
||||||
virtual ~nsAppleMailImportMail();
|
|
||||||
|
|
||||||
void FindAccountMailDirs(nsIFile *aRoot, nsIMutableArray *aMailboxDescs, nsIImportService *aImportService);
|
|
||||||
nsresult FindMboxDirs(nsIFile *aFolder, nsIMutableArray *aMailboxDescs, nsIImportService *aImportService);
|
|
||||||
nsresult AddMboxDir(nsIFile *aFolder, nsIMutableArray *aMailboxDescs, nsIImportService *aImportService);
|
|
||||||
|
|
||||||
// aInfoString is the format to a "foo %s" string. It may be NULL if the error string needs no such format.
|
|
||||||
void ReportStatus(const char16_t* aErrorName, nsString &aName, nsAString &aStream);
|
|
||||||
static void SetLogs(const nsAString& success, const nsAString& error, char16_t **aOutErrorLog, char16_t **aSuccessLog);
|
|
||||||
|
|
||||||
nsCOMPtr<nsIStringBundle> mBundle;
|
|
||||||
uint32_t mProgress;
|
|
||||||
uint16_t mCurDepth;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* nsAppleMailImport_h___ */
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
||||||
|
|
||||||
#ifndef nsEmlxHelperUtils_h___
|
|
||||||
#define nsEmlxHelperUtils_h___
|
|
||||||
|
|
||||||
#include "nscore.h"
|
|
||||||
#include "nsStringGlue.h"
|
|
||||||
|
|
||||||
class nsIOutputStream;
|
|
||||||
class nsIFile;
|
|
||||||
|
|
||||||
class nsEmlxHelperUtils {
|
|
||||||
/* All emlx messages have a "flags" number in the metadata.
|
|
||||||
These are the masks to decode that, found via http://jwz.livejournal.com/505711.html */
|
|
||||||
enum EmlxMetadataMask {
|
|
||||||
kRead = 1 << 0, // read
|
|
||||||
// 1 << 1, // deleted
|
|
||||||
kAnswered = 1 << 2, // answered
|
|
||||||
// 1 << 3, // encrypted
|
|
||||||
kFlagged = 1 << 4, // flagged
|
|
||||||
// 1 << 5, // recent
|
|
||||||
// 1 << 6, // draft
|
|
||||||
// 1 << 7, // initial (no longer used)
|
|
||||||
kForwarded = 1 << 8, // forwarded
|
|
||||||
// 1 << 9, // redirected
|
|
||||||
// 3F << 10, // attachment count (6 bits)
|
|
||||||
// 7F << 16, // priority level (7 bits)
|
|
||||||
// 1 << 23, // signed
|
|
||||||
// 1 << 24, // is junk
|
|
||||||
// 1 << 25, // is not junk
|
|
||||||
// 1 << 26, // font size delta 7 (3 bits)
|
|
||||||
// 1 << 29, // junk mail level recorded
|
|
||||||
// 1 << 30, // highlight text in toc
|
|
||||||
// 1 << 31 // (unused)
|
|
||||||
};
|
|
||||||
|
|
||||||
// This method will scan the raw EMLX message buffer for "dangerous" so-called "From-lines" that we need to escape.
|
|
||||||
// If it needs to modify any lines, it will return a non-NULL aOutBuffer. If aOutBuffer is NULL, no modification needed
|
|
||||||
// to be made.
|
|
||||||
static nsresult ConvertToMboxRD(const char *aMessageBufferStart, const char *aMessageBufferEnd, nsCString &aOutBuffer);
|
|
||||||
|
|
||||||
// returns an int representing the X-Mozilla-Status flags set (e.g. "read", "flagged") converted from EMLX flags.
|
|
||||||
static nsresult ConvertToMozillaStatusFlags(const char *aXMLBufferStart, const char *aXMLBufferEnd, uint32_t *aMozillaStatusFlags);
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
// add an .emlx message to the mbox output
|
|
||||||
static nsresult AddEmlxMessageToStream(nsIFile *aEmlxFile, nsIOutputStream *aOutoutStream);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // nsEmlxHelperUtils_h___
|
|
||||||
|
|
@ -1,240 +0,0 @@
|
||||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
||||||
|
|
||||||
#include "nsEmlxHelperUtils.h"
|
|
||||||
#include "nsIFileStreams.h"
|
|
||||||
#include "nsIBufferedStreams.h"
|
|
||||||
#include "nsIOutputStream.h"
|
|
||||||
#include "nsNetUtil.h"
|
|
||||||
#include "nsCOMPtr.h"
|
|
||||||
#include "nsObjCExceptions.h"
|
|
||||||
#include "nsMsgMessageFlags.h"
|
|
||||||
#include "nsMsgLocalFolderHdrs.h"
|
|
||||||
#include "msgCore.h"
|
|
||||||
#include "nsTArray.h"
|
|
||||||
#include "nsAppleMailImport.h"
|
|
||||||
#include "prprf.h"
|
|
||||||
#include "nsIFile.h"
|
|
||||||
|
|
||||||
#import <Cocoa/Cocoa.h>
|
|
||||||
|
|
||||||
|
|
||||||
nsresult nsEmlxHelperUtils::ConvertToMozillaStatusFlags(const char *aXMLBufferStart,
|
|
||||||
const char *aXMLBufferEnd,
|
|
||||||
uint32_t *aMozillaStatusFlags)
|
|
||||||
{
|
|
||||||
// create a NSData wrapper around the buffer, so we can use the Cocoa call below
|
|
||||||
NSData *metadata =
|
|
||||||
[[[NSData alloc] initWithBytesNoCopy:(void *)aXMLBufferStart length:(aXMLBufferEnd-aXMLBufferStart) freeWhenDone:NO] autorelease];
|
|
||||||
|
|
||||||
// get the XML data as a dictionary
|
|
||||||
NSPropertyListFormat format;
|
|
||||||
id plist = [NSPropertyListSerialization propertyListWithData:metadata
|
|
||||||
options:NSPropertyListImmutable
|
|
||||||
format:&format
|
|
||||||
error:NULL];
|
|
||||||
|
|
||||||
if (!plist)
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
|
|
||||||
// find the <flags>...</flags> value and convert to int
|
|
||||||
const uint32_t emlxMessageFlags = [[(NSDictionary *)plist objectForKey:@"flags"] intValue];
|
|
||||||
|
|
||||||
if (emlxMessageFlags == 0)
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
|
|
||||||
if (emlxMessageFlags & nsEmlxHelperUtils::kRead)
|
|
||||||
*aMozillaStatusFlags |= nsMsgMessageFlags::Read;
|
|
||||||
if (emlxMessageFlags & nsEmlxHelperUtils::kForwarded)
|
|
||||||
*aMozillaStatusFlags |= nsMsgMessageFlags::Forwarded;
|
|
||||||
if (emlxMessageFlags & nsEmlxHelperUtils::kAnswered)
|
|
||||||
*aMozillaStatusFlags |= nsMsgMessageFlags::Replied;
|
|
||||||
if (emlxMessageFlags & nsEmlxHelperUtils::kFlagged)
|
|
||||||
*aMozillaStatusFlags |= nsMsgMessageFlags::Marked;
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult nsEmlxHelperUtils::ConvertToMboxRD(const char *aMessageBufferStart, const char *aMessageBufferEnd, nsCString &aOutBuffer)
|
|
||||||
{
|
|
||||||
nsTArray<const char *> foundFromLines;
|
|
||||||
|
|
||||||
const char *cur = aMessageBufferStart;
|
|
||||||
while (cur < aMessageBufferEnd) {
|
|
||||||
|
|
||||||
const char *foundFromStr = strnstr(cur, "From ", aMessageBufferEnd-cur);
|
|
||||||
|
|
||||||
if (foundFromStr) {
|
|
||||||
// skip all prepending '>' chars
|
|
||||||
const char *fromLineStart = foundFromStr;
|
|
||||||
while (fromLineStart-- >= aMessageBufferStart) {
|
|
||||||
if (*fromLineStart == '\n' || fromLineStart == aMessageBufferStart) {
|
|
||||||
if (fromLineStart > aMessageBufferStart)
|
|
||||||
fromLineStart++;
|
|
||||||
foundFromLines.AppendElement(fromLineStart);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if (*fromLineStart != '>')
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// advance past the last found From string.
|
|
||||||
cur = foundFromStr + 5;
|
|
||||||
|
|
||||||
// look for more From lines.
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// go through foundFromLines
|
|
||||||
if (foundFromLines.Length()) {
|
|
||||||
|
|
||||||
const char *chunkStart = aMessageBufferStart;
|
|
||||||
for (unsigned i=0; i<foundFromLines.Length(); ++i) {
|
|
||||||
aOutBuffer.Append(chunkStart, (foundFromLines[i]-chunkStart));
|
|
||||||
aOutBuffer.Append(NS_LITERAL_CSTRING(">"));
|
|
||||||
|
|
||||||
chunkStart = foundFromLines[i];
|
|
||||||
}
|
|
||||||
aOutBuffer.Append(chunkStart, (aMessageBufferEnd - chunkStart));
|
|
||||||
}
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult nsEmlxHelperUtils::AddEmlxMessageToStream(nsIFile *aMessage, nsIOutputStream *aOut)
|
|
||||||
{
|
|
||||||
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
|
|
||||||
|
|
||||||
// needed to be sure autoreleased objects are released too, which they might not
|
|
||||||
// in a C++ environment where the main event loop has no autorelease pool (e.g on a XPCOM thread)
|
|
||||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
|
||||||
|
|
||||||
nsresult rv = NS_ERROR_FAILURE;
|
|
||||||
|
|
||||||
nsAutoCString path;
|
|
||||||
aMessage->GetNativePath(path);
|
|
||||||
|
|
||||||
NSData *data = [NSData dataWithContentsOfFile:[NSString stringWithUTF8String:path.get()]];
|
|
||||||
if (!data) {
|
|
||||||
[pool release];
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *startOfMessageData = NULL;
|
|
||||||
uint32_t actualBytesWritten = 0;
|
|
||||||
|
|
||||||
// The anatomy of an EMLX file:
|
|
||||||
//
|
|
||||||
// -------------------------------
|
|
||||||
// < A number describing how many bytes ahead there is message data >
|
|
||||||
// < Message data >
|
|
||||||
// < XML metadata for this message >
|
|
||||||
// -------------------------------
|
|
||||||
|
|
||||||
// read the first line of the emlx file, which is a number of how many bytes ahead the actual
|
|
||||||
// message data is.
|
|
||||||
uint64_t numberOfBytesToRead = strtol((char *)[data bytes], &startOfMessageData, 10);
|
|
||||||
if (numberOfBytesToRead <= 0 || !startOfMessageData) {
|
|
||||||
[pool release];
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// skip whitespace
|
|
||||||
while (*startOfMessageData == ' ' ||
|
|
||||||
*startOfMessageData == '\n' ||
|
|
||||||
*startOfMessageData == '\r' ||
|
|
||||||
*startOfMessageData == '\t')
|
|
||||||
++startOfMessageData;
|
|
||||||
|
|
||||||
NS_NAMED_LITERAL_CSTRING(kBogusFromLine, "From \n");
|
|
||||||
NS_NAMED_LITERAL_CSTRING(kEndOfMessage, "\n\n");
|
|
||||||
|
|
||||||
// write the bogus "From " line which is a magic separator in the mbox format
|
|
||||||
rv = aOut->Write(kBogusFromLine.get(), kBogusFromLine.Length(), &actualBytesWritten);
|
|
||||||
if (NS_FAILED(rv)) {
|
|
||||||
[pool release];
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
// now read the XML metadata, so we can extract info like which flags (read? replied? flagged? etc) this message has.
|
|
||||||
const char *startOfXMLMetadata = startOfMessageData + numberOfBytesToRead;
|
|
||||||
const char *endOfXMLMetadata = (char *)[data bytes] + [data length];
|
|
||||||
|
|
||||||
uint32_t x_mozilla_flags = 0;
|
|
||||||
ConvertToMozillaStatusFlags(startOfXMLMetadata, endOfXMLMetadata, &x_mozilla_flags);
|
|
||||||
|
|
||||||
// write the X-Mozilla-Status header according to which flags we've gathered above.
|
|
||||||
uint32_t dummyRv;
|
|
||||||
nsAutoCString buf(PR_smprintf(X_MOZILLA_STATUS_FORMAT MSG_LINEBREAK, x_mozilla_flags));
|
|
||||||
NS_ASSERTION(!buf.IsEmpty(), "printf error with X-Mozilla-Status header");
|
|
||||||
if (buf.IsEmpty()) {
|
|
||||||
[pool release];
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
rv = aOut->Write(buf.get(), buf.Length(), &dummyRv);
|
|
||||||
if (NS_FAILED(rv)) {
|
|
||||||
[pool release];
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
// write out X-Mozilla-Keywords header as well to reserve some space for it
|
|
||||||
// in the mbox file.
|
|
||||||
rv = aOut->Write(X_MOZILLA_KEYWORDS, X_MOZILLA_KEYWORDS_LEN, &dummyRv);
|
|
||||||
if (NS_FAILED(rv)) {
|
|
||||||
[pool release];
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
// write out empty X-Mozilla_status2 header
|
|
||||||
buf.Adopt(PR_smprintf(X_MOZILLA_STATUS2_FORMAT MSG_LINEBREAK, 0));
|
|
||||||
NS_ASSERTION(!buf.IsEmpty(), "printf error with X-Mozilla-Status2 header");
|
|
||||||
if (buf.IsEmpty()) {
|
|
||||||
[pool release];
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
}
|
|
||||||
|
|
||||||
rv = aOut->Write(buf.get(), buf.Length(), &dummyRv);
|
|
||||||
if (NS_FAILED(rv)) {
|
|
||||||
[pool release];
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
// do any conversion needed for the mbox data to be valid mboxrd.
|
|
||||||
nsCString convertedData;
|
|
||||||
rv = ConvertToMboxRD(startOfMessageData, (startOfMessageData + numberOfBytesToRead), convertedData);
|
|
||||||
if (NS_FAILED(rv)) {
|
|
||||||
[pool release];
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
// write the actual message data.
|
|
||||||
if (convertedData.IsEmpty())
|
|
||||||
rv = aOut->Write(startOfMessageData, (uint32_t)numberOfBytesToRead, &actualBytesWritten);
|
|
||||||
else {
|
|
||||||
IMPORT_LOG1("Escaped From-lines in %s!", path.get());
|
|
||||||
rv = aOut->Write(convertedData.get(), convertedData.Length(), &actualBytesWritten);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (NS_FAILED(rv)) {
|
|
||||||
[pool release];
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_ASSERTION(actualBytesWritten == (convertedData.IsEmpty() ? numberOfBytesToRead : convertedData.Length()),
|
|
||||||
"Didn't write as many bytes as expected for .emlx file?");
|
|
||||||
|
|
||||||
// add newlines to denote the end of this message in the mbox
|
|
||||||
rv = aOut->Write(kEndOfMessage.get(), kEndOfMessage.Length(), &actualBytesWritten);
|
|
||||||
|
|
||||||
[pool release];
|
|
||||||
|
|
||||||
return rv;
|
|
||||||
|
|
||||||
NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
|
|
||||||
}
|
|
||||||
|
|
@ -32,16 +32,6 @@ NS_DEFINE_NAMED_CID(NS_TEXTIMPORT_CID);
|
||||||
|
|
||||||
NS_DEFINE_NAMED_CID(NS_VCARDIMPORT_CID);
|
NS_DEFINE_NAMED_CID(NS_VCARDIMPORT_CID);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Apple Mail import Include Files
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
#if defined(XP_MACOSX)
|
|
||||||
#include "nsAppleMailImport.h"
|
|
||||||
|
|
||||||
NS_DEFINE_NAMED_CID(NS_APPLEMAILIMPORT_CID);
|
|
||||||
NS_DEFINE_NAMED_CID(NS_APPLEMAILIMPL_CID);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// outlook import Include Files
|
// outlook import Include Files
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
@ -88,14 +78,6 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsTextImport)
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsVCardImport)
|
NS_GENERIC_FACTORY_CONSTRUCTOR(nsVCardImport)
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// apple mail import factories
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
#if defined(XP_MACOSX)
|
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAppleMailImportModule)
|
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsAppleMailImportMail, Initialize)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// outlook import factories
|
// outlook import factories
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
@ -125,9 +107,6 @@ static const mozilla::Module::CategoryEntry kMailNewsImportCategories[] = {
|
||||||
#ifdef MOZ_MAPI_SUPPORT
|
#ifdef MOZ_MAPI_SUPPORT
|
||||||
{ "mailnewsimport", "{1DB469A0-8B00-11d3-A206-00A0CC26DA63}", kOutlookSupportsString },
|
{ "mailnewsimport", "{1DB469A0-8B00-11d3-A206-00A0CC26DA63}", kOutlookSupportsString },
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
#if defined(XP_MACOSX)
|
|
||||||
{ "mailnewsimport", "{6d3f101c-70ec-4e04-b68d-9908d1aeddf3}", kAppleMailSupportsString },
|
|
||||||
#endif
|
#endif
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
@ -137,11 +116,6 @@ const mozilla::Module::CIDEntry kMailNewsImportCIDs[] = {
|
||||||
{ &kNS_IMPORTMIMEENCODE_CID, false, NULL, nsIImportMimeEncodeImplConstructor },
|
{ &kNS_IMPORTMIMEENCODE_CID, false, NULL, nsIImportMimeEncodeImplConstructor },
|
||||||
{ &kNS_TEXTIMPORT_CID, false, NULL, nsTextImportConstructor },
|
{ &kNS_TEXTIMPORT_CID, false, NULL, nsTextImportConstructor },
|
||||||
{ &kNS_VCARDIMPORT_CID, false, NULL, nsVCardImportConstructor },
|
{ &kNS_VCARDIMPORT_CID, false, NULL, nsVCardImportConstructor },
|
||||||
#if defined(XP_MACOSX)
|
|
||||||
{ &kNS_APPLEMAILIMPORT_CID, false, NULL, nsAppleMailImportModuleConstructor },
|
|
||||||
{ &kNS_APPLEMAILIMPL_CID, false, NULL, nsAppleMailImportMailConstructor },
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
{ &kNS_OEIMPORT_CID, false, NULL, nsOEImportConstructor },
|
{ &kNS_OEIMPORT_CID, false, NULL, nsOEImportConstructor },
|
||||||
{ &kNS_WMIMPORT_CID, false, NULL, nsWMImportConstructor },
|
{ &kNS_WMIMPORT_CID, false, NULL, nsWMImportConstructor },
|
||||||
|
|
@ -158,11 +132,6 @@ const mozilla::Module::ContractIDEntry kMailNewsImportContracts[] = {
|
||||||
{ "@mozilla.org/import/import-mimeencode;1", &kNS_IMPORTMIMEENCODE_CID },
|
{ "@mozilla.org/import/import-mimeencode;1", &kNS_IMPORTMIMEENCODE_CID },
|
||||||
{ "@mozilla.org/import/import-text;1", &kNS_TEXTIMPORT_CID },
|
{ "@mozilla.org/import/import-text;1", &kNS_TEXTIMPORT_CID },
|
||||||
{ "@mozilla.org/import/import-vcard;1", &kNS_VCARDIMPORT_CID },
|
{ "@mozilla.org/import/import-vcard;1", &kNS_VCARDIMPORT_CID },
|
||||||
#if defined(XP_MACOSX)
|
|
||||||
{ "@mozilla.org/import/import-applemail;1", &kNS_APPLEMAILIMPORT_CID },
|
|
||||||
{ NS_APPLEMAILIMPL_CONTRACTID, &kNS_APPLEMAILIMPL_CID },
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
{ "@mozilla.org/import/import-oe;1", &kNS_OEIMPORT_CID },
|
{ "@mozilla.org/import/import-oe;1", &kNS_OEIMPORT_CID },
|
||||||
{ "@mozilla.org/import/import-wm;1", &kNS_WMIMPORT_CID },
|
{ "@mozilla.org/import/import-wm;1", &kNS_WMIMPORT_CID },
|
||||||
|
|
|
||||||
|
|
@ -15,11 +15,7 @@
|
||||||
<window xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
<window xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||||
onload="OnLoadImportDialog()"
|
onload="OnLoadImportDialog()"
|
||||||
#ifdef XP_MACOSX
|
|
||||||
style="width: &window.macWidth; !important;"
|
|
||||||
#else
|
|
||||||
style="width: &window.width; !important;"
|
style="width: &window.width; !important;"
|
||||||
#endif
|
|
||||||
title="&importDialog.windowTitle;">
|
title="&importDialog.windowTitle;">
|
||||||
|
|
||||||
<stringbundle id="bundle_importMsgs" src="chrome://messenger/locale/importMsgs.properties"/>
|
<stringbundle id="bundle_importMsgs" src="chrome://messenger/locale/importMsgs.properties"/>
|
||||||
|
|
|
||||||
|
|
@ -131,8 +131,6 @@ messenger.jar:
|
||||||
content/messenger/dateFormat.js (base/content/dateFormat.js)
|
content/messenger/dateFormat.js (base/content/dateFormat.js)
|
||||||
content/messenger/shutdownWindow.xul (base/content/shutdownWindow.xul)
|
content/messenger/shutdownWindow.xul (base/content/shutdownWindow.xul)
|
||||||
content/messenger/shutdownWindow.js (base/content/shutdownWindow.js)
|
content/messenger/shutdownWindow.js (base/content/shutdownWindow.js)
|
||||||
#ifndef XP_MACOSX
|
|
||||||
content/messenger/newmailalert.css (base/content/newmailalert.css)
|
content/messenger/newmailalert.css (base/content/newmailalert.css)
|
||||||
content/messenger/newmailalert.js (base/content/newmailalert.js)
|
content/messenger/newmailalert.js (base/content/newmailalert.js)
|
||||||
content/messenger/newmailalert.xul (base/content/newmailalert.xul)
|
content/messenger/newmailalert.xul (base/content/newmailalert.xul)
|
||||||
#endif
|
|
||||||
|
|
|
||||||
|
|
@ -696,11 +696,7 @@ pref("mail.biff.alert.show_subject", true);
|
||||||
pref("mail.biff.alert.show_sender", true);
|
pref("mail.biff.alert.show_sender", true);
|
||||||
pref("mail.biff.alert.preview_length", 40);
|
pref("mail.biff.alert.preview_length", 40);
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
pref("mail.biff.play_sound", false);
|
|
||||||
#else
|
|
||||||
pref("mail.biff.play_sound", true);
|
pref("mail.biff.play_sound", true);
|
||||||
#endif
|
|
||||||
// 0 == default system sound, 1 == user specified wav
|
// 0 == default system sound, 1 == user specified wav
|
||||||
pref("mail.biff.play_sound.type", 0);
|
pref("mail.biff.play_sound.type", 0);
|
||||||
// _moz_mailbeep is a magic key, for the default sound.
|
// _moz_mailbeep is a magic key, for the default sound.
|
||||||
|
|
@ -710,8 +706,6 @@ pref("mail.biff.show_alert", true);
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
pref("mail.biff.show_tray_icon", true);
|
pref("mail.biff.show_tray_icon", true);
|
||||||
pref("mail.biff.show_balloon", false);
|
pref("mail.biff.show_balloon", false);
|
||||||
#elifdef XP_MACOSX
|
|
||||||
pref("mail.biff.animate_dock_icon", false);
|
|
||||||
#elifdef XP_UNIX
|
#elifdef XP_UNIX
|
||||||
pref("mail.biff.use_system_alert", false);
|
pref("mail.biff.use_system_alert", false);
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -724,13 +718,6 @@ pref("mail.biff.add_interval_jitter", true);
|
||||||
pref("mail.biff.on_new_window", true);
|
pref("mail.biff.on_new_window", true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// If true, the number used in the Mac OS X dock notification will be the
|
|
||||||
// the number of "new" messages, as per the classic Thunderbird definition.
|
|
||||||
// Defaults to false, which notifies about the number of unread messages.
|
|
||||||
pref("mail.biff.use_new_count_in_mac_dock", false);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// For feed account serverType=rss sound on biff; if true, mail.biff.play_sound.* settings are used.
|
// For feed account serverType=rss sound on biff; if true, mail.biff.play_sound.* settings are used.
|
||||||
pref("mail.feed.play_sound", false);
|
pref("mail.feed.play_sound", false);
|
||||||
|
|
||||||
|
|
@ -847,15 +834,6 @@ pref("ldap_2.servers.oe.description", "chrome://messenger/locale/addressbook/add
|
||||||
pref("ldap_2.servers.oe.dirType", 3);
|
pref("ldap_2.servers.oe.dirType", 3);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifdef XP_MACOSX
|
|
||||||
pref("ldap_2.servers.osx.uri", "moz-abosxdirectory:///");
|
|
||||||
pref("ldap_2.servers.osx.description", "chrome://messenger/locale/addressbook/addressBook.properties");
|
|
||||||
pref("ldap_2.servers.osx.dirType", 3);
|
|
||||||
pref("mail.notification.sound", "");
|
|
||||||
pref("mail.notification.count.inbox_only", true);
|
|
||||||
// Work around bug 482811 by disabling slow script warning for chrome scripts on Mac
|
|
||||||
pref("dom.max_chrome_script_run_time", 0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// gtk2 (*nix) lacks transparent/translucent drag support (bug 376238), so we
|
// gtk2 (*nix) lacks transparent/translucent drag support (bug 376238), so we
|
||||||
// want to disable it so people can see where they are dragging things.
|
// want to disable it so people can see where they are dragging things.
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,6 @@
|
||||||
MimeDefClass(MimeExternalBody, MimeExternalBodyClass,
|
MimeDefClass(MimeExternalBody, MimeExternalBodyClass,
|
||||||
mimeExternalBodyClass, &MIME_SUPERCLASS);
|
mimeExternalBodyClass, &MIME_SUPERCLASS);
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
extern MimeObjectClass mimeMultipartAppleDoubleClass;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int MimeExternalBody_initialize (MimeObject *);
|
static int MimeExternalBody_initialize (MimeObject *);
|
||||||
static void MimeExternalBody_finalize (MimeObject *);
|
static void MimeExternalBody_finalize (MimeObject *);
|
||||||
static int MimeExternalBody_parse_line (const char *, int32_t, MimeObject *);
|
static int MimeExternalBody_parse_line (const char *, int32_t, MimeObject *);
|
||||||
|
|
@ -252,12 +248,6 @@ MimeExternalBody_parse_eof (MimeObject *obj, bool abort_p)
|
||||||
status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p);
|
status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p);
|
||||||
if (status < 0) return status;
|
if (status < 0) return status;
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
if (obj->parent && mime_typep(obj->parent,
|
|
||||||
(MimeObjectClass*) &mimeMultipartAppleDoubleClass))
|
|
||||||
goto done;
|
|
||||||
#endif /* XP_MACOSX */
|
|
||||||
|
|
||||||
if (!abort_p &&
|
if (!abort_p &&
|
||||||
obj->output_p &&
|
obj->output_p &&
|
||||||
obj->options &&
|
obj->options &&
|
||||||
|
|
@ -425,10 +415,6 @@ FAIL:
|
||||||
PR_FREEIF(subj);
|
PR_FREEIF(subj);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
done:
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,19 +55,6 @@ MimeMultipartAppleDouble_parse_begin (MimeObject *obj)
|
||||||
NS_ASSERTION(obj->options->state->first_data_written_p, "first data not written");
|
NS_ASSERTION(obj->options->state->first_data_written_p, "first data not written");
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
if (obj->options && obj->options->state)
|
|
||||||
{
|
|
||||||
// obj->options->state->separator_suppressed_p = true;
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* It would be nice to not showing the resource fork links
|
|
||||||
* if we are displaying inline. But, there is no way we could
|
|
||||||
* know ahead of time that we could display the data fork and
|
|
||||||
* the data fork is always hidden on MAC platform.
|
|
||||||
*/
|
|
||||||
#endif
|
|
||||||
/* If we're writing this object as HTML, then emit a link for the
|
/* If we're writing this object as HTML, then emit a link for the
|
||||||
multipart/appledouble part (both links) that looks just like the
|
multipart/appledouble part (both links) that looks just like the
|
||||||
links that MimeExternalObject emits for external leaf parts.
|
links that MimeExternalObject emits for external leaf parts.
|
||||||
|
|
@ -156,10 +143,6 @@ GOTTA STILL DO THIS FOR QUOTING!
|
||||||
if (status < 0) return status;
|
if (status < 0) return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
done:
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -176,13 +159,8 @@ MimeMultipartAppleDouble_output_child_p(MimeObject *obj, MimeObject *child)
|
||||||
if (cont->nchildren >= 1 && cont->children[0] == child && child->content_type &&
|
if (cont->nchildren >= 1 && cont->children[0] == child && child->content_type &&
|
||||||
!PL_strcasecmp(child->content_type, APPLICATION_APPLEFILE))
|
!PL_strcasecmp(child->content_type, APPLICATION_APPLEFILE))
|
||||||
{
|
{
|
||||||
#ifdef XP_MACOSX
|
/* Don't emit the resources fork. */
|
||||||
if (obj->output_p && obj->options && obj->options->write_html_p) //output HTML
|
|
||||||
return false;
|
|
||||||
#else
|
|
||||||
/* if we are not on a Macintosh, don't emitte the resources fork at all. */
|
|
||||||
return false;
|
return false;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,6 @@
|
||||||
#include "nsMimeTypes.h"
|
#include "nsMimeTypes.h"
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
extern MimeObjectClass mimeMultipartAppleDoubleClass;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MIME_SUPERCLASS mimeContainerClass
|
#define MIME_SUPERCLASS mimeContainerClass
|
||||||
MimeDefClass(MimeMultipart, MimeMultipartClass,
|
MimeDefClass(MimeMultipart, MimeMultipartClass,
|
||||||
mimeMultipartClass, &MIME_SUPERCLASS);
|
mimeMultipartClass, &MIME_SUPERCLASS);
|
||||||
|
|
@ -492,19 +488,6 @@ MimeMultipart_create_child(MimeObject *obj)
|
||||||
{
|
{
|
||||||
status = body->clazz->parse_begin(body);
|
status = body->clazz->parse_begin(body);
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
/* if we are saving an apple double attachment, we need to set correctly the conten type of the channel */
|
|
||||||
if (mime_typep(obj, (MimeObjectClass *) &mimeMultipartAppleDoubleClass))
|
|
||||||
{
|
|
||||||
mime_stream_data *msd = (mime_stream_data *)body->options->stream_closure;
|
|
||||||
if (!body->options->write_html_p && body->content_type && !PL_strcasecmp(body->content_type, APPLICATION_APPLEFILE))
|
|
||||||
{
|
|
||||||
if (msd && msd->channel)
|
|
||||||
msd->channel->SetContentType(NS_LITERAL_CSTRING(APPLICATION_APPLEFILE));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (status < 0) return status;
|
if (status < 0) return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,11 +23,6 @@ DIRS += [
|
||||||
'news',
|
'news',
|
||||||
]
|
]
|
||||||
|
|
||||||
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
|
|
||||||
DIRS += [
|
|
||||||
'import/applemail/src',
|
|
||||||
]
|
|
||||||
|
|
||||||
if CONFIG['OS_ARCH'] == 'WINNT':
|
if CONFIG['OS_ARCH'] == 'WINNT':
|
||||||
DIRS += [ 'import/becky/src' ]
|
DIRS += [ 'import/becky/src' ]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
* vim: sw=4 ts=4 et :
|
|
||||||
*/
|
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
@ -152,13 +150,9 @@ MFBT_API void* moz_xvalloc(size_t size)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* NB: This is defined just to silence vacuous warnings about symbol
|
/* NB: This is defined just to silence vacuous warnings about symbol
|
||||||
* visibility on OS X/gcc. These symbols are force-inline and not
|
* visibility on gcc. These symbols are force-inline and not exported.
|
||||||
* exported. */
|
*/
|
||||||
#if defined(XP_MACOSX)
|
#define MOZALLOC_EXPORT_NEW
|
||||||
# define MOZALLOC_EXPORT_NEW MFBT_API
|
|
||||||
#else
|
|
||||||
# define MOZALLOC_EXPORT_NEW
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
/* vim:set ts=2 sw=2 sts=2 et cindent: */
|
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
@ -62,7 +61,7 @@ static void print_usage() {
|
||||||
"signed_input_archive.mar base_64_encoded_signature_file "
|
"signed_input_archive.mar base_64_encoded_signature_file "
|
||||||
"changed_signed_output.mar\n");
|
"changed_signed_output.mar\n");
|
||||||
printf("(i) is the index of the certificate to extract\n");
|
printf("(i) is the index of the certificate to extract\n");
|
||||||
#if defined(XP_MACOSX) || (defined(XP_WIN) && !defined(MAR_NSS))
|
#if (defined(XP_WIN) && !defined(MAR_NSS))
|
||||||
printf("Verify a MAR file:\n");
|
printf("Verify a MAR file:\n");
|
||||||
printf(" mar [-C workingDir] -D DERFilePath -v signed_archive.mar\n");
|
printf(" mar [-C workingDir] -D DERFilePath -v signed_archive.mar\n");
|
||||||
printf("At most %d signature certificate DER files are specified by "
|
printf("At most %d signature certificate DER files are specified by "
|
||||||
|
|
@ -126,11 +125,10 @@ int main(int argc, char **argv) {
|
||||||
#if !defined(NO_SIGN_VERIFY)
|
#if !defined(NO_SIGN_VERIFY)
|
||||||
uint32_t fileSizes[MAX_SIGNATURES];
|
uint32_t fileSizes[MAX_SIGNATURES];
|
||||||
const uint8_t* certBuffers[MAX_SIGNATURES];
|
const uint8_t* certBuffers[MAX_SIGNATURES];
|
||||||
#if ((!defined(MAR_NSS) && defined(XP_WIN)) || defined(XP_MACOSX)) || \
|
#if defined(XP_WIN) && !defined(MAR_NSS)
|
||||||
((defined(XP_WIN) || defined(XP_MACOSX)) && !defined(MAR_NSS))
|
|
||||||
char* DERFilePaths[MAX_SIGNATURES];
|
char* DERFilePaths[MAX_SIGNATURES];
|
||||||
#endif
|
#endif
|
||||||
#if (!defined(XP_WIN) && !defined(XP_MACOSX)) || defined(MAR_NSS)
|
#if !defined(XP_WIN) || defined(MAR_NSS)
|
||||||
CERTCertificate* certs[MAX_SIGNATURES];
|
CERTCertificate* certs[MAX_SIGNATURES];
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -139,8 +137,7 @@ int main(int argc, char **argv) {
|
||||||
#if defined(XP_WIN) && !defined(MAR_NSS) && !defined(NO_SIGN_VERIFY)
|
#if defined(XP_WIN) && !defined(MAR_NSS) && !defined(NO_SIGN_VERIFY)
|
||||||
memset((void*)certBuffers, 0, sizeof(certBuffers));
|
memset((void*)certBuffers, 0, sizeof(certBuffers));
|
||||||
#endif
|
#endif
|
||||||
#if !defined(NO_SIGN_VERIFY) && ((!defined(MAR_NSS) && defined(XP_WIN)) || \
|
#if !defined(NO_SIGN_VERIFY) && (!defined(MAR_NSS) && defined(XP_WIN))
|
||||||
defined(XP_MACOSX))
|
|
||||||
memset(DERFilePaths, 0, sizeof(DERFilePaths));
|
memset(DERFilePaths, 0, sizeof(DERFilePaths));
|
||||||
memset(fileSizes, 0, sizeof(fileSizes));
|
memset(fileSizes, 0, sizeof(fileSizes));
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -171,8 +168,7 @@ int main(int argc, char **argv) {
|
||||||
argv += 2;
|
argv += 2;
|
||||||
argc -= 2;
|
argc -= 2;
|
||||||
}
|
}
|
||||||
#if !defined(NO_SIGN_VERIFY) && ((!defined(MAR_NSS) && defined(XP_WIN)) || \
|
#if !defined(NO_SIGN_VERIFY) && (!defined(MAR_NSS) && defined(XP_WIN))
|
||||||
defined(XP_MACOSX))
|
|
||||||
/* -D DERFilePath, also matches -D[index] DERFilePath
|
/* -D DERFilePath, also matches -D[index] DERFilePath
|
||||||
We allow an index for verifying to be symmetric
|
We allow an index for verifying to be symmetric
|
||||||
with the import and export command line arguments. */
|
with the import and export command line arguments. */
|
||||||
|
|
@ -330,7 +326,7 @@ int main(int argc, char **argv) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (!defined(XP_WIN) && !defined(XP_MACOSX)) || defined(MAR_NSS)
|
#if !defined(XP_WIN) || defined(MAR_NSS)
|
||||||
if (!NSSConfigDir || certCount == 0) {
|
if (!NSSConfigDir || certCount == 0) {
|
||||||
print_usage();
|
print_usage();
|
||||||
return -1;
|
return -1;
|
||||||
|
|
@ -344,7 +340,7 @@ int main(int argc, char **argv) {
|
||||||
|
|
||||||
rv = 0;
|
rv = 0;
|
||||||
for (k = 0; k < certCount; ++k) {
|
for (k = 0; k < certCount; ++k) {
|
||||||
#if (defined(XP_WIN) || defined(XP_MACOSX)) && !defined(MAR_NSS)
|
#if defined(XP_WIN) && !defined(MAR_NSS)
|
||||||
rv = mar_read_entire_file(DERFilePaths[k], MAR_MAX_CERT_SIZE,
|
rv = mar_read_entire_file(DERFilePaths[k], MAR_MAX_CERT_SIZE,
|
||||||
&certBuffers[k], &fileSizes[k]);
|
&certBuffers[k], &fileSizes[k]);
|
||||||
|
|
||||||
|
|
@ -384,7 +380,7 @@ int main(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (k = 0; k < certCount; ++k) {
|
for (k = 0; k < certCount; ++k) {
|
||||||
#if (defined(XP_WIN) || defined(XP_MACOSX)) && !defined(MAR_NSS)
|
#if defined(XP_WIN) && !defined(MAR_NSS)
|
||||||
free((void*)certBuffers[k]);
|
free((void*)certBuffers[k]);
|
||||||
#else
|
#else
|
||||||
/* certBuffers[k] is owned by certs[k] so don't free it */
|
/* certBuffers[k] is owned by certs[k] so don't free it */
|
||||||
|
|
@ -402,7 +398,7 @@ int main(int argc, char **argv) {
|
||||||
" no signature to verify.\n");
|
" no signature to verify.\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if (!defined(XP_WIN) && !defined(XP_MACOSX)) || defined(MAR_NSS)
|
#if !defined(XP_WIN) || defined(MAR_NSS)
|
||||||
(void) NSS_Shutdown();
|
(void) NSS_Shutdown();
|
||||||
#endif
|
#endif
|
||||||
return rv ? -1 : 0;
|
return rv ? -1 : 0;
|
||||||
|
|
|
||||||
|
|
@ -57,54 +57,7 @@ CryptoX_Result NSS_VerifySignature(VFYContext * const *ctx ,
|
||||||
#define CryptoX_FreeCertificate(cert) \
|
#define CryptoX_FreeCertificate(cert) \
|
||||||
CERT_DestroyCertificate(*cert)
|
CERT_DestroyCertificate(*cert)
|
||||||
|
|
||||||
#elif XP_MACOSX
|
#if defined(XP_WIN)
|
||||||
|
|
||||||
#define CryptoX_InvalidHandleValue NULL
|
|
||||||
#define CryptoX_ProviderHandle void*
|
|
||||||
#define CryptoX_SignatureHandle void*
|
|
||||||
#define CryptoX_PublicKey void*
|
|
||||||
#define CryptoX_Certificate void*
|
|
||||||
|
|
||||||
// Forward-declare Objective-C functions implemented in MacVerifyCrypto.mm.
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
CryptoX_Result CryptoMac_InitCryptoProvider();
|
|
||||||
CryptoX_Result CryptoMac_VerifyBegin(CryptoX_SignatureHandle* aInputData);
|
|
||||||
CryptoX_Result CryptoMac_VerifyUpdate(CryptoX_SignatureHandle* aInputData,
|
|
||||||
void* aBuf, unsigned int aLen);
|
|
||||||
CryptoX_Result CryptoMac_LoadPublicKey(const unsigned char* aCertData,
|
|
||||||
unsigned int aDataSize,
|
|
||||||
CryptoX_PublicKey* aPublicKey);
|
|
||||||
CryptoX_Result CryptoMac_VerifySignature(CryptoX_SignatureHandle* aInputData,
|
|
||||||
CryptoX_PublicKey* aPublicKey,
|
|
||||||
const unsigned char* aSignature,
|
|
||||||
unsigned int aSignatureLen);
|
|
||||||
void CryptoMac_FreeSignatureHandle(CryptoX_SignatureHandle* aInputData);
|
|
||||||
void CryptoMac_FreePublicKey(CryptoX_PublicKey* aPublicKey);
|
|
||||||
#ifdef __cplusplus
|
|
||||||
} // extern "C"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define CryptoX_InitCryptoProvider(aProviderHandle) \
|
|
||||||
CryptoMac_InitCryptoProvider()
|
|
||||||
#define CryptoX_VerifyBegin(aCryptoHandle, aInputData, aPublicKey) \
|
|
||||||
CryptoMac_VerifyBegin(aInputData)
|
|
||||||
#define CryptoX_VerifyUpdate(aInputData, aBuf, aLen) \
|
|
||||||
CryptoMac_VerifyUpdate(aInputData, aBuf, aLen)
|
|
||||||
#define CryptoX_LoadPublicKey(aProviderHandle, aCertData, aDataSize, \
|
|
||||||
aPublicKey) \
|
|
||||||
CryptoMac_LoadPublicKey(aCertData, aDataSize, aPublicKey)
|
|
||||||
#define CryptoX_VerifySignature(aInputData, aPublicKey, aSignature, \
|
|
||||||
aSignatureLen) \
|
|
||||||
CryptoMac_VerifySignature(aInputData, aPublicKey, aSignature, aSignatureLen)
|
|
||||||
#define CryptoX_FreeSignatureHandle(aInputData) \
|
|
||||||
CryptoMac_FreeSignatureHandle(aInputData)
|
|
||||||
#define CryptoX_FreePublicKey(aPublicKey) \
|
|
||||||
CryptoMac_FreePublicKey(aPublicKey)
|
|
||||||
#define CryptoX_FreeCertificate(aCertificate)
|
|
||||||
|
|
||||||
#elif defined(XP_WIN)
|
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <wincrypt.h>
|
#include <wincrypt.h>
|
||||||
|
|
|
||||||
|
|
@ -1299,9 +1299,7 @@ static nsresult pref_InitInitialObjects()
|
||||||
|
|
||||||
/* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */
|
/* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */
|
||||||
static const char* specialFiles[] = {
|
static const char* specialFiles[] = {
|
||||||
#if defined(XP_MACOSX)
|
#if defined(XP_WIN)
|
||||||
"macprefs.js"
|
|
||||||
#elif defined(XP_WIN)
|
|
||||||
"winpref.js"
|
"winpref.js"
|
||||||
#elif defined(XP_UNIX)
|
#elif defined(XP_UNIX)
|
||||||
"unix.js"
|
"unix.js"
|
||||||
|
|
|
||||||
|
|
@ -390,11 +390,7 @@ pref("media.wmf.disable-d3d11-for-dlls", "igd11dxva64.dll: 20.19.15.4463, 20.19.
|
||||||
pref("media.wmf.disable-d3d9-for-dlls", "igdumd64.dll: 8.15.10.2189, 8.15.10.2119, 8.15.10.2104, 8.15.10.2102, 8.771.1.0; atiumd64.dll: 7.14.10.833, 7.14.10.867, 7.14.10.885, 7.14.10.903, 7.14.10.911, 8.14.10.768, 9.14.10.1001, 9.14.10.1017, 9.14.10.1080, 9.14.10.1128, 9.14.10.1162, 9.14.10.1171, 9.14.10.1183, 9.14.10.1197, 9.14.10.945, 9.14.10.972, 9.14.10.984, 9.14.10.996");
|
pref("media.wmf.disable-d3d9-for-dlls", "igdumd64.dll: 8.15.10.2189, 8.15.10.2119, 8.15.10.2104, 8.15.10.2102, 8.771.1.0; atiumd64.dll: 7.14.10.833, 7.14.10.867, 7.14.10.885, 7.14.10.903, 7.14.10.911, 8.14.10.768, 9.14.10.1001, 9.14.10.1017, 9.14.10.1080, 9.14.10.1128, 9.14.10.1162, 9.14.10.1171, 9.14.10.1183, 9.14.10.1197, 9.14.10.945, 9.14.10.972, 9.14.10.984, 9.14.10.996");
|
||||||
#endif
|
#endif
|
||||||
#if defined(MOZ_FFMPEG)
|
#if defined(MOZ_FFMPEG)
|
||||||
#if defined(XP_MACOSX)
|
|
||||||
pref("media.ffmpeg.enabled", false);
|
|
||||||
#else
|
|
||||||
pref("media.ffmpeg.enabled", true);
|
pref("media.ffmpeg.enabled", true);
|
||||||
#endif
|
|
||||||
pref("media.libavcodec.allow-obsolete", false);
|
pref("media.libavcodec.allow-obsolete", false);
|
||||||
#endif
|
#endif
|
||||||
#if defined(MOZ_FFVPX)
|
#if defined(MOZ_FFVPX)
|
||||||
|
|
@ -526,11 +522,7 @@ pref("media.getusermedia.agc", 1);
|
||||||
// capture_delay: Adjustments for OS-specific input delay (lower bound)
|
// capture_delay: Adjustments for OS-specific input delay (lower bound)
|
||||||
// playout_delay: Adjustments for OS-specific AudioStream+cubeb+output delay (lower bound)
|
// playout_delay: Adjustments for OS-specific AudioStream+cubeb+output delay (lower bound)
|
||||||
// full_duplex: enable cubeb full-duplex capture/playback
|
// full_duplex: enable cubeb full-duplex capture/playback
|
||||||
#if defined(XP_MACOSX)
|
#if defined(XP_WIN)
|
||||||
pref("media.peerconnection.capture_delay", 50);
|
|
||||||
pref("media.getusermedia.playout_delay", 10);
|
|
||||||
pref("media.navigator.audio.full_duplex", false);
|
|
||||||
#elif defined(XP_WIN)
|
|
||||||
pref("media.peerconnection.capture_delay", 50);
|
pref("media.peerconnection.capture_delay", 50);
|
||||||
pref("media.getusermedia.playout_delay", 40);
|
pref("media.getusermedia.playout_delay", 40);
|
||||||
pref("media.navigator.audio.full_duplex", false);
|
pref("media.navigator.audio.full_duplex", false);
|
||||||
|
|
@ -567,7 +559,7 @@ pref("media.mediasource.enabled", true);
|
||||||
|
|
||||||
pref("media.mediasource.mp4.enabled", true);
|
pref("media.mediasource.mp4.enabled", true);
|
||||||
|
|
||||||
#if defined(XP_WIN) || defined(XP_MACOSX)
|
#if defined(XP_WIN)
|
||||||
pref("media.mediasource.webm.enabled", false);
|
pref("media.mediasource.webm.enabled", false);
|
||||||
#else
|
#else
|
||||||
pref("media.mediasource.webm.enabled", true);
|
pref("media.mediasource.webm.enabled", true);
|
||||||
|
|
@ -695,14 +687,6 @@ pref("apz.scale_repaint_delay_ms", 500);
|
||||||
pref("apz.desktop.enabled", false);
|
pref("apz.desktop.enabled", false);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// Whether to run in native HiDPI mode on machines with "Retina"/HiDPI display;
|
|
||||||
// <= 0 : hidpi mode disabled, display will just use pixel-based upscaling
|
|
||||||
// == 1 : hidpi supported if all screens share the same backingScaleFactor
|
|
||||||
// >= 2 : hidpi supported even with mixed backingScaleFactors (somewhat broken)
|
|
||||||
pref("gfx.hidpi.enabled", 2);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Use containerless scrolling for now.
|
// Use containerless scrolling for now.
|
||||||
pref("layout.scroll.root-frame-containers", false);
|
pref("layout.scroll.root-frame-containers", false);
|
||||||
|
|
||||||
|
|
@ -717,8 +701,8 @@ pref("gfx.perf-warnings.enabled", false);
|
||||||
// Color Management System
|
// Color Management System
|
||||||
// 0 = Off, 1 = All Images, 2 = Tagged Images Only.
|
// 0 = Off, 1 = All Images, 2 = Tagged Images Only.
|
||||||
// See eCMSMode in gfx/thebes/gfxPlatform.h
|
// See eCMSMode in gfx/thebes/gfxPlatform.h
|
||||||
// Enabled by default on Windows and Mac, disabled elsewhere
|
// Enabled by default on Windows, disabled elsewhere
|
||||||
#if defined(XP_WIN) || defined(XP_MACOSX)
|
#if defined(XP_WIN)
|
||||||
pref("gfx.color_management.mode", 2);
|
pref("gfx.color_management.mode", 2);
|
||||||
#else
|
#else
|
||||||
pref("gfx.color_management.mode", 0);
|
pref("gfx.color_management.mode", 0);
|
||||||
|
|
@ -776,17 +760,10 @@ pref("gfx.font_rendering.opentype_svg.enabled", true);
|
||||||
pref("gfx.canvas.azure.backends", "direct2d1.1,skia,cairo");
|
pref("gfx.canvas.azure.backends", "direct2d1.1,skia,cairo");
|
||||||
pref("gfx.content.azure.backends", "direct2d1.1,cairo");
|
pref("gfx.content.azure.backends", "direct2d1.1,cairo");
|
||||||
#else
|
#else
|
||||||
#ifdef XP_MACOSX
|
|
||||||
pref("gfx.content.azure.backends", "cg");
|
|
||||||
pref("gfx.canvas.azure.backends", "skia,cg");
|
|
||||||
// Accelerated cg canvas where available (10.7+)
|
|
||||||
pref("gfx.canvas.azure.accelerated", true);
|
|
||||||
#else
|
|
||||||
// Linux etc.
|
// Linux etc.
|
||||||
pref("gfx.canvas.azure.backends", "skia,cairo");
|
pref("gfx.canvas.azure.backends", "skia,cairo");
|
||||||
pref("gfx.content.azure.backends", "cairo");
|
pref("gfx.content.azure.backends", "cairo");
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
pref("gfx.canvas.skiagl.dynamic-cache", true);
|
pref("gfx.canvas.skiagl.dynamic-cache", true);
|
||||||
|
|
||||||
|
|
@ -808,7 +785,6 @@ pref("accessibility.warn_on_browsewithcaret", true);
|
||||||
|
|
||||||
pref("accessibility.browsewithcaret_shortcut.enabled", true);
|
pref("accessibility.browsewithcaret_shortcut.enabled", true);
|
||||||
|
|
||||||
#ifndef XP_MACOSX
|
|
||||||
// Tab focus model bit field:
|
// Tab focus model bit field:
|
||||||
// 1 focuses text controls, 2 focuses other form elements, 4 adds links.
|
// 1 focuses text controls, 2 focuses other form elements, 4 adds links.
|
||||||
// Most users will want 1, 3, or 7.
|
// Most users will want 1, 3, or 7.
|
||||||
|
|
@ -816,15 +792,11 @@ pref("accessibility.browsewithcaret_shortcut.enabled", true);
|
||||||
// unless accessibility.tabfocus is set by the user.
|
// unless accessibility.tabfocus is set by the user.
|
||||||
pref("accessibility.tabfocus", 7);
|
pref("accessibility.tabfocus", 7);
|
||||||
pref("accessibility.tabfocus_applies_to_xul", false);
|
pref("accessibility.tabfocus_applies_to_xul", false);
|
||||||
#else
|
|
||||||
// Only on mac tabfocus is expected to handle UI widgets as well as web content
|
|
||||||
pref("accessibility.tabfocus_applies_to_xul", true);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// We follow the "Click in the scrollbar to:" system preference on OS X and
|
// We follow the "Click in the scrollbar to:" system preference on OS X and
|
||||||
// "gtk-primary-button-warps-slider" property with GTK (since 2.24 / 3.6),
|
// "gtk-primary-button-warps-slider" property with GTK (since 2.24 / 3.6),
|
||||||
// unless this preference is explicitly set.
|
// unless this preference is explicitly set.
|
||||||
#if !defined(XP_MACOSX) && !defined(MOZ_WIDGET_GTK)
|
#if !defined(MOZ_WIDGET_GTK)
|
||||||
pref("ui.scrollToClick", 0);
|
pref("ui.scrollToClick", 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -888,11 +860,7 @@ pref("accessibility.typeaheadfind.timeout", 4000);
|
||||||
pref("accessibility.typeaheadfind.enabletimeout", true);
|
pref("accessibility.typeaheadfind.enabletimeout", true);
|
||||||
pref("accessibility.typeaheadfind.soundURL", "beep");
|
pref("accessibility.typeaheadfind.soundURL", "beep");
|
||||||
pref("accessibility.typeaheadfind.enablesound", true);
|
pref("accessibility.typeaheadfind.enablesound", true);
|
||||||
#ifdef XP_MACOSX
|
|
||||||
pref("accessibility.typeaheadfind.prefillwithselection", false);
|
|
||||||
#else
|
|
||||||
pref("accessibility.typeaheadfind.prefillwithselection", true);
|
pref("accessibility.typeaheadfind.prefillwithselection", true);
|
||||||
#endif
|
|
||||||
pref("accessibility.typeaheadfind.matchesCountLimit", 1000);
|
pref("accessibility.typeaheadfind.matchesCountLimit", 1000);
|
||||||
pref("findbar.highlightAll", false);
|
pref("findbar.highlightAll", false);
|
||||||
pref("findbar.modalHighlight", false);
|
pref("findbar.modalHighlight", false);
|
||||||
|
|
@ -1111,7 +1079,7 @@ pref("print.print_edge_right", 0);
|
||||||
pref("print.print_edge_bottom", 0);
|
pref("print.print_edge_bottom", 0);
|
||||||
|
|
||||||
// Print via the parent process. This is only used when e10s is enabled.
|
// Print via the parent process. This is only used when e10s is enabled.
|
||||||
#if defined(XP_WIN) || defined(XP_MACOSX)
|
#if defined(XP_WIN)
|
||||||
pref("print.print_via_parent", true);
|
pref("print.print_via_parent", true);
|
||||||
#else
|
#else
|
||||||
pref("print.print_via_parent", false);
|
pref("print.print_via_parent", false);
|
||||||
|
|
@ -1376,9 +1344,6 @@ pref("network.protocol-handler.external.ms-help", false);
|
||||||
pref("network.protocol-handler.external.res", false);
|
pref("network.protocol-handler.external.res", false);
|
||||||
pref("network.protocol-handler.external.shell", false);
|
pref("network.protocol-handler.external.shell", false);
|
||||||
pref("network.protocol-handler.external.vnd.ms.radio", false);
|
pref("network.protocol-handler.external.vnd.ms.radio", false);
|
||||||
#ifdef XP_MACOSX
|
|
||||||
pref("network.protocol-handler.external.help", false);
|
|
||||||
#endif
|
|
||||||
pref("network.protocol-handler.external.disk", false);
|
pref("network.protocol-handler.external.disk", false);
|
||||||
pref("network.protocol-handler.external.disks", false);
|
pref("network.protocol-handler.external.disks", false);
|
||||||
pref("network.protocol-handler.external.afp", false);
|
pref("network.protocol-handler.external.afp", false);
|
||||||
|
|
@ -2554,13 +2519,7 @@ pref("layout.css.text-combine-upright-digits.enabled", false);
|
||||||
// Is support for object-fit and object-position enabled?
|
// Is support for object-fit and object-position enabled?
|
||||||
pref("layout.css.object-fit-and-position.enabled", true);
|
pref("layout.css.object-fit-and-position.enabled", true);
|
||||||
|
|
||||||
// Is -moz-osx-font-smoothing enabled?
|
|
||||||
// Only supported in OSX builds
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
pref("layout.css.osx-font-smoothing.enabled", true);
|
|
||||||
#else
|
|
||||||
pref("layout.css.osx-font-smoothing.enabled", false);
|
pref("layout.css.osx-font-smoothing.enabled", false);
|
||||||
#endif
|
|
||||||
|
|
||||||
// Is support for the CSS-wide "unset" value enabled?
|
// Is support for the CSS-wide "unset" value enabled?
|
||||||
pref("layout.css.unset-value.enabled", true);
|
pref("layout.css.unset-value.enabled", true);
|
||||||
|
|
@ -3572,328 +3531,6 @@ pref("ui.osk.debug.keyboardDisplayReason", "");
|
||||||
# XP_WIN
|
# XP_WIN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// Mac specific preference defaults
|
|
||||||
pref("browser.drag_out_of_frame_style", 1);
|
|
||||||
pref("ui.key.saveLink.shift", false); // true = shift, false = meta
|
|
||||||
|
|
||||||
pref("font.name-list.emoji", "Apple Color Emoji");
|
|
||||||
|
|
||||||
// default fonts (in UTF8 and using canonical names)
|
|
||||||
// to determine canonical font names, use a debug build and
|
|
||||||
// enable NSPR logging for module fontInfoLog:5
|
|
||||||
// canonical names immediately follow '(fontinit) family:' in the log
|
|
||||||
|
|
||||||
pref("font.name.serif.ar", "Al Bayan");
|
|
||||||
pref("font.name.sans-serif.ar", "Geeza Pro");
|
|
||||||
pref("font.name.monospace.ar", "Geeza Pro");
|
|
||||||
pref("font.name.cursive.ar", "DecoType Naskh");
|
|
||||||
pref("font.name.fantasy.ar", "KufiStandardGK");
|
|
||||||
pref("font.name-list.serif.ar", "Al Bayan");
|
|
||||||
pref("font.name-list.sans-serif.ar", "Geeza Pro");
|
|
||||||
pref("font.name-list.monospace.ar", "Geeza Pro");
|
|
||||||
pref("font.name-list.cursive.ar", "DecoType Naskh");
|
|
||||||
pref("font.name-list.fantasy.ar", "KufiStandardGK");
|
|
||||||
|
|
||||||
pref("font.name.serif.el", "Times");
|
|
||||||
pref("font.name.sans-serif.el", "Helvetica");
|
|
||||||
pref("font.name.monospace.el", "Courier New");
|
|
||||||
pref("font.name.cursive.el", "Lucida Grande");
|
|
||||||
pref("font.name.fantasy.el", "Lucida Grande");
|
|
||||||
pref("font.name-list.serif.el", "Times,Times New Roman");
|
|
||||||
pref("font.name-list.sans-serif.el", "Helvetica,Lucida Grande");
|
|
||||||
pref("font.name-list.monospace.el", "Courier New,Lucida Grande");
|
|
||||||
pref("font.name-list.cursive.el", "Times,Lucida Grande");
|
|
||||||
pref("font.name-list.fantasy.el", "Times,Lucida Grande");
|
|
||||||
|
|
||||||
pref("font.name.serif.he", "Times New Roman");
|
|
||||||
pref("font.name.sans-serif.he", "Arial");
|
|
||||||
pref("font.name.monospace.he", "Courier New");
|
|
||||||
pref("font.name.cursive.he", "Times New Roman");
|
|
||||||
pref("font.name.fantasy.he", "Times New Roman");
|
|
||||||
pref("font.name-list.serif.he", "Times New Roman");
|
|
||||||
pref("font.name-list.sans-serif.he", "Arial");
|
|
||||||
pref("font.name-list.monospace.he", "Courier New");
|
|
||||||
pref("font.name-list.cursive.he", "Times New Roman");
|
|
||||||
pref("font.name-list.fantasy.he", "Times New Roman");
|
|
||||||
|
|
||||||
pref("font.name.serif.ja", "Hiragino Mincho ProN");
|
|
||||||
pref("font.name.sans-serif.ja", "Hiragino Kaku Gothic ProN");
|
|
||||||
pref("font.name.monospace.ja", "Osaka-Mono");
|
|
||||||
pref("font.name-list.serif.ja", "Hiragino Mincho ProN,Hiragino Mincho Pro");
|
|
||||||
pref("font.name-list.sans-serif.ja", "Hiragino Kaku Gothic ProN,Hiragino Kaku Gothic Pro");
|
|
||||||
pref("font.name-list.monospace.ja", "Osaka-Mono");
|
|
||||||
|
|
||||||
pref("font.name.serif.ko", "AppleMyungjo");
|
|
||||||
pref("font.name.sans-serif.ko", "Apple SD Gothic Neo");
|
|
||||||
pref("font.name.monospace.ko", "Apple SD Gothic Neo");
|
|
||||||
pref("font.name-list.serif.ko", "AppleMyungjo");
|
|
||||||
pref("font.name-list.sans-serif.ko", "Apple SD Gothic Neo,AppleGothic");
|
|
||||||
pref("font.name-list.monospace.ko", "Apple SD Gothic Neo,AppleGothic");
|
|
||||||
|
|
||||||
pref("font.name.serif.th", "Thonburi");
|
|
||||||
pref("font.name.sans-serif.th", "Thonburi");
|
|
||||||
pref("font.name.monospace.th", "Ayuthaya");
|
|
||||||
pref("font.name-list.serif.th", "Thonburi");
|
|
||||||
pref("font.name-list.sans-serif.th", "Thonburi");
|
|
||||||
pref("font.name-list.monospace.th", "Ayuthaya");
|
|
||||||
|
|
||||||
pref("font.name.serif.x-armn", "Mshtakan");
|
|
||||||
pref("font.name.sans-serif.x-armn", "Mshtakan");
|
|
||||||
pref("font.name.monospace.x-armn", "Mshtakan");
|
|
||||||
pref("font.name-list.serif.x-armn", "Mshtakan");
|
|
||||||
pref("font.name-list.sans-serif.x-armn", "Mshtakan");
|
|
||||||
pref("font.name-list.monospace.x-armn", "Mshtakan");
|
|
||||||
|
|
||||||
// SolaimanLipi, Rupali http://ekushey.org/?page/mac_download
|
|
||||||
pref("font.name.serif.x-beng", "Bangla MN");
|
|
||||||
pref("font.name.sans-serif.x-beng", "Bangla Sangam MN");
|
|
||||||
pref("font.name.monospace.x-beng", "Bangla Sangam MN");
|
|
||||||
pref("font.name-list.serif.x-beng", "Bangla MN");
|
|
||||||
pref("font.name-list.sans-serif.x-beng", "Bangla Sangam MN");
|
|
||||||
pref("font.name-list.monospace.x-beng", "Bangla Sangam MN");
|
|
||||||
|
|
||||||
pref("font.name.serif.x-cans", "Euphemia UCAS");
|
|
||||||
pref("font.name.sans-serif.x-cans", "Euphemia UCAS");
|
|
||||||
pref("font.name.monospace.x-cans", "Euphemia UCAS");
|
|
||||||
pref("font.name-list.serif.x-cans", "Euphemia UCAS");
|
|
||||||
pref("font.name-list.sans-serif.x-cans", "Euphemia UCAS");
|
|
||||||
pref("font.name-list.monospace.x-cans", "Euphemia UCAS");
|
|
||||||
|
|
||||||
pref("font.name.serif.x-cyrillic", "Times");
|
|
||||||
pref("font.name.sans-serif.x-cyrillic", "Helvetica");
|
|
||||||
pref("font.name.monospace.x-cyrillic", "Monaco");
|
|
||||||
pref("font.name.cursive.x-cyrillic", "Geneva");
|
|
||||||
pref("font.name.fantasy.x-cyrillic", "Charcoal CY");
|
|
||||||
pref("font.name-list.serif.x-cyrillic", "Times,Times New Roman");
|
|
||||||
pref("font.name-list.sans-serif.x-cyrillic", "Helvetica,Arial");
|
|
||||||
pref("font.name-list.monospace.x-cyrillic", "Monaco,Courier New");
|
|
||||||
pref("font.name-list.cursive.x-cyrillic", "Geneva");
|
|
||||||
pref("font.name-list.fantasy.x-cyrillic", "Charcoal CY");
|
|
||||||
|
|
||||||
pref("font.name.serif.x-devanagari", "Devanagari MT");
|
|
||||||
pref("font.name.sans-serif.x-devanagari", "Devanagari Sangam MN");
|
|
||||||
pref("font.name.monospace.x-devanagari", "Devanagari Sangam MN");
|
|
||||||
pref("font.name-list.serif.x-devanagari", "Devanagari MT");
|
|
||||||
pref("font.name-list.sans-serif.x-devanagari", "Devanagari Sangam MN,Devanagari MT");
|
|
||||||
pref("font.name-list.monospace.x-devanagari", "Devanagari Sangam MN,Devanagari MT");
|
|
||||||
|
|
||||||
// Abyssinica SIL http://scripts.sil.org/AbyssinicaSIL_Download
|
|
||||||
pref("font.name.serif.x-ethi", "Kefa");
|
|
||||||
pref("font.name.sans-serif.x-ethi", "Kefa");
|
|
||||||
pref("font.name.monospace.x-ethi", "Kefa");
|
|
||||||
pref("font.name-list.serif.x-ethi", "Kefa,Abyssinica SIL");
|
|
||||||
pref("font.name-list.sans-serif.x-ethi", "Kefa,Abyssinica SIL");
|
|
||||||
pref("font.name-list.monospace.x-ethi", "Kefa,Abyssinica SIL");
|
|
||||||
|
|
||||||
// no suitable fonts for georgian ship with mac os x
|
|
||||||
// however some can be freely downloaded
|
|
||||||
// TITUS Cyberbit Basic http://titus.fkidg1.uni-frankfurt.de/unicode/tituut.asp
|
|
||||||
// Zuzumbo http://homepage.mac.com/rsiradze/FileSharing91.html
|
|
||||||
pref("font.name.serif.x-geor", "TITUS Cyberbit Basic");
|
|
||||||
pref("font.name.sans-serif.x-geor", "Zuzumbo");
|
|
||||||
pref("font.name.monospace.x-geor", "Zuzumbo");
|
|
||||||
pref("font.name-list.serif.x-geor", "TITUS Cyberbit Basic");
|
|
||||||
pref("font.name-list.sans-serif.x-geor", "Zuzumbo");
|
|
||||||
pref("font.name-list.monospace.x-geor", "Zuzumbo");
|
|
||||||
|
|
||||||
pref("font.name.serif.x-gujr", "Gujarati MT");
|
|
||||||
pref("font.name.sans-serif.x-gujr", "Gujarati Sangam MN");
|
|
||||||
pref("font.name.monospace.x-gujr", "Gujarati Sangam MN");
|
|
||||||
pref("font.name-list.serif.x-gujr", "Gujarati MT");
|
|
||||||
pref("font.name-list.sans-serif.x-gujr", "Gujarati Sangam MN,Gujarati MT");
|
|
||||||
pref("font.name-list.monospace.x-gujr", "Gujarati Sangam MN,Gujarati MT");
|
|
||||||
|
|
||||||
pref("font.name.serif.x-guru", "Gurmukhi MT");
|
|
||||||
pref("font.name.sans-serif.x-guru", "Gurmukhi MT");
|
|
||||||
pref("font.name.monospace.x-guru", "Gurmukhi MT");
|
|
||||||
pref("font.name-list.serif.x-guru", "Gurmukhi MT");
|
|
||||||
pref("font.name-list.sans-serif.x-guru", "Gurmukhi MT");
|
|
||||||
pref("font.name-list.monospace.x-guru", "Gurmukhi MT");
|
|
||||||
|
|
||||||
pref("font.name.serif.x-khmr", "Khmer MN");
|
|
||||||
pref("font.name.sans-serif.x-khmr", "Khmer Sangam MN");
|
|
||||||
pref("font.name.monospace.x-khmr", "Khmer Sangam MN");
|
|
||||||
pref("font.name-list.serif.x-khmr", "Khmer MN");
|
|
||||||
pref("font.name-list.sans-serif.x-khmr", "Khmer Sangam MN");
|
|
||||||
pref("font.name-list.monospace.x-khmr", "Khmer Sangam MN");
|
|
||||||
|
|
||||||
pref("font.name.serif.x-mlym", "Malayalam MN");
|
|
||||||
pref("font.name.sans-serif.x-mlym", "Malayalam Sangam MN");
|
|
||||||
pref("font.name.monospace.x-mlym", "Malayalam Sangam MN");
|
|
||||||
pref("font.name-list.serif.x-mlym", "Malayalam MN");
|
|
||||||
pref("font.name-list.sans-serif.x-mlym", "Malayalam Sangam MN");
|
|
||||||
pref("font.name-list.monospace.x-mlym", "Malayalam Sangam MN");
|
|
||||||
|
|
||||||
pref("font.name.serif.x-orya", "Oriya MN");
|
|
||||||
pref("font.name.sans-serif.x-orya", "Oriya Sangam MN");
|
|
||||||
pref("font.name.monospace.x-orya", "Oriya Sangam MN");
|
|
||||||
pref("font.name-list.serif.x-orya", "Oriya MN");
|
|
||||||
pref("font.name-list.sans-serif.x-orya", "Oriya Sangam MN");
|
|
||||||
pref("font.name-list.monospace.x-orya", "Oriya Sangam MN");
|
|
||||||
|
|
||||||
// Pothana http://web.nickshanks.com/typography/telugu/
|
|
||||||
pref("font.name.serif.x-telu", "Telugu MN");
|
|
||||||
pref("font.name.sans-serif.x-telu", "Telugu Sangam MN");
|
|
||||||
pref("font.name.monospace.x-telu", "Telugu Sangam MN");
|
|
||||||
pref("font.name-list.serif.x-telu", "Telugu MN,Pothana");
|
|
||||||
pref("font.name-list.sans-serif.x-telu", "Telugu Sangam MN,Pothana");
|
|
||||||
pref("font.name-list.monospace.x-telu", "Telugu Sangam MN,Pothana");
|
|
||||||
|
|
||||||
// Kedage http://web.nickshanks.com/typography/kannada/
|
|
||||||
pref("font.name.serif.x-knda", "Kannada MN");
|
|
||||||
pref("font.name.sans-serif.x-knda", "Kannada Sangam MN");
|
|
||||||
pref("font.name.monospace.x-knda", "Kannada Sangam MN");
|
|
||||||
pref("font.name-list.serif.x-knda", "Kannada MN,Kedage");
|
|
||||||
pref("font.name-list.sans-serif.x-knda", "Kannada Sangam MN,Kedage");
|
|
||||||
pref("font.name-list.monospace.x-knda", "Kannada Sangam MN,Kedage");
|
|
||||||
|
|
||||||
pref("font.name.serif.x-sinh", "Sinhala MN");
|
|
||||||
pref("font.name.sans-serif.x-sinh", "Sinhala Sangam MN");
|
|
||||||
pref("font.name.monospace.x-sinh", "Sinhala Sangam MN");
|
|
||||||
pref("font.name-list.serif.x-sinh", "Sinhala MN");
|
|
||||||
pref("font.name-list.sans-serif.x-sinh", "Sinhala Sangam MN");
|
|
||||||
pref("font.name-list.monospace.x-sinh", "Sinhala Sangam MN");
|
|
||||||
|
|
||||||
pref("font.name.serif.x-tamil", "InaiMathi");
|
|
||||||
pref("font.name.sans-serif.x-tamil", "InaiMathi");
|
|
||||||
pref("font.name.monospace.x-tamil", "InaiMathi");
|
|
||||||
pref("font.name-list.serif.x-tamil", "InaiMathi");
|
|
||||||
pref("font.name-list.sans-serif.x-tamil", "InaiMathi");
|
|
||||||
pref("font.name-list.monospace.x-tamil", "InaiMathi");
|
|
||||||
|
|
||||||
// Kailasa ships with mac os x >= 10.5
|
|
||||||
pref("font.name.serif.x-tibt", "Kailasa");
|
|
||||||
pref("font.name.sans-serif.x-tibt", "Kailasa");
|
|
||||||
pref("font.name.monospace.x-tibt", "Kailasa");
|
|
||||||
pref("font.name-list.serif.x-tibt", "Kailasa");
|
|
||||||
pref("font.name-list.sans-serif.x-tibt", "Kailasa");
|
|
||||||
pref("font.name-list.monospace.x-tibt", "Kailasa");
|
|
||||||
|
|
||||||
pref("font.name.serif.x-unicode", "Times");
|
|
||||||
pref("font.name.sans-serif.x-unicode", "Helvetica");
|
|
||||||
pref("font.name.monospace.x-unicode", "Courier");
|
|
||||||
pref("font.name.cursive.x-unicode", "Apple Chancery");
|
|
||||||
pref("font.name.fantasy.x-unicode", "Papyrus");
|
|
||||||
pref("font.name-list.serif.x-unicode", "Times");
|
|
||||||
pref("font.name-list.sans-serif.x-unicode", "Helvetica");
|
|
||||||
pref("font.name-list.monospace.x-unicode", "Courier");
|
|
||||||
pref("font.name-list.cursive.x-unicode", "Apple Chancery");
|
|
||||||
pref("font.name-list.fantasy.x-unicode", "Papyrus");
|
|
||||||
|
|
||||||
pref("font.name.serif.x-western", "Times");
|
|
||||||
pref("font.name.sans-serif.x-western", "Helvetica");
|
|
||||||
pref("font.name.monospace.x-western", "Courier");
|
|
||||||
pref("font.name.cursive.x-western", "Apple Chancery");
|
|
||||||
pref("font.name.fantasy.x-western", "Papyrus");
|
|
||||||
pref("font.name-list.serif.x-western", "Times,Times New Roman");
|
|
||||||
pref("font.name-list.sans-serif.x-western", "Helvetica,Arial");
|
|
||||||
pref("font.name-list.monospace.x-western", "Courier,Courier New");
|
|
||||||
pref("font.name-list.cursive.x-western", "Apple Chancery");
|
|
||||||
pref("font.name-list.fantasy.x-western", "Papyrus");
|
|
||||||
|
|
||||||
pref("font.name.serif.zh-CN", "Times");
|
|
||||||
pref("font.name.sans-serif.zh-CN", "Helvetica");
|
|
||||||
pref("font.name.monospace.zh-CN", "Courier");
|
|
||||||
pref("font.name.cursive.zh-CN", "Kaiti SC");
|
|
||||||
pref("font.name-list.serif.zh-CN", "Times,STSong,Heiti SC");
|
|
||||||
pref("font.name-list.sans-serif.zh-CN", "Helvetica,PingFang SC,STHeiti,Heiti SC");
|
|
||||||
pref("font.name-list.monospace.zh-CN", "Courier,PingFang SC,STHeiti,Heiti SC");
|
|
||||||
|
|
||||||
pref("font.name.serif.zh-TW", "Times");
|
|
||||||
pref("font.name.sans-serif.zh-TW", "Helvetica");
|
|
||||||
pref("font.name.monospace.zh-TW", "Courier");
|
|
||||||
pref("font.name.cursive.zh-TW", "Kaiti TC");
|
|
||||||
pref("font.name-list.serif.zh-TW", "Times,LiSong Pro,Heiti TC");
|
|
||||||
pref("font.name-list.sans-serif.zh-TW", "Helvetica,PingFang TC,Heiti TC,LiHei Pro");
|
|
||||||
pref("font.name-list.monospace.zh-TW", "Courier,PingFang TC,Heiti TC,LiHei Pro");
|
|
||||||
|
|
||||||
pref("font.name.serif.zh-HK", "Times");
|
|
||||||
pref("font.name.sans-serif.zh-HK", "Helvetica");
|
|
||||||
pref("font.name.monospace.zh-HK", "Courier");
|
|
||||||
pref("font.name.cursive.zh-HK", "Kaiti TC");
|
|
||||||
pref("font.name-list.serif.zh-HK", "Times,LiSong Pro,Heiti TC");
|
|
||||||
pref("font.name-list.sans-serif.zh-HK", "Helvetica,PingFang TC,Heiti TC,LiHei Pro");
|
|
||||||
pref("font.name-list.monospace.zh-HK", "Courier,PingFang TC,Heiti TC,LiHei Pro");
|
|
||||||
|
|
||||||
// XP_MACOSX changes to default font sizes
|
|
||||||
pref("font.minimum-size.th", 10);
|
|
||||||
pref("font.size.variable.zh-CN", 15);
|
|
||||||
pref("font.size.variable.zh-HK", 15);
|
|
||||||
pref("font.size.variable.zh-TW", 15);
|
|
||||||
|
|
||||||
pref("font.name.serif.x-math", "Latin Modern Math");
|
|
||||||
// Apple's Symbol is Unicode so use it
|
|
||||||
pref("font.name-list.serif.x-math", "Latin Modern Math, XITS Math, Cambria Math, Libertinus Math, DejaVu Math TeX Gyre, TeX Gyre Bonum Math, TeX Gyre Pagella Math, TeX Gyre Schola, TeX Gyre Termes Math, STIX Math, Asana Math, STIXGeneral, DejaVu Serif, DejaVu Sans, Symbol, Times");
|
|
||||||
pref("font.name.sans-serif.x-math", "Helvetica");
|
|
||||||
pref("font.name.monospace.x-math", "Courier");
|
|
||||||
pref("font.name.cursive.x-math", "Apple Chancery");
|
|
||||||
pref("font.name.fantasy.x-math", "Papyrus");
|
|
||||||
|
|
||||||
// Individual font faces to be treated as independent families,
|
|
||||||
// listed as <Postscript name of face:Owning family name>
|
|
||||||
pref("font.single-face-list", "Osaka-Mono:Osaka");
|
|
||||||
|
|
||||||
// optimization hint for fonts with localized names to be read in at startup, otherwise read in at lookup miss
|
|
||||||
// names are canonical family names (typically English names)
|
|
||||||
pref("font.preload-names-list", "Hiragino Kaku Gothic ProN,Hiragino Mincho ProN,STSong");
|
|
||||||
|
|
||||||
// Override font-weight values for some problematic families Apple ships
|
|
||||||
// (see bug 931426).
|
|
||||||
// The name here is the font's PostScript name, which can be checked in
|
|
||||||
// the Font Book utility or other tools.
|
|
||||||
pref("font.weight-override.AppleSDGothicNeo-Thin", 100); // Ensure Thin < UltraLight < Light
|
|
||||||
pref("font.weight-override.AppleSDGothicNeo-UltraLight", 200);
|
|
||||||
pref("font.weight-override.AppleSDGothicNeo-Light", 300);
|
|
||||||
pref("font.weight-override.AppleSDGothicNeo-Heavy", 900); // Ensure Heavy > ExtraBold (800)
|
|
||||||
|
|
||||||
pref("font.weight-override.Avenir-Book", 300); // Ensure Book < Roman (400)
|
|
||||||
pref("font.weight-override.Avenir-BookOblique", 300);
|
|
||||||
pref("font.weight-override.Avenir-MediumOblique", 500); // Harmonize MediumOblique with Medium
|
|
||||||
pref("font.weight-override.Avenir-Black", 900); // Ensure Black > Heavy (800)
|
|
||||||
pref("font.weight-override.Avenir-BlackOblique", 900);
|
|
||||||
|
|
||||||
pref("font.weight-override.AvenirNext-MediumItalic", 500); // Harmonize MediumItalic with Medium
|
|
||||||
pref("font.weight-override.AvenirNextCondensed-MediumItalic", 500);
|
|
||||||
|
|
||||||
pref("font.weight-override.HelveticaNeue-Light", 300); // Ensure Light > Thin (200)
|
|
||||||
pref("font.weight-override.HelveticaNeue-LightItalic", 300);
|
|
||||||
pref("font.weight-override.HelveticaNeue-MediumItalic", 500); // Harmonize MediumItalic with Medium
|
|
||||||
|
|
||||||
// Override the Windows settings: no menu key, meta accelerator key. ctrl for general access key in HTML/XUL
|
|
||||||
// Use 17 for Ctrl, 18 for Option, 224 for Cmd, 0 for none
|
|
||||||
pref("ui.key.menuAccessKey", 0);
|
|
||||||
pref("ui.key.accelKey", 224);
|
|
||||||
// (pinkerton, joki, saari) IE5 for mac uses Control for access keys. The HTML4 spec
|
|
||||||
// suggests to use command on mac, but this really sucks (imagine someone having a "q"
|
|
||||||
// as an access key and not letting you quit the app!). As a result, we've made a
|
|
||||||
// command decision 1 day before tree lockdown to change it to the control key.
|
|
||||||
pref("ui.key.generalAccessKey", -1);
|
|
||||||
|
|
||||||
// If generalAccessKey is -1, use the following two prefs instead.
|
|
||||||
// Use 0 for disabled, 1 for Shift, 2 for Ctrl, 4 for Alt, 8 for Meta (Cmd)
|
|
||||||
// (values can be combined, e.g. 3 for Ctrl+Shift)
|
|
||||||
pref("ui.key.chromeAccess", 2);
|
|
||||||
pref("ui.key.contentAccess", 6);
|
|
||||||
|
|
||||||
// print_extra_margin enables platforms to specify an extra gap or margin
|
|
||||||
// around the content of the page for Print Preview only
|
|
||||||
pref("print.print_extra_margin", 90); // twips (90 twips is an eigth of an inch)
|
|
||||||
|
|
||||||
// See bug 404131, topmost <panel> element wins to Dashboard on MacOSX.
|
|
||||||
pref("ui.panel.default_level_parent", false);
|
|
||||||
|
|
||||||
pref("ui.plugin.cancel_composition_at_input_source_changed", false);
|
|
||||||
|
|
||||||
pref("mousewheel.system_scroll_override_on_root_content.enabled", false);
|
|
||||||
|
|
||||||
// Macbook touchpad two finger pixel scrolling
|
|
||||||
pref("mousewheel.enable_pixel_scrolling", true);
|
|
||||||
|
|
||||||
# XP_MACOSX
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef XP_MACOSX
|
|
||||||
#ifdef XP_UNIX
|
#ifdef XP_UNIX
|
||||||
// Handled differently under Mac/Windows
|
// Handled differently under Mac/Windows
|
||||||
pref("network.protocol-handler.warn-external.file", false);
|
pref("network.protocol-handler.warn-external.file", false);
|
||||||
|
|
@ -4103,7 +3740,6 @@ pref("gfx.font_rendering.fontconfig.max_generic_substitutions", 3);
|
||||||
|
|
||||||
# XP_UNIX
|
# XP_UNIX
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if OS_ARCH==AIX
|
#if OS_ARCH==AIX
|
||||||
|
|
@ -4243,9 +3879,6 @@ pref("canvas.poisondata", false);
|
||||||
// WebGL prefs
|
// WebGL prefs
|
||||||
pref("gl.msaa-level", 2);
|
pref("gl.msaa-level", 2);
|
||||||
pref("gl.require-hardware", false);
|
pref("gl.require-hardware", false);
|
||||||
#ifdef XP_MACOSX
|
|
||||||
pref("gl.multithreaded", true);
|
|
||||||
#endif
|
|
||||||
pref("gl.ignore-dx-interop2-blacklist", false);
|
pref("gl.ignore-dx-interop2-blacklist", false);
|
||||||
|
|
||||||
pref("webgl.force-enabled", false);
|
pref("webgl.force-enabled", false);
|
||||||
|
|
@ -4305,17 +3938,17 @@ pref("network.tcp.keepalive.enabled", true);
|
||||||
pref("network.tcp.keepalive.idle_time", 600); // seconds; 10 mins
|
pref("network.tcp.keepalive.idle_time", 600); // seconds; 10 mins
|
||||||
// Default timeout for retransmission of unack'd keepalive probes.
|
// Default timeout for retransmission of unack'd keepalive probes.
|
||||||
// Win and Linux only; not configurable on Mac.
|
// Win and Linux only; not configurable on Mac.
|
||||||
#if defined(XP_UNIX) && !defined(XP_MACOSX) || defined(XP_WIN)
|
#if defined(XP_UNIX) || defined(XP_WIN)
|
||||||
pref("network.tcp.keepalive.retry_interval", 1); // seconds
|
pref("network.tcp.keepalive.retry_interval", 1); // seconds
|
||||||
#endif
|
#endif
|
||||||
// Default maximum probe retransmissions.
|
// Default maximum probe retransmissions.
|
||||||
// Linux only; not configurable on Win and Mac; fixed at 10 and 8 respectively.
|
// Linux only; not configurable on Win and Mac; fixed at 10 and 8 respectively.
|
||||||
#if defined(XP_UNIX) && !defined(XP_MACOSX)
|
#if defined(XP_UNIX)
|
||||||
pref("network.tcp.keepalive.probe_count", 4);
|
pref("network.tcp.keepalive.probe_count", 4);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Whether to disable acceleration for all widgets.
|
// Whether to disable acceleration for all widgets.
|
||||||
#if defined(XP_UNIX) && !defined(XP_MACOSX)
|
#if defined(XP_UNIX)
|
||||||
// On Linux this is disabled by default for known issues with "free" drivers
|
// On Linux this is disabled by default for known issues with "free" drivers
|
||||||
pref("layers.acceleration.enabled", false);
|
pref("layers.acceleration.enabled", false);
|
||||||
#else
|
#else
|
||||||
|
|
@ -4372,13 +4005,6 @@ pref("layers.tiles.adjust", true);
|
||||||
// 0 -> full-tilt mode: Recomposite even if not transaction occured.
|
// 0 -> full-tilt mode: Recomposite even if not transaction occured.
|
||||||
pref("layers.offmainthreadcomposition.frame-rate", -1);
|
pref("layers.offmainthreadcomposition.frame-rate", -1);
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
pref("layers.enable-tiles", true);
|
|
||||||
pref("layers.tile-width", 512);
|
|
||||||
pref("layers.tile-height", 512);
|
|
||||||
pref("layers.tiles.edge-padding", false);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Whether to animate simple opacity and transforms on the compositor
|
// Whether to animate simple opacity and transforms on the compositor
|
||||||
pref("layers.offmainthreadcomposition.async-animations", true);
|
pref("layers.offmainthreadcomposition.async-animations", true);
|
||||||
|
|
||||||
|
|
@ -4425,11 +4051,6 @@ pref("layers.shared-buffer-provider.enabled", true);
|
||||||
pref("layers.shared-buffer-provider.enabled", false);
|
pref("layers.shared-buffer-provider.enabled", false);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// cf. Bug 1324908
|
|
||||||
pref("layers.shared-buffer-provider.enabled", false);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Force all possible layers to be always active layers
|
// Force all possible layers to be always active layers
|
||||||
pref("layers.force-active", false);
|
pref("layers.force-active", false);
|
||||||
|
|
||||||
|
|
@ -4586,11 +4207,7 @@ pref("dom.mozPermissionSettings.enabled", false);
|
||||||
// W3C touch events
|
// W3C touch events
|
||||||
// 0 - disabled, 1 - enabled, 2 - autodetect
|
// 0 - disabled, 1 - enabled, 2 - autodetect
|
||||||
// Autodetection is currently only supported on Windows and GTK3
|
// Autodetection is currently only supported on Windows and GTK3
|
||||||
#if defined(XP_MACOSX)
|
|
||||||
pref("dom.w3c_touch_events.enabled", 0);
|
|
||||||
#else
|
|
||||||
pref("dom.w3c_touch_events.enabled", 2);
|
pref("dom.w3c_touch_events.enabled", 2);
|
||||||
#endif
|
|
||||||
|
|
||||||
// W3C draft pointer events
|
// W3C draft pointer events
|
||||||
pref("dom.w3c_pointer_events.enabled", true);
|
pref("dom.w3c_pointer_events.enabled", true);
|
||||||
|
|
@ -4960,15 +4577,6 @@ pref("dom.udpsocket.enabled", false);
|
||||||
// Disable before keyboard events and after keyboard events by default.
|
// Disable before keyboard events and after keyboard events by default.
|
||||||
pref("dom.beforeAfterKeyboardEvent.enabled", false);
|
pref("dom.beforeAfterKeyboardEvent.enabled", false);
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
#if defined(DEBUG)
|
|
||||||
// In debug builds we crash by default on insecure text input (when a
|
|
||||||
// password editor has focus but secure event input isn't enabled). The
|
|
||||||
// following pref, when turned on, disables this behavior. See bug 1188425.
|
|
||||||
pref("intl.allow-insecure-text-input", false);
|
|
||||||
#endif
|
|
||||||
#endif // XP_MACOSX
|
|
||||||
|
|
||||||
// Enable meta-viewport support in remote APZ-enabled frames.
|
// Enable meta-viewport support in remote APZ-enabled frames.
|
||||||
pref("dom.meta-viewport.enabled", false);
|
pref("dom.meta-viewport.enabled", false);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -955,7 +955,7 @@ MozDescribeCodeAddress(void* aPC, MozCodeAddressDetails* aDetails)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(XP_WIN) || defined (XP_MACOSX) || defined (XP_LINUX)
|
#if defined(XP_WIN) || defined (XP_LINUX)
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
bool
|
bool
|
||||||
FramePointerStackWalk(MozWalkStackCallback aCallback, uint32_t aSkipFrames,
|
FramePointerStackWalk(MozWalkStackCallback aCallback, uint32_t aSkipFrames,
|
||||||
|
|
@ -979,8 +979,8 @@ FramePointerStackWalk(MozWalkStackCallback aCallback, uint32_t aSkipFrames,
|
||||||
(uintptr_t(next) & 3)) {
|
(uintptr_t(next) & 3)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#if (defined(__ppc__) && defined(XP_MACOSX)) || defined(__powerpc64__)
|
#if defined(__powerpc64__)
|
||||||
// ppc mac or powerpc64 linux
|
// powerpc64 linux
|
||||||
void* pc = *(bp + 2);
|
void* pc = *(bp + 2);
|
||||||
bp += 3;
|
bp += 3;
|
||||||
#else // i386 or powerpc32 linux
|
#else // i386 or powerpc32 linux
|
||||||
|
|
|
||||||
|
|
@ -818,10 +818,6 @@ class Artifacts(object):
|
||||||
return ('linux64' if target_64bit else 'linux') + target_suffix
|
return ('linux64' if target_64bit else 'linux') + target_suffix
|
||||||
if self._defines.get('XP_WIN', False):
|
if self._defines.get('XP_WIN', False):
|
||||||
return ('win64' if target_64bit else 'win32') + target_suffix
|
return ('win64' if target_64bit else 'win32') + target_suffix
|
||||||
if self._defines.get('XP_MACOSX', False):
|
|
||||||
# We only produce unified builds in automation, so the target_cpu
|
|
||||||
# check is not relevant.
|
|
||||||
return 'macosx64' + target_suffix
|
|
||||||
raise Exception('Cannot determine default job for |mach artifact|!')
|
raise Exception('Cannot determine default job for |mach artifact|!')
|
||||||
|
|
||||||
def _pushheads_from_rev(self, rev, count):
|
def _pushheads_from_rev(self, rev, count):
|
||||||
|
|
|
||||||
|
|
@ -119,12 +119,6 @@ AppPicker.prototype =
|
||||||
return file.getVersionInfoField("FileDescription");
|
return file.getVersionInfoField("FileDescription");
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
}
|
}
|
||||||
#elifdef XP_MACOSX
|
|
||||||
if (file instanceof Components.interfaces.nsILocalFileMac) {
|
|
||||||
try {
|
|
||||||
return file.bundleDisplayName;
|
|
||||||
} catch (e) {}
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
return file.leafName;
|
return file.leafName;
|
||||||
},
|
},
|
||||||
|
|
@ -183,8 +177,6 @@ AppPicker.prototype =
|
||||||
var startLocation;
|
var startLocation;
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
startLocation = "ProgF"; // Program Files
|
startLocation = "ProgF"; // Program Files
|
||||||
#elifdef XP_MACOSX
|
|
||||||
startLocation = "LocApp"; // Local Applications
|
|
||||||
#else
|
#else
|
||||||
startLocation = "Home";
|
startLocation = "Home";
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -118,15 +118,6 @@ XPCOMUtils.defineLazyGetter(this, "gABI", function() {
|
||||||
LOG("BlockList Global gABI: XPCOM ABI unknown.");
|
LOG("BlockList Global gABI: XPCOM ABI unknown.");
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// Mac universal build should report a different ABI than either macppc
|
|
||||||
// or mactel.
|
|
||||||
let macutils = Cc["@mozilla.org/xpcom/mac-utils;1"].
|
|
||||||
getService(Ci.nsIMacUtils);
|
|
||||||
|
|
||||||
if (macutils.isUniversalBinary)
|
|
||||||
abi += "-u-" + macutils.architecturesInBinary;
|
|
||||||
#endif
|
|
||||||
return abi;
|
return abi;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,10 +57,6 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
#include <CoreFoundation/CoreFoundation.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MOZ_WIDGET_GTK
|
#ifdef MOZ_WIDGET_GTK
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -1376,12 +1372,7 @@ nsDownloadManager::GetDefaultDownloadsDirectory(nsIFile **aResult)
|
||||||
mBundle->GetStringFromName(u"downloadsFolder",
|
mBundle->GetStringFromName(u"downloadsFolder",
|
||||||
getter_Copies(folderName));
|
getter_Copies(folderName));
|
||||||
|
|
||||||
#if defined (XP_MACOSX)
|
#if defined(XP_WIN)
|
||||||
rv = dirService->Get(NS_OSX_DEFAULT_DOWNLOAD_DIR,
|
|
||||||
NS_GET_IID(nsIFile),
|
|
||||||
getter_AddRefs(downloadDir));
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
#elif defined(XP_WIN)
|
|
||||||
rv = dirService->Get(NS_WIN_DEFAULT_DOWNLOAD_DIR,
|
rv = dirService->Get(NS_WIN_DEFAULT_DOWNLOAD_DIR,
|
||||||
NS_GET_IID(nsIFile),
|
NS_GET_IID(nsIFile),
|
||||||
getter_AddRefs(downloadDir));
|
getter_AddRefs(downloadDir));
|
||||||
|
|
@ -2445,19 +2436,11 @@ nsDownloadManager::Observe(nsISupports *aSubject,
|
||||||
nsCOMPtr<nsISupportsPRBool> cancelDownloads =
|
nsCOMPtr<nsISupportsPRBool> cancelDownloads =
|
||||||
do_QueryInterface(aSubject, &rv);
|
do_QueryInterface(aSubject, &rv);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
#ifndef XP_MACOSX
|
|
||||||
ConfirmCancelDownloads(currDownloadCount, cancelDownloads,
|
ConfirmCancelDownloads(currDownloadCount, cancelDownloads,
|
||||||
u"quitCancelDownloadsAlertTitle",
|
u"quitCancelDownloadsAlertTitle",
|
||||||
u"quitCancelDownloadsAlertMsgMultiple",
|
u"quitCancelDownloadsAlertMsgMultiple",
|
||||||
u"quitCancelDownloadsAlertMsg",
|
u"quitCancelDownloadsAlertMsg",
|
||||||
u"dontQuitButtonWin");
|
u"dontQuitButtonWin");
|
||||||
#else
|
|
||||||
ConfirmCancelDownloads(currDownloadCount, cancelDownloads,
|
|
||||||
u"quitCancelDownloadsAlertTitle",
|
|
||||||
u"quitCancelDownloadsAlertMsgMacMultiple",
|
|
||||||
u"quitCancelDownloadsAlertMsgMac",
|
|
||||||
u"dontQuitButtonMac");
|
|
||||||
#endif
|
|
||||||
} else if (strcmp(aTopic, "offline-requested") == 0 && currDownloadCount) {
|
} else if (strcmp(aTopic, "offline-requested") == 0 && currDownloadCount) {
|
||||||
nsCOMPtr<nsISupportsPRBool> cancelDownloads =
|
nsCOMPtr<nsISupportsPRBool> cancelDownloads =
|
||||||
do_QueryInterface(aSubject, &rv);
|
do_QueryInterface(aSubject, &rv);
|
||||||
|
|
@ -2747,7 +2730,7 @@ nsDownload::SetState(DownloadState aState)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(XP_WIN) || defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK)
|
#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
|
||||||
nsCOMPtr<nsIFileURL> fileURL = do_QueryInterface(mTarget);
|
nsCOMPtr<nsIFileURL> fileURL = do_QueryInterface(mTarget);
|
||||||
nsCOMPtr<nsIFile> file;
|
nsCOMPtr<nsIFile> file;
|
||||||
nsAutoString path;
|
nsAutoString path;
|
||||||
|
|
@ -2757,7 +2740,6 @@ nsDownload::SetState(DownloadState aState)
|
||||||
file &&
|
file &&
|
||||||
NS_SUCCEEDED(file->GetPath(path))) {
|
NS_SUCCEEDED(file->GetPath(path))) {
|
||||||
|
|
||||||
#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
|
|
||||||
// On Windows and Gtk, add the download to the system's "recent documents"
|
// On Windows and Gtk, add the download to the system's "recent documents"
|
||||||
// list, with a pref to disable.
|
// list, with a pref to disable.
|
||||||
{
|
{
|
||||||
|
|
@ -2795,18 +2777,6 @@ nsDownload::SetState(DownloadState aState)
|
||||||
g_object_unref(gio_file);
|
g_object_unref(gio_file);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// On OS X, make the downloads stack bounce.
|
|
||||||
CFStringRef observedObject = ::CFStringCreateWithCString(kCFAllocatorDefault,
|
|
||||||
NS_ConvertUTF16toUTF8(path).get(),
|
|
||||||
kCFStringEncodingUTF8);
|
|
||||||
CFNotificationCenterRef center = ::CFNotificationCenterGetDistributedCenter();
|
|
||||||
::CFNotificationCenterPostNotification(center, CFSTR("com.apple.DownloadFileFinished"),
|
|
||||||
observedObject, nullptr, TRUE);
|
|
||||||
::CFRelease(observedObject);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
|
|
@ -3389,14 +3359,10 @@ nsDownload::OpenWithApplication()
|
||||||
if (!prefs || NS_FAILED(prefs->GetBoolPref(PREF_BH_DELETETEMPFILEONEXIT,
|
if (!prefs || NS_FAILED(prefs->GetBoolPref(PREF_BH_DELETETEMPFILEONEXIT,
|
||||||
&deleteTempFileOnExit))) {
|
&deleteTempFileOnExit))) {
|
||||||
// No prefservice or no pref set; use default value
|
// No prefservice or no pref set; use default value
|
||||||
#if !defined(XP_MACOSX)
|
// Some users have been very verbal about temp files being deleted on
|
||||||
// Mac users have been very verbal about temp files being deleted on
|
|
||||||
// app exit - they don't like it - but we'll continue to do this on
|
// app exit - they don't like it - but we'll continue to do this on
|
||||||
// other platforms for now.
|
// all platforms for now.
|
||||||
deleteTempFileOnExit = true;
|
deleteTempFileOnExit = true;
|
||||||
#else
|
|
||||||
deleteTempFileOnExit = false;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Always schedule files to be deleted at the end of the private browsing
|
// Always schedule files to be deleted at the end of the private browsing
|
||||||
|
|
|
||||||
|
|
@ -312,9 +312,7 @@ this.DownloadIntegration = {
|
||||||
}
|
}
|
||||||
|
|
||||||
let directoryPath = null;
|
let directoryPath = null;
|
||||||
#ifdef XP_MACOSX
|
#ifdef XP_WIN
|
||||||
directoryPath = this._getDirectory("DfltDwnld");
|
|
||||||
#elifdef XP_WIN
|
|
||||||
// For XP/2K, use My Documents/Downloads. Other version uses
|
// For XP/2K, use My Documents/Downloads. Other version uses
|
||||||
// the default Downloads directory.
|
// the default Downloads directory.
|
||||||
let version = parseFloat(Services.sysinfo.getProperty("version"));
|
let version = parseFloat(Services.sysinfo.getProperty("version"));
|
||||||
|
|
@ -383,11 +381,7 @@ this.DownloadIntegration = {
|
||||||
*/
|
*/
|
||||||
getTemporaryDownloadsDirectory: Task.async(function* () {
|
getTemporaryDownloadsDirectory: Task.async(function* () {
|
||||||
let directoryPath = null;
|
let directoryPath = null;
|
||||||
#ifdef XP_MACOSX
|
|
||||||
directoryPath = yield this.getPreferredDownloadsDirectory();
|
|
||||||
#else
|
|
||||||
directoryPath = this._getDirectory("TmpD");
|
directoryPath = this._getDirectory("TmpD");
|
||||||
#endif
|
|
||||||
return directoryPath;
|
return directoryPath;
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,11 +25,6 @@
|
||||||
#include "nsILocalFileWin.h"
|
#include "nsILocalFileWin.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
#include <CoreFoundation/CoreFoundation.h>
|
|
||||||
#include "../../../../xpcom/io/CocoaFileUtils.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MOZ_WIDGET_GTK
|
#ifdef MOZ_WIDGET_GTK
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -69,39 +64,13 @@ static void gio_set_metadata_done(GObject *source_obj, GAsyncResult *res, gpoint
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// Caller is responsible for freeing any result (CF Create Rule)
|
|
||||||
CFURLRef CreateCFURLFromNSIURI(nsIURI *aURI) {
|
|
||||||
nsAutoCString spec;
|
|
||||||
if (aURI) {
|
|
||||||
aURI->GetSpec(spec);
|
|
||||||
}
|
|
||||||
|
|
||||||
CFStringRef urlStr = ::CFStringCreateWithCString(kCFAllocatorDefault,
|
|
||||||
spec.get(),
|
|
||||||
kCFStringEncodingUTF8);
|
|
||||||
if (!urlStr) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
CFURLRef url = ::CFURLCreateWithString(kCFAllocatorDefault,
|
|
||||||
urlStr,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
::CFRelease(urlStr);
|
|
||||||
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
nsresult DownloadPlatform::DownloadDone(nsIURI* aSource, nsIURI* aReferrer, nsIFile* aTarget,
|
nsresult DownloadPlatform::DownloadDone(nsIURI* aSource, nsIURI* aReferrer, nsIFile* aTarget,
|
||||||
const nsACString& aContentType, bool aIsPrivate)
|
const nsACString& aContentType, bool aIsPrivate)
|
||||||
{
|
{
|
||||||
#if defined(XP_WIN) || defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK)
|
#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
|
||||||
|
|
||||||
nsAutoString path;
|
nsAutoString path;
|
||||||
if (aTarget && NS_SUCCEEDED(aTarget->GetPath(path))) {
|
if (aTarget && NS_SUCCEEDED(aTarget->GetPath(path))) {
|
||||||
#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
|
|
||||||
// On Windows and Gtk, add the download to the system's "recent documents"
|
// On Windows and Gtk, add the download to the system's "recent documents"
|
||||||
// list, with a pref to disable.
|
// list, with a pref to disable.
|
||||||
{
|
{
|
||||||
|
|
@ -136,53 +105,10 @@ nsresult DownloadPlatform::DownloadDone(nsIURI* aSource, nsIURI* aReferrer, nsIF
|
||||||
nullptr, gio_set_metadata_done, nullptr);
|
nullptr, gio_set_metadata_done, nullptr);
|
||||||
g_object_unref(file_info);
|
g_object_unref(file_info);
|
||||||
g_object_unref(gio_file);
|
g_object_unref(gio_file);
|
||||||
#endif
|
#endif // MOZ_ENABLE_GIO
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// On OS X, make the downloads stack bounce.
|
|
||||||
CFStringRef observedObject = ::CFStringCreateWithCString(kCFAllocatorDefault,
|
|
||||||
NS_ConvertUTF16toUTF8(path).get(),
|
|
||||||
kCFStringEncodingUTF8);
|
|
||||||
CFNotificationCenterRef center = ::CFNotificationCenterGetDistributedCenter();
|
|
||||||
::CFNotificationCenterPostNotification(center, CFSTR("com.apple.DownloadFileFinished"),
|
|
||||||
observedObject, nullptr, TRUE);
|
|
||||||
::CFRelease(observedObject);
|
|
||||||
|
|
||||||
// Add OS X origin and referrer file metadata
|
|
||||||
CFStringRef pathCFStr = NULL;
|
|
||||||
if (!path.IsEmpty()) {
|
|
||||||
pathCFStr = ::CFStringCreateWithCharacters(kCFAllocatorDefault,
|
|
||||||
(const UniChar*)path.get(),
|
|
||||||
path.Length());
|
|
||||||
}
|
|
||||||
if (pathCFStr) {
|
|
||||||
bool isFromWeb = IsURLPossiblyFromWeb(aSource);
|
|
||||||
|
|
||||||
CFURLRef sourceCFURL = CreateCFURLFromNSIURI(aSource);
|
|
||||||
CFURLRef referrerCFURL = CreateCFURLFromNSIURI(aReferrer);
|
|
||||||
|
|
||||||
CocoaFileUtils::AddOriginMetadataToFile(pathCFStr,
|
|
||||||
sourceCFURL,
|
|
||||||
referrerCFURL);
|
|
||||||
CocoaFileUtils::AddQuarantineMetadataToFile(pathCFStr,
|
|
||||||
sourceCFURL,
|
|
||||||
referrerCFURL,
|
|
||||||
isFromWeb);
|
|
||||||
|
|
||||||
::CFRelease(pathCFStr);
|
|
||||||
if (sourceCFURL) {
|
|
||||||
::CFRelease(sourceCFURL);
|
|
||||||
}
|
|
||||||
if (referrerCFURL) {
|
|
||||||
::CFRelease(referrerCFURL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif // defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
|
||||||
#endif
|
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -184,17 +184,10 @@ this.DownloadPrompter.prototype = {
|
||||||
switch (aPromptType) {
|
switch (aPromptType) {
|
||||||
case this.ON_QUIT:
|
case this.ON_QUIT:
|
||||||
title = s.quitCancelDownloadsAlertTitle;
|
title = s.quitCancelDownloadsAlertTitle;
|
||||||
#ifdef XP_MACOSX
|
|
||||||
message = aDownloadsCount > 1
|
|
||||||
? s.quitCancelDownloadsAlertMsgMacMultiple(aDownloadsCount)
|
|
||||||
: s.quitCancelDownloadsAlertMsgMac;
|
|
||||||
cancelButton = s.dontQuitButtonMac;
|
|
||||||
#else
|
|
||||||
message = aDownloadsCount > 1
|
message = aDownloadsCount > 1
|
||||||
? s.quitCancelDownloadsAlertMsgMultiple(aDownloadsCount)
|
? s.quitCancelDownloadsAlertMsgMultiple(aDownloadsCount)
|
||||||
: s.quitCancelDownloadsAlertMsg;
|
: s.quitCancelDownloadsAlertMsg;
|
||||||
cancelButton = s.dontQuitButtonWin;
|
cancelButton = s.dontQuitButtonWin;
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
case this.ON_OFFLINE:
|
case this.ON_OFFLINE:
|
||||||
title = s.offlineCancelDownloadsAlertTitle;
|
title = s.offlineCancelDownloadsAlertTitle;
|
||||||
|
|
|
||||||
|
|
@ -18,11 +18,11 @@ EXTRA_JS_MODULES += [
|
||||||
'DownloadList.jsm',
|
'DownloadList.jsm',
|
||||||
'Downloads.jsm',
|
'Downloads.jsm',
|
||||||
'DownloadStore.jsm',
|
'DownloadStore.jsm',
|
||||||
|
'DownloadUIHelper.jsm',
|
||||||
]
|
]
|
||||||
|
|
||||||
EXTRA_PP_JS_MODULES += [
|
EXTRA_PP_JS_MODULES += [
|
||||||
'DownloadIntegration.jsm',
|
'DownloadIntegration.jsm',
|
||||||
'DownloadUIHelper.jsm',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
FINAL_LIBRARY = 'xul'
|
FINAL_LIBRARY = 'xul'
|
||||||
|
|
|
||||||
|
|
@ -486,12 +486,7 @@ function HandleSignonKeyPress(e) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
if (e.keyCode == KeyboardEvent.DOM_VK_DELETE ||
|
|
||||||
e.keyCode == KeyboardEvent.DOM_VK_BACK_SPACE) {
|
|
||||||
#else
|
|
||||||
if (e.keyCode == KeyboardEvent.DOM_VK_DELETE) {
|
if (e.keyCode == KeyboardEvent.DOM_VK_DELETE) {
|
||||||
#endif
|
|
||||||
DeleteSignon();
|
DeleteSignon();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0"?> <!-- -*- Mode: SGML; indent-tabs-mode: nil -*- -->
|
<?xml version="1.0"?> <!-- -*- Mode: XML; indent-tabs-mode: nil -*- -->
|
||||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
@ -126,10 +126,8 @@
|
||||||
<hbox align="end">
|
<hbox align="end">
|
||||||
<hbox class="actionButtons" flex="1">
|
<hbox class="actionButtons" flex="1">
|
||||||
<spacer flex="1"/>
|
<spacer flex="1"/>
|
||||||
#ifndef XP_MACOSX
|
|
||||||
<button oncommand="close();" icon="close"
|
<button oncommand="close();" icon="close"
|
||||||
label="&closebutton.label;" accesskey="&closebutton.accesskey;"/>
|
label="&closebutton.label;" accesskey="&closebutton.accesskey;"/>
|
||||||
#endif
|
|
||||||
</hbox>
|
</hbox>
|
||||||
</hbox>
|
</hbox>
|
||||||
</window>
|
</window>
|
||||||
|
|
|
||||||
|
|
@ -35,14 +35,7 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif // defined(XP_WIN)
|
#endif // defined(XP_WIN)
|
||||||
|
|
||||||
#if defined(XP_MACOSX)
|
#if defined(XP_UNIX)
|
||||||
#include <mach/mach_init.h>
|
|
||||||
#include <mach/mach_interface.h>
|
|
||||||
#include <mach/mach_port.h>
|
|
||||||
#include <mach/mach_types.h>
|
|
||||||
#include <mach/message.h>
|
|
||||||
#include <mach/thread_info.h>
|
|
||||||
#elif defined(XP_UNIX)
|
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <sys/resource.h>
|
#include <sys/resource.h>
|
||||||
#endif // defined(XP_UNIX)
|
#endif // defined(XP_UNIX)
|
||||||
|
|
@ -1239,30 +1232,7 @@ nsPerformanceStatsService::GetResources(uint64_t* userTime,
|
||||||
MOZ_ASSERT(userTime);
|
MOZ_ASSERT(userTime);
|
||||||
MOZ_ASSERT(systemTime);
|
MOZ_ASSERT(systemTime);
|
||||||
|
|
||||||
#if defined(XP_MACOSX)
|
#if defined(XP_UNIX)
|
||||||
// On MacOS X, to get we per-thread data, we need to
|
|
||||||
// reach into the kernel.
|
|
||||||
|
|
||||||
mach_msg_type_number_t count = THREAD_BASIC_INFO_COUNT;
|
|
||||||
thread_basic_info_data_t info;
|
|
||||||
mach_port_t port = mach_thread_self();
|
|
||||||
kern_return_t err =
|
|
||||||
thread_info(/* [in] targeted thread*/ port,
|
|
||||||
/* [in] nature of information*/ THREAD_BASIC_INFO,
|
|
||||||
/* [out] thread information */ (thread_info_t)&info,
|
|
||||||
/* [inout] number of items */ &count);
|
|
||||||
|
|
||||||
// We do not need ability to communicate with the thread, so
|
|
||||||
// let's release the port.
|
|
||||||
mach_port_deallocate(mach_task_self(), port);
|
|
||||||
|
|
||||||
if (err != KERN_SUCCESS)
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
|
|
||||||
*userTime = info.user_time.microseconds + info.user_time.seconds * 1000000;
|
|
||||||
*systemTime = info.system_time.microseconds + info.system_time.seconds * 1000000;
|
|
||||||
|
|
||||||
#elif defined(XP_UNIX)
|
|
||||||
struct rusage rusage;
|
struct rusage rusage;
|
||||||
#if defined(RUSAGE_THREAD)
|
#if defined(RUSAGE_THREAD)
|
||||||
// Under Linux, we can obtain per-thread statistics
|
// Under Linux, we can obtain per-thread statistics
|
||||||
|
|
@ -1306,7 +1276,7 @@ nsPerformanceStatsService::GetResources(uint64_t* userTime,
|
||||||
// Convert 100 ns to 1 us.
|
// Convert 100 ns to 1 us.
|
||||||
*userTime = userTimeInt.QuadPart / 10;
|
*userTime = userTimeInt.QuadPart / 10;
|
||||||
|
|
||||||
#endif // defined(XP_MACOSX) || defined(XP_UNIX) || defined(XP_WIN)
|
#endif // defined(XP_UNIX) || defined(XP_WIN)
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,14 +60,8 @@ XPCOMUtils.defineLazyModuleGetter(this, "PlacesUIUtils",
|
||||||
// refresh instead.
|
// refresh instead.
|
||||||
const MIN_TRANSACTIONS_FOR_BATCH = 5;
|
const MIN_TRANSACTIONS_FOR_BATCH = 5;
|
||||||
|
|
||||||
// On Mac OSX, the transferable system converts "\r\n" to "\n\n", where
|
// The transferable system converts "\r\n" to "\n" where needed.
|
||||||
// we really just want "\n". On other platforms, the transferable system
|
|
||||||
// converts "\r\n" to "\n".
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
const NEWLINE = "\n";
|
|
||||||
#else
|
|
||||||
const NEWLINE = "\r\n";
|
const NEWLINE = "\r\n";
|
||||||
#endif
|
|
||||||
|
|
||||||
function QI_node(aNode, aIID) {
|
function QI_node(aNode, aIID) {
|
||||||
var result = null;
|
var result = null;
|
||||||
|
|
|
||||||
|
|
@ -68,10 +68,9 @@ if CONFIG['MOZ_PLACES']:
|
||||||
'PlacesSearchAutocompleteProvider.jsm',
|
'PlacesSearchAutocompleteProvider.jsm',
|
||||||
'PlacesSyncUtils.jsm',
|
'PlacesSyncUtils.jsm',
|
||||||
'PlacesTransactions.jsm',
|
'PlacesTransactions.jsm',
|
||||||
|
'PlacesUtils.jsm',
|
||||||
]
|
]
|
||||||
|
|
||||||
EXTRA_PP_JS_MODULES += ['PlacesUtils.jsm']
|
|
||||||
|
|
||||||
EXTRA_COMPONENTS += [
|
EXTRA_COMPONENTS += [
|
||||||
'ColorAnalyzer.js',
|
'ColorAnalyzer.js',
|
||||||
'nsLivemarkService.js',
|
'nsLivemarkService.js',
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,8 @@ toolkit.jar:
|
||||||
content/global/printdialog.js (content/printdialog.js)
|
content/global/printdialog.js (content/printdialog.js)
|
||||||
content/global/printdialog.xul (content/printdialog.xul)
|
content/global/printdialog.xul (content/printdialog.xul)
|
||||||
#ifdef XP_UNIX
|
#ifdef XP_UNIX
|
||||||
#ifndef XP_MACOSX
|
|
||||||
content/global/printjoboptions.js (content/printjoboptions.js)
|
content/global/printjoboptions.js (content/printjoboptions.js)
|
||||||
content/global/printjoboptions.xul (content/printjoboptions.xul)
|
content/global/printjoboptions.xul (content/printjoboptions.xul)
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
content/global/printPageSetup.js (content/printPageSetup.js)
|
content/global/printPageSetup.js (content/printPageSetup.js)
|
||||||
content/global/printPageSetup.xul (content/printPageSetup.xul)
|
content/global/printPageSetup.xul (content/printPageSetup.xul)
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@
|
||||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||||
|
|
||||||
|
|
||||||
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
||||||
<?xml-stylesheet href="chrome://global/content/commonDialog.css" type="text/css"?>
|
<?xml-stylesheet href="chrome://global/content/commonDialog.css" type="text/css"?>
|
||||||
<?xml-stylesheet href="chrome://global/skin/commonDialog.css" type="text/css"?>
|
<?xml-stylesheet href="chrome://global/skin/commonDialog.css" type="text/css"?>
|
||||||
|
|
@ -63,18 +62,9 @@
|
||||||
<hbox id="iconContainer" align="start">
|
<hbox id="iconContainer" align="start">
|
||||||
<image id="info.icon" class="spaced"/>
|
<image id="info.icon" class="spaced"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
<vbox id="infoContainer"
|
<vbox id="infoContainer" pack="center">
|
||||||
#ifndef XP_MACOSX
|
|
||||||
pack="center"
|
|
||||||
#endif
|
|
||||||
>
|
|
||||||
<!-- Only shown on OS X, since it has no dialog title -->
|
|
||||||
<description id="info.title"
|
<description id="info.title"
|
||||||
#ifndef XP_MACOSX
|
|
||||||
hidden="true"
|
hidden="true"
|
||||||
#else
|
|
||||||
style="margin-bottom: 1em"
|
|
||||||
#endif
|
|
||||||
/>
|
/>
|
||||||
<description id="info.body" context="contentAreaContextMenu" noinitialfocus="true"/>
|
<description id="info.body" context="contentAreaContextMenu" noinitialfocus="true"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
|
|
|
||||||
|
|
@ -315,27 +315,16 @@
|
||||||
group="system" action="this.onKeyAction('default', event);"/>
|
group="system" action="this.onKeyAction('default', event);"/>
|
||||||
<handler event="keypress" keycode="VK_ESCAPE"
|
<handler event="keypress" keycode="VK_ESCAPE"
|
||||||
group="system" action="this.onKeyAction('cancel', event);"/>
|
group="system" action="this.onKeyAction('cancel', event);"/>
|
||||||
#ifdef XP_MACOSX
|
|
||||||
<handler event="keypress" key="." modifiers="meta"
|
|
||||||
group="system" action="this.onKeyAction('cancel', event);"/>
|
|
||||||
#endif
|
|
||||||
<handler event="focus" phase="capturing">
|
<handler event="focus" phase="capturing">
|
||||||
let bnum = this.args.defaultButtonNum || 0;
|
let bnum = this.args.defaultButtonNum || 0;
|
||||||
let defaultButton = this.ui["button" + bnum];
|
let defaultButton = this.ui["button" + bnum];
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
// The default button is only marked as such when no other button has focus.
|
||||||
// On OS X, the default button always stays marked as such (until
|
// XUL buttons will react to pressing enter as a command, so you can't trigger
|
||||||
// the entire prompt blurs).
|
// the default without tabbing to it or something that isn't a button.
|
||||||
defaultButton.setAttribute("default", true);
|
|
||||||
#else
|
|
||||||
// On other platforms, the default button is only marked as such
|
|
||||||
// when no other button has focus. XUL buttons on not-OSX will
|
|
||||||
// react to pressing enter as a command, so you can't trigger the
|
|
||||||
// default without tabbing to it or something that isn't a button.
|
|
||||||
let focusedDefault = (event.originalTarget == defaultButton);
|
let focusedDefault = (event.originalTarget == defaultButton);
|
||||||
let someButtonFocused = event.originalTarget instanceof Ci.nsIDOMXULButtonElement;
|
let someButtonFocused = event.originalTarget instanceof Ci.nsIDOMXULButtonElement;
|
||||||
defaultButton.setAttribute("default", focusedDefault || !someButtonFocused);
|
defaultButton.setAttribute("default", focusedDefault || !someButtonFocused);
|
||||||
#endif
|
|
||||||
</handler>
|
</handler>
|
||||||
<handler event="blur">
|
<handler event="blur">
|
||||||
// If focus shifted to somewhere else in the browser, don't make
|
// If focus shifted to somewhere else in the browser, don't make
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
toolkit.jar:
|
toolkit.jar:
|
||||||
content/global/commonDialog.js (content/commonDialog.js)
|
content/global/commonDialog.js (content/commonDialog.js)
|
||||||
* content/global/commonDialog.xul (content/commonDialog.xul)
|
content/global/commonDialog.xul (content/commonDialog.xul)
|
||||||
content/global/commonDialog.css (content/commonDialog.css)
|
content/global/commonDialog.css (content/commonDialog.css)
|
||||||
content/global/selectDialog.js (content/selectDialog.js)
|
content/global/selectDialog.js (content/selectDialog.js)
|
||||||
content/global/selectDialog.xul (content/selectDialog.xul)
|
content/global/selectDialog.xul (content/selectDialog.xul)
|
||||||
|
|
|
||||||
|
|
@ -1016,27 +1016,11 @@ nsFormFillController::KeyPress(nsIDOMEvent* aEvent)
|
||||||
keyEvent->GetKeyCode(&k);
|
keyEvent->GetKeyCode(&k);
|
||||||
switch (k) {
|
switch (k) {
|
||||||
case nsIDOMKeyEvent::DOM_VK_DELETE:
|
case nsIDOMKeyEvent::DOM_VK_DELETE:
|
||||||
#ifndef XP_MACOSX
|
|
||||||
mController->HandleDelete(&cancel);
|
mController->HandleDelete(&cancel);
|
||||||
break;
|
break;
|
||||||
case nsIDOMKeyEvent::DOM_VK_BACK_SPACE:
|
case nsIDOMKeyEvent::DOM_VK_BACK_SPACE:
|
||||||
mController->HandleText(&unused);
|
mController->HandleText(&unused);
|
||||||
break;
|
break;
|
||||||
#else
|
|
||||||
case nsIDOMKeyEvent::DOM_VK_BACK_SPACE:
|
|
||||||
{
|
|
||||||
bool isShift = false;
|
|
||||||
keyEvent->GetShiftKey(&isShift);
|
|
||||||
|
|
||||||
if (isShift) {
|
|
||||||
mController->HandleDelete(&cancel);
|
|
||||||
} else {
|
|
||||||
mController->HandleText(&unused);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
case nsIDOMKeyEvent::DOM_VK_PAGE_UP:
|
case nsIDOMKeyEvent::DOM_VK_PAGE_UP:
|
||||||
case nsIDOMKeyEvent::DOM_VK_PAGE_DOWN:
|
case nsIDOMKeyEvent::DOM_VK_PAGE_DOWN:
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -274,10 +274,6 @@ nsAppStartup::Run(void)
|
||||||
// with a zombie process.
|
// with a zombie process.
|
||||||
|
|
||||||
if (!mShuttingDown && mConsiderQuitStopper != 0) {
|
if (!mShuttingDown && mConsiderQuitStopper != 0) {
|
||||||
#ifdef XP_MACOSX
|
|
||||||
EnterLastWindowClosingSurvivalArea();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
mRunning = true;
|
mRunning = true;
|
||||||
|
|
||||||
nsresult rv = mAppShell->Run();
|
nsresult rv = mAppShell->Run();
|
||||||
|
|
@ -313,45 +309,10 @@ nsAppStartup::Quit(uint32_t aMode)
|
||||||
|
|
||||||
// If we're considering quitting, we will only do so if:
|
// If we're considering quitting, we will only do so if:
|
||||||
if (ferocity == eConsiderQuit) {
|
if (ferocity == eConsiderQuit) {
|
||||||
#ifdef XP_MACOSX
|
|
||||||
nsCOMPtr<nsIAppShellService> appShell
|
|
||||||
(do_GetService(NS_APPSHELLSERVICE_CONTRACTID));
|
|
||||||
bool hasHiddenPrivateWindow = false;
|
|
||||||
if (appShell) {
|
|
||||||
appShell->GetHasHiddenPrivateWindow(&hasHiddenPrivateWindow);
|
|
||||||
}
|
|
||||||
int32_t suspiciousCount = hasHiddenPrivateWindow ? 2 : 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (mConsiderQuitStopper == 0) {
|
if (mConsiderQuitStopper == 0) {
|
||||||
// there are no windows...
|
// there are no windows...
|
||||||
ferocity = eAttemptQuit;
|
ferocity = eAttemptQuit;
|
||||||
}
|
}
|
||||||
#ifdef XP_MACOSX
|
|
||||||
else if (mConsiderQuitStopper == suspiciousCount) {
|
|
||||||
// ... or there is only a hiddenWindow left, and it's useless:
|
|
||||||
|
|
||||||
// Failure shouldn't be fatal, but will abort quit attempt:
|
|
||||||
if (!appShell)
|
|
||||||
return NS_OK;
|
|
||||||
|
|
||||||
bool usefulHiddenWindow;
|
|
||||||
appShell->GetApplicationProvidedHiddenWindow(&usefulHiddenWindow);
|
|
||||||
nsCOMPtr<nsIXULWindow> hiddenWindow;
|
|
||||||
appShell->GetHiddenWindow(getter_AddRefs(hiddenWindow));
|
|
||||||
// If the remaining windows are useful, we won't quit:
|
|
||||||
nsCOMPtr<nsIXULWindow> hiddenPrivateWindow;
|
|
||||||
if (hasHiddenPrivateWindow) {
|
|
||||||
appShell->GetHiddenPrivateWindow(getter_AddRefs(hiddenPrivateWindow));
|
|
||||||
if ((!hiddenWindow && !hiddenPrivateWindow) || usefulHiddenWindow)
|
|
||||||
return NS_OK;
|
|
||||||
} else if (!hiddenWindow || usefulHiddenWindow) {
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
ferocity = eAttemptQuit;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsIObserverService> obsService;
|
nsCOMPtr<nsIObserverService> obsService;
|
||||||
|
|
@ -406,10 +367,6 @@ nsAppStartup::Quit(uint32_t aMode)
|
||||||
|
|
||||||
if (!mAttemptingQuit) {
|
if (!mAttemptingQuit) {
|
||||||
mAttemptingQuit = true;
|
mAttemptingQuit = true;
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// now even the Mac wants to quit when the last window is closed
|
|
||||||
ExitLastWindowClosingSurvivalArea();
|
|
||||||
#endif
|
|
||||||
if (obsService)
|
if (obsService)
|
||||||
obsService->NotifyObservers(nullptr, "quit-application-granted", nullptr);
|
obsService->NotifyObservers(nullptr, "quit-application-granted", nullptr);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8542,14 +8542,6 @@
|
||||||
"kind": "flag",
|
"kind": "flag",
|
||||||
"description": "If a master-password is enabled for this profile"
|
"description": "If a master-password is enabled for this profile"
|
||||||
},
|
},
|
||||||
"DISPLAY_SCALING_OSX" : {
|
|
||||||
"expires_in_version": "never",
|
|
||||||
"kind": "linear",
|
|
||||||
"high": 500,
|
|
||||||
"n_buckets": 100,
|
|
||||||
"description": "Scaling percentage for the display where the first window is opened (OS X only)",
|
|
||||||
"cpp_guard": "XP_MACOSX"
|
|
||||||
},
|
|
||||||
"DISPLAY_SCALING_MSWIN" : {
|
"DISPLAY_SCALING_MSWIN" : {
|
||||||
"expires_in_version": "never",
|
"expires_in_version": "never",
|
||||||
"kind": "linear",
|
"kind": "linear",
|
||||||
|
|
|
||||||
|
|
@ -207,7 +207,6 @@
|
||||||
"DEVTOOLS_WEBIDE_WIFI_CONNECTION_RESULT",
|
"DEVTOOLS_WEBIDE_WIFI_CONNECTION_RESULT",
|
||||||
"DISPLAY_SCALING_LINUX",
|
"DISPLAY_SCALING_LINUX",
|
||||||
"DISPLAY_SCALING_MSWIN",
|
"DISPLAY_SCALING_MSWIN",
|
||||||
"DISPLAY_SCALING_OSX",
|
|
||||||
"DNS_BLACKLIST_COUNT",
|
"DNS_BLACKLIST_COUNT",
|
||||||
"DNS_CLEANUP_AGE",
|
"DNS_CLEANUP_AGE",
|
||||||
"DNS_FAILED_LOOKUP_TIME",
|
"DNS_FAILED_LOOKUP_TIME",
|
||||||
|
|
@ -938,7 +937,6 @@
|
||||||
"DEVTOOLS_WEBIDE_WIFI_CONNECTION_RESULT",
|
"DEVTOOLS_WEBIDE_WIFI_CONNECTION_RESULT",
|
||||||
"DISPLAY_SCALING_LINUX",
|
"DISPLAY_SCALING_LINUX",
|
||||||
"DISPLAY_SCALING_MSWIN",
|
"DISPLAY_SCALING_MSWIN",
|
||||||
"DISPLAY_SCALING_OSX",
|
|
||||||
"DNS_BLACKLIST_COUNT",
|
"DNS_BLACKLIST_COUNT",
|
||||||
"DNS_CLEANUP_AGE",
|
"DNS_CLEANUP_AGE",
|
||||||
"DNS_FAILED_LOOKUP_TIME",
|
"DNS_FAILED_LOOKUP_TIME",
|
||||||
|
|
|
||||||
|
|
@ -71,18 +71,6 @@ this.PageThumbUtils = {
|
||||||
let windowScale = aWindow ? aWindow.devicePixelRatio : systemScale;
|
let windowScale = aWindow ? aWindow.devicePixelRatio : systemScale;
|
||||||
let scale = Math.max(systemScale, windowScale);
|
let scale = Math.max(systemScale, windowScale);
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
/** *
|
|
||||||
* On retina displays, we can sometimes go down this path
|
|
||||||
* without a window object. In those cases, force 2x scaling
|
|
||||||
* as the system scale doesn't represent the 2x scaling
|
|
||||||
* on OS X.
|
|
||||||
*/
|
|
||||||
if (!aWindow) {
|
|
||||||
scale = 2;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** *
|
/** *
|
||||||
* THESE VALUES ARE DEFINED IN newtab.css and hard coded.
|
* THESE VALUES ARE DEFINED IN newtab.css and hard coded.
|
||||||
* If you change these values from the prefs,
|
* If you change these values from the prefs,
|
||||||
|
|
|
||||||
|
|
@ -11,11 +11,11 @@ EXTRA_COMPONENTS += [
|
||||||
EXTRA_JS_MODULES += [
|
EXTRA_JS_MODULES += [
|
||||||
'PageThumbs.jsm',
|
'PageThumbs.jsm',
|
||||||
'PageThumbsWorker.js',
|
'PageThumbsWorker.js',
|
||||||
|
'PageThumbUtils.jsm',
|
||||||
]
|
]
|
||||||
|
|
||||||
EXTRA_PP_JS_MODULES += [
|
EXTRA_PP_JS_MODULES += [
|
||||||
'BackgroundPageThumbs.jsm',
|
'BackgroundPageThumbs.jsm',
|
||||||
'PageThumbUtils.jsm',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
JAR_MANIFESTS += ['jar.mn']
|
JAR_MANIFESTS += ['jar.mn']
|
||||||
|
|
|
||||||
|
|
@ -83,9 +83,7 @@ namespace safebrowsing {
|
||||||
static PlatformType
|
static PlatformType
|
||||||
GetPlatformType()
|
GetPlatformType()
|
||||||
{
|
{
|
||||||
#if defined(XP_MACOSX)
|
#if defined(XP_LINUX)
|
||||||
return OSX_PLATFORM;
|
|
||||||
#elif defined(XP_LINUX)
|
|
||||||
return LINUX_PLATFORM;
|
return LINUX_PLATFORM;
|
||||||
#elif defined(XP_WIN)
|
#elif defined(XP_WIN)
|
||||||
return WINDOWS_PLATFORM;
|
return WINDOWS_PLATFORM;
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
# -*- Mode: HTML -*-
|
<!-- -*- Mode: XML -*-
|
||||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||||
|
|
||||||
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
||||||
<?xml-stylesheet href="chrome://global/content/viewSource.css" type="text/css"?>
|
<?xml-stylesheet href="chrome://global/content/viewSource.css" type="text/css"?>
|
||||||
|
|
@ -99,10 +99,8 @@
|
||||||
label="&savePageCmd.label;" accesskey="&savePageCmd.accesskey;"/>
|
label="&savePageCmd.label;" accesskey="&savePageCmd.accesskey;"/>
|
||||||
<menuitem command="cmd_pagesetup" id="menu_pageSetup"
|
<menuitem command="cmd_pagesetup" id="menu_pageSetup"
|
||||||
label="&pageSetupCmd.label;" accesskey="&pageSetupCmd.accesskey;"/>
|
label="&pageSetupCmd.label;" accesskey="&pageSetupCmd.accesskey;"/>
|
||||||
#ifndef XP_MACOSX
|
|
||||||
<menuitem command="cmd_printpreview" id="menu_printPreview"
|
<menuitem command="cmd_printpreview" id="menu_printPreview"
|
||||||
label="&printPreviewCmd.label;" accesskey="&printPreviewCmd.accesskey;"/>
|
label="&printPreviewCmd.label;" accesskey="&printPreviewCmd.accesskey;"/>
|
||||||
#endif
|
|
||||||
<menuitem key="key_print" command="cmd_print" id="menu_print"
|
<menuitem key="key_print" command="cmd_print" id="menu_print"
|
||||||
label="&printCmd.label;" accesskey="&printCmd.accesskey;"/>
|
label="&printCmd.label;" accesskey="&printCmd.accesskey;"/>
|
||||||
<menuseparator/>
|
<menuseparator/>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
# -*- Mode: HTML -*-
|
# -*- Mode: XML -*-
|
||||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
@ -50,10 +50,6 @@
|
||||||
oncommand="document.getElementById('FindToolbar').onFindAgainCommand(false);"/>
|
oncommand="document.getElementById('FindToolbar').onFindAgainCommand(false);"/>
|
||||||
<command id="cmd_findPrevious"
|
<command id="cmd_findPrevious"
|
||||||
oncommand="document.getElementById('FindToolbar').onFindAgainCommand(true);"/>
|
oncommand="document.getElementById('FindToolbar').onFindAgainCommand(true);"/>
|
||||||
#ifdef XP_MACOSX
|
|
||||||
<command id="cmd_findSelection"
|
|
||||||
oncommand="document.getElementById('FindToolbar').onFindSelectionCommand();"/>
|
|
||||||
#endif
|
|
||||||
<command id="cmd_reload" oncommand="viewSourceChrome.reload();"/>
|
<command id="cmd_reload" oncommand="viewSourceChrome.reload();"/>
|
||||||
<command id="cmd_goToLine" oncommand="viewSourceChrome.promptAndGoToLine();" disabled="true"/>
|
<command id="cmd_goToLine" oncommand="viewSourceChrome.promptAndGoToLine();" disabled="true"/>
|
||||||
<command id="cmd_highlightSyntax" oncommand="viewSourceChrome.toggleSyntaxHighlighting();"/>
|
<command id="cmd_highlightSyntax" oncommand="viewSourceChrome.toggleSyntaxHighlighting();"/>
|
||||||
|
|
@ -89,21 +85,13 @@
|
||||||
<key id="key_find" key="&findOnCmd.commandkey;" command="cmd_find" modifiers="accel"/>
|
<key id="key_find" key="&findOnCmd.commandkey;" command="cmd_find" modifiers="accel"/>
|
||||||
<key id="key_findAgain" key="&findAgainCmd.commandkey;" command="cmd_findAgain" modifiers="accel"/>
|
<key id="key_findAgain" key="&findAgainCmd.commandkey;" command="cmd_findAgain" modifiers="accel"/>
|
||||||
<key id="key_findPrevious" key="&findAgainCmd.commandkey;" command="cmd_findPrevious" modifiers="accel,shift"/>
|
<key id="key_findPrevious" key="&findAgainCmd.commandkey;" command="cmd_findPrevious" modifiers="accel,shift"/>
|
||||||
#ifdef XP_MACOSX
|
|
||||||
<key id="key_findSelection" key="&findSelectionCmd.commandkey;" command="cmd_findSelection" modifiers="accel"/>
|
|
||||||
#endif
|
|
||||||
<key keycode="&findAgainCmd.commandkey2;" command="cmd_findAgain"/>
|
<key keycode="&findAgainCmd.commandkey2;" command="cmd_findAgain"/>
|
||||||
<key keycode="&findAgainCmd.commandkey2;" command="cmd_findPrevious" modifiers="shift"/>
|
<key keycode="&findAgainCmd.commandkey2;" command="cmd_findPrevious" modifiers="shift"/>
|
||||||
|
|
||||||
<key keycode="VK_BACK" command="Browser:Back"/>
|
<key keycode="VK_BACK" command="Browser:Back"/>
|
||||||
<key keycode="VK_BACK" command="Browser:Forward" modifiers="shift"/>
|
<key keycode="VK_BACK" command="Browser:Forward" modifiers="shift"/>
|
||||||
#ifndef XP_MACOSX
|
|
||||||
<key id="goBackKb" keycode="VK_LEFT" command="Browser:Back" modifiers="alt"/>
|
<key id="goBackKb" keycode="VK_LEFT" command="Browser:Back" modifiers="alt"/>
|
||||||
<key id="goForwardKb" keycode="VK_RIGHT" command="Browser:Forward" modifiers="alt"/>
|
<key id="goForwardKb" keycode="VK_RIGHT" command="Browser:Forward" modifiers="alt"/>
|
||||||
#else
|
|
||||||
<key id="goBackKb" keycode="VK_LEFT" command="Browser:Back" modifiers="accel" />
|
|
||||||
<key id="goForwardKb" keycode="VK_RIGHT" command="Browser:Forward" modifiers="accel" />
|
|
||||||
#endif
|
|
||||||
#ifdef XP_UNIX
|
#ifdef XP_UNIX
|
||||||
<key id="goBackKb2" key="&goBackCmd.commandKey;" command="Browser:Back" modifiers="accel"/>
|
<key id="goBackKb2" key="&goBackCmd.commandKey;" command="Browser:Back" modifiers="accel"/>
|
||||||
<key id="goForwardKb2" key="&goForwardCmd.commandKey;" command="Browser:Forward" modifiers="accel"/>
|
<key id="goForwardKb2" key="&goForwardCmd.commandKey;" command="Browser:Forward" modifiers="accel"/>
|
||||||
|
|
@ -150,10 +138,8 @@
|
||||||
label="&savePageCmd.label;" accesskey="&savePageCmd.accesskey;"/>
|
label="&savePageCmd.label;" accesskey="&savePageCmd.accesskey;"/>
|
||||||
<menuitem command="cmd_pagesetup" id="menu_pageSetup"
|
<menuitem command="cmd_pagesetup" id="menu_pageSetup"
|
||||||
label="&pageSetupCmd.label;" accesskey="&pageSetupCmd.accesskey;"/>
|
label="&pageSetupCmd.label;" accesskey="&pageSetupCmd.accesskey;"/>
|
||||||
#ifndef XP_MACOSX
|
|
||||||
<menuitem command="cmd_printpreview" id="menu_printPreview"
|
<menuitem command="cmd_printpreview" id="menu_printPreview"
|
||||||
label="&printPreviewCmd.label;" accesskey="&printPreviewCmd.accesskey;"/>
|
label="&printPreviewCmd.label;" accesskey="&printPreviewCmd.accesskey;"/>
|
||||||
#endif
|
|
||||||
<menuitem key="key_print" command="cmd_print" id="menu_print"
|
<menuitem key="key_print" command="cmd_print" id="menu_print"
|
||||||
label="&printCmd.label;" accesskey="&printCmd.accesskey;"/>
|
label="&printCmd.label;" accesskey="&printCmd.accesskey;"/>
|
||||||
<menuseparator/>
|
<menuseparator/>
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,6 @@ toolkit.jar:
|
||||||
content/global/viewSource.js (content/viewSource.js)
|
content/global/viewSource.js (content/viewSource.js)
|
||||||
* content/global/viewSource.xul (content/viewSource.xul)
|
* content/global/viewSource.xul (content/viewSource.xul)
|
||||||
content/global/viewPartialSource.js (content/viewPartialSource.js)
|
content/global/viewPartialSource.js (content/viewPartialSource.js)
|
||||||
* content/global/viewPartialSource.xul (content/viewPartialSource.xul)
|
content/global/viewPartialSource.xul (content/viewPartialSource.xul)
|
||||||
content/global/viewSourceUtils.js (content/viewSourceUtils.js)
|
content/global/viewSourceUtils.js (content/viewSourceUtils.js)
|
||||||
content/global/viewSource-content.js (content/viewSource-content.js)
|
content/global/viewSource-content.js (content/viewSource-content.js)
|
||||||
|
|
|
||||||
|
|
@ -131,8 +131,6 @@ function display(profileData) {
|
||||||
let button = document.createElement('button');
|
let button = document.createElement('button');
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
let string = 'winOpenDir2';
|
let string = 'winOpenDir2';
|
||||||
#elifdef XP_MACOSX
|
|
||||||
let string = 'macOpenDir';
|
|
||||||
#else
|
#else
|
||||||
let string = 'openDir';
|
let string = 'openDir';
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -155,12 +155,8 @@
|
||||||
<th class="column">
|
<th class="column">
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
&aboutSupport.appBasicsProfileDirWinMac;
|
&aboutSupport.appBasicsProfileDirWinMac;
|
||||||
#else
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
&aboutSupport.appBasicsProfileDirWinMac;
|
|
||||||
#else
|
#else
|
||||||
&aboutSupport.appBasicsProfileDir;
|
&aboutSupport.appBasicsProfileDir;
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
</th>
|
</th>
|
||||||
|
|
||||||
|
|
@ -168,12 +164,8 @@
|
||||||
<button id="profile-dir-button">
|
<button id="profile-dir-button">
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
&aboutSupport.showWin2.label;
|
&aboutSupport.showWin2.label;
|
||||||
#else
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
&aboutSupport.showMac.label;
|
|
||||||
#else
|
#else
|
||||||
&aboutSupport.showDir.label;
|
&aboutSupport.showDir.label;
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
</button>
|
</button>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
||||||
|
|
@ -212,10 +212,6 @@ function wrapToolbarItems()
|
||||||
{
|
{
|
||||||
forEachCustomizableToolbar(function (toolbar) {
|
forEachCustomizableToolbar(function (toolbar) {
|
||||||
Array.forEach(toolbar.childNodes, function (item) {
|
Array.forEach(toolbar.childNodes, function (item) {
|
||||||
#ifdef XP_MACOSX
|
|
||||||
if (item.firstChild && item.firstChild.localName == "menubar")
|
|
||||||
return;
|
|
||||||
#endif
|
|
||||||
if (isToolbarItem(item)) {
|
if (isToolbarItem(item)) {
|
||||||
let wrapper = wrapToolbarItem(item);
|
let wrapper = wrapToolbarItem(item);
|
||||||
cleanupItemForToolbar(item, wrapper);
|
cleanupItemForToolbar(item, wrapper);
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
# -*- Mode: HTML -*-
|
<!-- -*- Mode: XML -*-
|
||||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
#
|
|
||||||
# WARNING!!! This file is obsoleted by the dialog.xml widget
|
WARNING!!! This file is obsoleted by the dialog.xml widget
|
||||||
#
|
-->
|
||||||
|
|
||||||
<!DOCTYPE overlay SYSTEM "chrome://global/locale/dialogOverlay.dtd">
|
<!DOCTYPE overlay SYSTEM "chrome://global/locale/dialogOverlay.dtd">
|
||||||
|
|
||||||
|
|
@ -14,44 +14,6 @@
|
||||||
|
|
||||||
<script type="application/javascript" src="chrome://global/content/dialogOverlay.js"/>
|
<script type="application/javascript" src="chrome://global/content/dialogOverlay.js"/>
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
#
|
|
||||||
<hbox id="okCancelButtons">
|
|
||||||
<spacer flex="1"/>
|
|
||||||
<button class="exit-dialog" id="Button3" label="" collapsed="true" oncommand="doButton3();"/>
|
|
||||||
<button class="exit-dialog" id="Button2" label="" collapsed="true" oncommand="doButton2();"/>
|
|
||||||
<button class="exit-dialog" id="cancel" label="&cancelButton.label;" oncommand="doCancelButton();"/>
|
|
||||||
<button class="right exit-dialog" id="ok" default="true" label="&okButton.label;" oncommand="doOKButton();"/>
|
|
||||||
</hbox>
|
|
||||||
|
|
||||||
<hbox id="okCancelHelpButtons">
|
|
||||||
<button class="exit-dialog" id="help" label="&helpButton.label;" oncommand="doHelpButton();"/>
|
|
||||||
<spacer flex="1"/>
|
|
||||||
<button class="exit-dialog" id="Button3" label="" collapsed="true" oncommand="doButton3();"/>
|
|
||||||
<button class="exit-dialog" id="Button2" label="" collapsed="true" oncommand="doButton2();"/>
|
|
||||||
<button class="exit-dialog" id="cancel" label="&cancelButton.label;" oncommand="doCancelButton();"/>
|
|
||||||
<button class="right exit-dialog" id="ok" default="true" label="&okButton.label;" oncommand="doOKButton();"/>
|
|
||||||
</hbox>
|
|
||||||
|
|
||||||
<hbox id="okCancelButtonsRight">
|
|
||||||
<spacer flex="1"/>
|
|
||||||
<button class="exit-dialog" id="Button3" label="" collapsed="true" oncommand="doButton3();"/>
|
|
||||||
<button class="exit-dialog" id="Button2" label="" collapsed="true" oncommand="doButton2();"/>
|
|
||||||
<button class="exit-dialog" id="cancel" label="&cancelButton.label;" oncommand="doCancelButton();"/>
|
|
||||||
<button class="right exit-dialog" id="ok" default="true" label="&okButton.label;" oncommand="doOKButton();"/>
|
|
||||||
</hbox>
|
|
||||||
|
|
||||||
<hbox id="okCancelHelpButtonsRight">
|
|
||||||
<button class="exit-dialog" id="help" label="&helpButton.label;" oncommand="doHelpButton();"/>
|
|
||||||
<spacer flex="1"/>
|
|
||||||
<button class="exit-dialog" id="Button3" label="" collapsed="true" oncommand="doButton3();"/>
|
|
||||||
<button class="exit-dialog" id="Button2" label="" collapsed="true" oncommand="doButton2();"/>
|
|
||||||
<button class="exit-dialog" id="cancel" label="&cancelButton.label;" oncommand="doCancelButton();"/>
|
|
||||||
<button class="right exit-dialog" id="ok" default="true" label="&okButton.label;" oncommand="doOKButton();"/>
|
|
||||||
</hbox>
|
|
||||||
#
|
|
||||||
#else
|
|
||||||
#
|
|
||||||
<hbox id="okCancelButtons">
|
<hbox id="okCancelButtons">
|
||||||
<spacer flex="1"/>
|
<spacer flex="1"/>
|
||||||
<button class="right exit-dialog" id="ok" label="&okButton.label;" default="true" oncommand="doOKButton();"/>
|
<button class="right exit-dialog" id="ok" label="&okButton.label;" default="true" oncommand="doOKButton();"/>
|
||||||
|
|
@ -87,15 +49,10 @@
|
||||||
<button class="exit-dialog" id="cancel" label="&cancelButton.label;" oncommand="doCancelButton();"/>
|
<button class="exit-dialog" id="cancel" label="&cancelButton.label;" oncommand="doCancelButton();"/>
|
||||||
<button class="exit-dialog" id="help" label="&helpButton.label;" oncommand="doHelpButton();"/>
|
<button class="exit-dialog" id="help" label="&helpButton.label;" oncommand="doHelpButton();"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
#endif
|
|
||||||
|
|
||||||
<keyset id="dialogKeys">
|
<keyset id="dialogKeys">
|
||||||
<key keycode="VK_RETURN" oncommand="if (!document.getElementById('ok').disabled) doOKButton();"/>
|
<key keycode="VK_RETURN" oncommand="if (!document.getElementById('ok').disabled) doOKButton();"/>
|
||||||
<key keycode="VK_ESCAPE" oncommand="doCancelButton();"/>
|
<key keycode="VK_ESCAPE" oncommand="doCancelButton();"/>
|
||||||
#ifdef XP_MACOSX
|
|
||||||
<key key="." modifiers="meta" oncommand="doCancelButton();"/>
|
|
||||||
#
|
|
||||||
#endif
|
|
||||||
</keyset>
|
</keyset>
|
||||||
|
|
||||||
</overlay>
|
</overlay>
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,6 @@
|
||||||
|
|
||||||
function closeWindow(aClose, aPromptFunction)
|
function closeWindow(aClose, aPromptFunction)
|
||||||
{
|
{
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// Closing the last window doesn't quit the application on OS X.
|
|
||||||
if (typeof(aPromptFunction) == "function" && !aPromptFunction()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
var windowCount = 0;
|
var windowCount = 0;
|
||||||
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
|
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
|
||||||
.getService(Components.interfaces.nsIWindowMediator);
|
.getService(Components.interfaces.nsIWindowMediator);
|
||||||
|
|
@ -29,7 +23,6 @@ function closeWindow(aClose, aPromptFunction)
|
||||||
return false;
|
return false;
|
||||||
if (windowCount != 1 && typeof(aPromptFunction) == "function" && !aPromptFunction())
|
if (windowCount != 1 && typeof(aPromptFunction) == "function" && !aPromptFunction())
|
||||||
return false;
|
return false;
|
||||||
#endif
|
|
||||||
|
|
||||||
if (aClose) {
|
if (aClose) {
|
||||||
window.close();
|
window.close();
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ toolkit.jar:
|
||||||
#ifdef MOZ_OFFICIAL_BRANDING
|
#ifdef MOZ_OFFICIAL_BRANDING
|
||||||
* content/global/aboutRights.xhtml
|
* content/global/aboutRights.xhtml
|
||||||
#else
|
#else
|
||||||
* content/global/aboutRights.xhtml (aboutRights-unbranded.xhtml)
|
content/global/aboutRights.xhtml (aboutRights-unbranded.xhtml)
|
||||||
#endif
|
#endif
|
||||||
content/global/aboutNetworking.js
|
content/global/aboutNetworking.js
|
||||||
content/global/aboutNetworking.xhtml
|
content/global/aboutNetworking.xhtml
|
||||||
|
|
@ -41,7 +41,7 @@ toolkit.jar:
|
||||||
* content/global/buildconfig.html
|
* content/global/buildconfig.html
|
||||||
* content/global/contentAreaUtils.js
|
* content/global/contentAreaUtils.js
|
||||||
content/global/customizeToolbar.css
|
content/global/customizeToolbar.css
|
||||||
* content/global/customizeToolbar.js
|
content/global/customizeToolbar.js
|
||||||
content/global/customizeToolbar.xul
|
content/global/customizeToolbar.xul
|
||||||
content/global/datepicker.xhtml
|
content/global/datepicker.xhtml
|
||||||
content/global/editMenuOverlay.js
|
content/global/editMenuOverlay.js
|
||||||
|
|
@ -50,7 +50,7 @@ toolkit.jar:
|
||||||
* content/global/finddialog.xul
|
* content/global/finddialog.xul
|
||||||
content/global/findUtils.js
|
content/global/findUtils.js
|
||||||
content/global/filepicker.properties
|
content/global/filepicker.properties
|
||||||
* content/global/globalOverlay.js
|
content/global/globalOverlay.js
|
||||||
content/global/mozilla.xhtml
|
content/global/mozilla.xhtml
|
||||||
#ifdef MOZ_PHOENIX
|
#ifdef MOZ_PHOENIX
|
||||||
content/global/logopage.xhtml
|
content/global/logopage.xhtml
|
||||||
|
|
@ -66,7 +66,7 @@ toolkit.jar:
|
||||||
content/global/treeUtils.js
|
content/global/treeUtils.js
|
||||||
content/global/viewZoomOverlay.js
|
content/global/viewZoomOverlay.js
|
||||||
content/global/globalOverlay.xul
|
content/global/globalOverlay.xul
|
||||||
* content/global/dialogOverlay.xul
|
content/global/dialogOverlay.xul
|
||||||
content/global/dialogOverlay.js
|
content/global/dialogOverlay.js
|
||||||
content/global/inlineSpellCheckUI.js
|
content/global/inlineSpellCheckUI.js
|
||||||
content/global/nsClipboard.js
|
content/global/nsClipboard.js
|
||||||
|
|
@ -88,7 +88,7 @@ toolkit.jar:
|
||||||
content/global/bindings/editor.xml (widgets/editor.xml)
|
content/global/bindings/editor.xml (widgets/editor.xml)
|
||||||
content/global/bindings/expander.xml (widgets/expander.xml)
|
content/global/bindings/expander.xml (widgets/expander.xml)
|
||||||
content/global/bindings/filefield.xml (widgets/filefield.xml)
|
content/global/bindings/filefield.xml (widgets/filefield.xml)
|
||||||
* content/global/bindings/findbar.xml (widgets/findbar.xml)
|
content/global/bindings/findbar.xml (widgets/findbar.xml)
|
||||||
content/global/bindings/general.xml (widgets/general.xml)
|
content/global/bindings/general.xml (widgets/general.xml)
|
||||||
content/global/bindings/groupbox.xml (widgets/groupbox.xml)
|
content/global/bindings/groupbox.xml (widgets/groupbox.xml)
|
||||||
content/global/bindings/listbox.xml (widgets/listbox.xml)
|
content/global/bindings/listbox.xml (widgets/listbox.xml)
|
||||||
|
|
@ -117,13 +117,10 @@ toolkit.jar:
|
||||||
content/global/bindings/timepicker.js (widgets/timepicker.js)
|
content/global/bindings/timepicker.js (widgets/timepicker.js)
|
||||||
content/global/bindings/toolbar.xml (widgets/toolbar.xml)
|
content/global/bindings/toolbar.xml (widgets/toolbar.xml)
|
||||||
content/global/bindings/toolbarbutton.xml (widgets/toolbarbutton.xml)
|
content/global/bindings/toolbarbutton.xml (widgets/toolbarbutton.xml)
|
||||||
* content/global/bindings/tree.xml (widgets/tree.xml)
|
content/global/bindings/tree.xml (widgets/tree.xml)
|
||||||
content/global/bindings/videocontrols.xml (widgets/videocontrols.xml)
|
content/global/bindings/videocontrols.xml (widgets/videocontrols.xml)
|
||||||
content/global/bindings/videocontrols.css (widgets/videocontrols.css)
|
content/global/bindings/videocontrols.css (widgets/videocontrols.css)
|
||||||
* content/global/bindings/wizard.xml (widgets/wizard.xml)
|
* content/global/bindings/wizard.xml (widgets/wizard.xml)
|
||||||
#ifdef XP_MACOSX
|
|
||||||
content/global/macWindowMenu.js
|
|
||||||
#endif
|
|
||||||
content/global/svg/svgBindings.xml (/layout/svg/resources/content/svgBindings.xml)
|
content/global/svg/svgBindings.xml (/layout/svg/resources/content/svgBindings.xml)
|
||||||
content/global/gmp-sources/eme-adobe.json (gmp-sources/eme-adobe.json)
|
content/global/gmp-sources/eme-adobe.json (gmp-sources/eme-adobe.json)
|
||||||
content/global/gmp-sources/openh264.json (gmp-sources/openh264.json)
|
content/global/gmp-sources/openh264.json (gmp-sources/openh264.json)
|
||||||
|
|
|
||||||
|
|
@ -5374,7 +5374,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
#if defined(XP_WIN) || defined(XP_MACOSX) || defined(XP_LINUX)
|
#if defined(XP_WIN) || defined(XP_LINUX)
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
||||||
<script type="application/javascript" src="chrome://global/content/macWindowMenu.js"/>
|
|
||||||
<commandset id="baseMenuCommandSet">
|
|
||||||
<command id="minimizeWindow"
|
|
||||||
label="&minimizeWindow.label;"
|
|
||||||
oncommand="window.minimize();" />
|
|
||||||
<command id="zoomWindow"
|
|
||||||
label="&zoomWindow.label;"
|
|
||||||
oncommand="zoomWindow();" />
|
|
||||||
</commandset>
|
|
||||||
<keyset id="baseMenuKeyset">
|
|
||||||
<key id="key_minimizeWindow"
|
|
||||||
command="minimizeWindow"
|
|
||||||
key="&minimizeWindow.key;"
|
|
||||||
modifiers="accel"/>
|
|
||||||
</keyset>
|
|
||||||
<menu id="windowMenu"
|
|
||||||
label="&windowMenu.label;"
|
|
||||||
datasources="rdf:window-mediator" ref="NC:WindowMediatorRoot"
|
|
||||||
onpopupshowing="macWindowMenuDidShow();"
|
|
||||||
hidden="false">
|
|
||||||
<template>
|
|
||||||
<rule>
|
|
||||||
<menupopup>
|
|
||||||
<menuitem uri="rdf:*"
|
|
||||||
label="rdf:http://home.netscape.com/NC-rdf#Name"
|
|
||||||
type="radio"
|
|
||||||
name="windowList"
|
|
||||||
oncommand="ShowWindowFromResource(event.target)"/>
|
|
||||||
</menupopup>
|
|
||||||
</rule>
|
|
||||||
</template>
|
|
||||||
<menupopup id="windowPopup">
|
|
||||||
<menuitem command="minimizeWindow" key="key_minimizeWindow"/>
|
|
||||||
<menuitem command="zoomWindow"/>
|
|
||||||
<!-- decomment when "BringAllToFront" is implemented
|
|
||||||
<menuseparator/>
|
|
||||||
<menuitem label="&bringAllToFront.label;" disabled="true"/> -->
|
|
||||||
<menuseparator id="sep-window-list"/>
|
|
||||||
</menupopup>
|
|
||||||
</menu>
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
// -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
|
|
||||||
|
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
||||||
|
|
||||||
function macWindowMenuDidShow()
|
|
||||||
{
|
|
||||||
var windowManagerDS =
|
|
||||||
Components.classes['@mozilla.org/rdf/datasource;1?name=window-mediator']
|
|
||||||
.getService(Components.interfaces.nsIWindowDataSource);
|
|
||||||
var sep = document.getElementById("sep-window-list");
|
|
||||||
// Using double parens to avoid warning
|
|
||||||
while ((sep = sep.nextSibling)) {
|
|
||||||
var url = sep.getAttribute('id');
|
|
||||||
var win = windowManagerDS.getWindowForResource(url);
|
|
||||||
if (win.document.documentElement.getAttribute("inwindowmenu") == "false")
|
|
||||||
sep.hidden = true;
|
|
||||||
else if (win == window)
|
|
||||||
sep.setAttribute("checked", "true");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function toOpenWindow( aWindow )
|
|
||||||
{
|
|
||||||
// deminiaturize the window, if it's in the Dock
|
|
||||||
if (aWindow.windowState == STATE_MINIMIZED)
|
|
||||||
aWindow.restore();
|
|
||||||
aWindow.document.commandDispatcher.focusedWindow.focus();
|
|
||||||
}
|
|
||||||
|
|
||||||
function ShowWindowFromResource( node )
|
|
||||||
{
|
|
||||||
var windowManagerDS =
|
|
||||||
Components.classes['@mozilla.org/rdf/datasource;1?name=window-mediator']
|
|
||||||
.getService(Components.interfaces.nsIWindowDataSource);
|
|
||||||
|
|
||||||
var desiredWindow = null;
|
|
||||||
var url = node.getAttribute('id');
|
|
||||||
desiredWindow = windowManagerDS.getWindowForResource( url );
|
|
||||||
if (desiredWindow)
|
|
||||||
toOpenWindow(desiredWindow);
|
|
||||||
}
|
|
||||||
|
|
||||||
function zoomWindow()
|
|
||||||
{
|
|
||||||
if (window.windowState == STATE_NORMAL)
|
|
||||||
window.maximize();
|
|
||||||
else
|
|
||||||
window.restore();
|
|
||||||
}
|
|
||||||
|
|
@ -422,15 +422,11 @@
|
||||||
if (!event.defaultPrevented)
|
if (!event.defaultPrevented)
|
||||||
this.cancelDialog();
|
this.cancelDialog();
|
||||||
</handler>
|
</handler>
|
||||||
#ifdef XP_MACOSX
|
|
||||||
<handler event="keypress" key="." modifiers="meta" phase="capturing" action="this.cancelDialog();"/>
|
|
||||||
#else
|
|
||||||
<handler event="focus" phase="capturing">
|
<handler event="focus" phase="capturing">
|
||||||
var btn = this.getButton(this.defaultButton);
|
var btn = this.getButton(this.defaultButton);
|
||||||
if (btn)
|
if (btn)
|
||||||
btn.setAttribute("default", event.originalTarget == btn || !(event.originalTarget instanceof Components.interfaces.nsIDOMXULButtonElement));
|
btn.setAttribute("default", event.originalTarget == btn || !(event.originalTarget instanceof Components.interfaces.nsIDOMXULButtonElement));
|
||||||
</handler>
|
</handler>
|
||||||
#endif
|
|
||||||
</handlers>
|
</handlers>
|
||||||
|
|
||||||
</binding>
|
</binding>
|
||||||
|
|
|
||||||
|
|
@ -1232,39 +1232,6 @@
|
||||||
]]></body>
|
]]></body>
|
||||||
</method>
|
</method>
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
<!--
|
|
||||||
- Fetches the currently selected text and sets that as the text to search
|
|
||||||
- next. This is a MacOS specific feature.
|
|
||||||
-->
|
|
||||||
<method name="onFindSelectionCommand">
|
|
||||||
<body><![CDATA[
|
|
||||||
let searchString = this.browser.finder.setSearchStringToSelection();
|
|
||||||
if (searchString)
|
|
||||||
this._findField.value = searchString;
|
|
||||||
]]></body>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<method name="_onFindFieldFocus">
|
|
||||||
<body><![CDATA[
|
|
||||||
let prefsvc = this._prefsvc;
|
|
||||||
const kPref = "accessibility.typeaheadfind.prefillwithselection";
|
|
||||||
if (this.prefillWithSelection && prefsvc.getBoolPref(kPref))
|
|
||||||
return;
|
|
||||||
|
|
||||||
let clipboardSearchString = this._browser.finder.clipboardSearchString;
|
|
||||||
if (clipboardSearchString && this._findField.value != clipboardSearchString &&
|
|
||||||
!this._findField._willfullyDeleted) {
|
|
||||||
this._findField.value = clipboardSearchString;
|
|
||||||
this._findField._hadValue = true;
|
|
||||||
// Changing the search string makes the previous status invalid, so
|
|
||||||
// we better clear it here.
|
|
||||||
this._updateStatusUI();
|
|
||||||
}
|
|
||||||
]]></body>
|
|
||||||
</method>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
- This handles all the result changes for both
|
- This handles all the result changes for both
|
||||||
- type-ahead-find and highlighting.
|
- type-ahead-find and highlighting.
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@
|
||||||
<binding id="optionsDialog"
|
<binding id="optionsDialog"
|
||||||
extends="chrome://global/content/bindings/dialog.xml#dialog">
|
extends="chrome://global/content/bindings/dialog.xml#dialog">
|
||||||
<content>
|
<content>
|
||||||
#ifndef XP_MACOSX
|
|
||||||
<xul:hbox flex="1">
|
<xul:hbox flex="1">
|
||||||
<xul:categoryBox anonid="prefsCategories">
|
<xul:categoryBox anonid="prefsCategories">
|
||||||
<children/>
|
<children/>
|
||||||
|
|
@ -21,16 +20,6 @@
|
||||||
<xul:iframe anonid="panelFrame" name="panelFrame" style="width: 0px;" flex="1"/>
|
<xul:iframe anonid="panelFrame" name="panelFrame" style="width: 0px;" flex="1"/>
|
||||||
</xul:vbox>
|
</xul:vbox>
|
||||||
</xul:hbox>
|
</xul:hbox>
|
||||||
#else
|
|
||||||
<xul:vbox flex="1">
|
|
||||||
<xul:categoryBox anonid="prefsCategories">
|
|
||||||
<children/>
|
|
||||||
</xul:categoryBox>
|
|
||||||
<xul:vbox flex="1">
|
|
||||||
<xul:iframe anonid="panelFrame" name="panelFrame" style="width: 0px;" flex="1"/>
|
|
||||||
</xul:vbox>
|
|
||||||
</xul:vbox>
|
|
||||||
#endif
|
|
||||||
</content>
|
</content>
|
||||||
|
|
||||||
<implementation>
|
<implementation>
|
||||||
|
|
|
||||||
|
|
@ -1146,11 +1146,7 @@
|
||||||
</handler>
|
</handler>
|
||||||
|
|
||||||
<handler event="keypress"
|
<handler event="keypress"
|
||||||
#ifdef XP_MACOSX
|
|
||||||
key="&openHelpMac.commandkey;" modifiers="accel"
|
|
||||||
#else
|
|
||||||
keycode="&openHelp.commandkey;"
|
keycode="&openHelp.commandkey;"
|
||||||
#endif
|
|
||||||
phase="capturing">
|
phase="capturing">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
var helpButton = this.getButton("help");
|
var helpButton = this.getButton("help");
|
||||||
|
|
|
||||||
|
|
@ -79,11 +79,11 @@
|
||||||
<property name="treeBoxObject"
|
<property name="treeBoxObject"
|
||||||
onget="return this.boxObject;"
|
onget="return this.boxObject;"
|
||||||
readonly="true"/>
|
readonly="true"/>
|
||||||
# contentView is obsolete (see bug 202391)
|
<!-- contentView is obsolete (see bug 202391) -->
|
||||||
<property name="contentView"
|
<property name="contentView"
|
||||||
onget="return this.view; /*.QueryInterface(Components.interfaces.nsITreeContentView)*/"
|
onget="return this.view; /*.QueryInterface(Components.interfaces.nsITreeContentView)*/"
|
||||||
readonly="true"/>
|
readonly="true"/>
|
||||||
# builderView is obsolete (see bug 202393)
|
<!-- builderView is obsolete (see bug 202393) -->
|
||||||
<property name="builderView"
|
<property name="builderView"
|
||||||
onget="return this.view; /*.QueryInterface(Components.interfaces.nsIXULTreeBuilder)*/"
|
onget="return this.view; /*.QueryInterface(Components.interfaces.nsIXULTreeBuilder)*/"
|
||||||
readonly="true"/>
|
readonly="true"/>
|
||||||
|
|
@ -774,7 +774,6 @@
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
</handler>
|
</handler>
|
||||||
#ifndef XP_MACOSX
|
|
||||||
<!-- Use F2 key to enter text editing. -->
|
<!-- Use F2 key to enter text editing. -->
|
||||||
<handler event="keydown" keycode="VK_F2">
|
<handler event="keydown" keycode="VK_F2">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
|
|
@ -786,7 +785,6 @@
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
]]>
|
]]>
|
||||||
</handler>
|
</handler>
|
||||||
#endif // XP_MACOSX
|
|
||||||
|
|
||||||
<handler event="keydown" keycode="VK_ESCAPE">
|
<handler event="keydown" keycode="VK_ESCAPE">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
|
|
|
||||||
|
|
@ -465,54 +465,6 @@
|
||||||
</implementation>
|
</implementation>
|
||||||
</binding>
|
</binding>
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
<binding id="wizard-header" extends="chrome://global/content/bindings/wizard.xml#wizard-base">
|
|
||||||
<content>
|
|
||||||
<xul:stack class="wizard-header-stack" flex="1">
|
|
||||||
<xul:vbox class="wizard-header-box-1">
|
|
||||||
<xul:vbox class="wizard-header-box-text">
|
|
||||||
<xul:label class="wizard-header-label" xbl:inherits="xbl:text=label"/>
|
|
||||||
</xul:vbox>
|
|
||||||
</xul:vbox>
|
|
||||||
<xul:hbox class="wizard-header-box-icon">
|
|
||||||
<xul:spacer flex="1"/>
|
|
||||||
<xul:image class="wizard-header-icon" xbl:inherits="src=iconsrc"/>
|
|
||||||
</xul:hbox>
|
|
||||||
</xul:stack>
|
|
||||||
</content>
|
|
||||||
</binding>
|
|
||||||
|
|
||||||
<binding id="wizard-buttons" extends="chrome://global/content/bindings/wizard.xml#wizard-base">
|
|
||||||
<content>
|
|
||||||
<xul:vbox flex="1">
|
|
||||||
<xul:hbox class="wizard-buttons-btm">
|
|
||||||
<xul:button class="wizard-button" dlgtype="extra1" hidden="true"/>
|
|
||||||
<xul:button class="wizard-button" dlgtype="extra2" hidden="true"/>
|
|
||||||
<xul:button label="&button-cancel-mac.label;" class="wizard-button" dlgtype="cancel"/>
|
|
||||||
<xul:spacer flex="1"/>
|
|
||||||
<xul:button label="&button-back-mac.label;" accesskey="&button-back-mac.accesskey;"
|
|
||||||
class="wizard-button wizard-nav-button" dlgtype="back"/>
|
|
||||||
<xul:button label="&button-next-mac.label;" accesskey="&button-next-mac.accesskey;"
|
|
||||||
class="wizard-button wizard-nav-button" dlgtype="next"
|
|
||||||
default="true" xbl:inherits="hidden=lastpage" />
|
|
||||||
<xul:button label="&button-finish-mac.label;" class="wizard-button"
|
|
||||||
dlgtype="finish" default="true" xbl:inherits="hidden=hidefinishbutton" />
|
|
||||||
</xul:hbox>
|
|
||||||
</xul:vbox>
|
|
||||||
</content>
|
|
||||||
|
|
||||||
<implementation>
|
|
||||||
<method name="onPageChange">
|
|
||||||
<body><![CDATA[
|
|
||||||
this.setAttribute("hidefinishbutton", !(this.getAttribute("lastpage") == "true"));
|
|
||||||
]]></body>
|
|
||||||
</method>
|
|
||||||
</implementation>
|
|
||||||
|
|
||||||
</binding>
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
<binding id="wizard-header" extends="chrome://global/content/bindings/wizard.xml#wizard-base">
|
<binding id="wizard-header" extends="chrome://global/content/bindings/wizard.xml#wizard-base">
|
||||||
<content>
|
<content>
|
||||||
<xul:hbox class="wizard-header-box-1" flex="1">
|
<xul:hbox class="wizard-header-box-1" flex="1">
|
||||||
|
|
@ -602,6 +554,5 @@
|
||||||
</property>
|
</property>
|
||||||
</implementation>
|
</implementation>
|
||||||
</binding>
|
</binding>
|
||||||
#endif
|
|
||||||
|
|
||||||
</bindings>
|
</bindings>
|
||||||
|
|
|
||||||
|
|
@ -243,11 +243,6 @@ caption {
|
||||||
|
|
||||||
/******** draggable elements *********/
|
/******** draggable elements *********/
|
||||||
|
|
||||||
%ifdef XP_MACOSX
|
|
||||||
titlebar,
|
|
||||||
toolbar:not([nowindowdrag="true"]):not([customizing="true"]),
|
|
||||||
statusbar:not([nowindowdrag="true"]),
|
|
||||||
%endif
|
|
||||||
windowdragbox {
|
windowdragbox {
|
||||||
-moz-window-dragging: drag;
|
-moz-window-dragging: drag;
|
||||||
}
|
}
|
||||||
|
|
@ -288,12 +283,6 @@ toolbar[customizing="true"][hidden="true"] {
|
||||||
display: -moz-box;
|
display: -moz-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
%ifdef XP_MACOSX
|
|
||||||
toolbar[type="menubar"] {
|
|
||||||
min-height: 0 !important;
|
|
||||||
border: 0 !important;
|
|
||||||
}
|
|
||||||
%else
|
|
||||||
toolbar[type="menubar"][autohide="true"] {
|
toolbar[type="menubar"][autohide="true"] {
|
||||||
-moz-binding: url("chrome://global/content/bindings/toolbar.xml#toolbar-menubar-autohide");
|
-moz-binding: url("chrome://global/content/bindings/toolbar.xml#toolbar-menubar-autohide");
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
@ -305,7 +294,6 @@ toolbar[type="menubar"][autohide="true"][inactive="true"]:not([customizing="true
|
||||||
-moz-appearance: none !important;
|
-moz-appearance: none !important;
|
||||||
border-style: none !important;
|
border-style: none !important;
|
||||||
}
|
}
|
||||||
%endif
|
|
||||||
|
|
||||||
%ifdef MOZ_WIDGET_GTK
|
%ifdef MOZ_WIDGET_GTK
|
||||||
window[shellshowingmenubar="true"] menubar,
|
window[shellshowingmenubar="true"] menubar,
|
||||||
|
|
@ -499,15 +487,9 @@ panel[arrowposition="start_after"]:-moz-locale-dir(rtl) {
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%ifdef XP_MACOSX
|
|
||||||
.statusbar-resizerpanel {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
%else
|
|
||||||
window[sizemode="maximized"] statusbarpanel.statusbar-resizerpanel {
|
window[sizemode="maximized"] statusbarpanel.statusbar-resizerpanel {
|
||||||
visibility: collapse;
|
visibility: collapse;
|
||||||
}
|
}
|
||||||
%endif
|
|
||||||
|
|
||||||
/******** grid **********/
|
/******** grid **********/
|
||||||
|
|
||||||
|
|
@ -1018,9 +1000,6 @@ autorepeatbutton {
|
||||||
|
|
||||||
statusbar {
|
statusbar {
|
||||||
-moz-binding: url("chrome://global/content/bindings/general.xml#statusbar");
|
-moz-binding: url("chrome://global/content/bindings/general.xml#statusbar");
|
||||||
%ifdef XP_MACOSX
|
|
||||||
padding-right: 14px;
|
|
||||||
%endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
statusbarpanel {
|
statusbarpanel {
|
||||||
|
|
|
||||||
|
|
@ -135,8 +135,6 @@ MOZ_SAFE_BROWSING:
|
||||||
"linux",
|
"linux",
|
||||||
#elif XP_WIN
|
#elif XP_WIN
|
||||||
"win",
|
"win",
|
||||||
#elif XP_MACOSX
|
|
||||||
"macosx",
|
|
||||||
#elif XP_LINUX
|
#elif XP_LINUX
|
||||||
"linux",
|
"linux",
|
||||||
#else
|
#else
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue