mirror of
https://github.com/roytam1/UXP.git
synced 2026-05-26 13:58:49 +00: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:
@@ -35,10 +35,10 @@ EPlatformDisabledState PlatformDisabledState();
|
||||
void PreInit();
|
||||
#endif
|
||||
|
||||
#if defined(MOZ_ACCESSIBILITY_ATK) || defined(XP_MACOSX)
|
||||
#if defined(MOZ_ACCESSIBILITY_ATK)
|
||||
/**
|
||||
* Is platform accessibility enabled.
|
||||
* Only used on linux with atk and MacOS for now.
|
||||
* Only used on linux with atk.
|
||||
*/
|
||||
bool ShouldA11yBeEnabled();
|
||||
#endif
|
||||
|
||||
@@ -19,8 +19,4 @@ pref("browser.preferences.instantApply", false);
|
||||
#else
|
||||
pref("browser.preferences.instantApply", true);
|
||||
#endif
|
||||
#ifdef XP_MACOSX
|
||||
pref("browser.preferences.animateFadeIn", true);
|
||||
#else
|
||||
pref("browser.preferences.animateFadeIn", false);
|
||||
#endif
|
||||
|
||||
@@ -20,11 +20,6 @@
|
||||
#define strcasecmp _stricmp
|
||||
#define PATH_SEPARATOR_CHAR '\\'
|
||||
#define R_OK 04
|
||||
#elif defined(XP_MACOSX)
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
#define PATH_SEPARATOR_CHAR '/'
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
@@ -160,41 +155,6 @@ main(int argc, char **argv)
|
||||
char greDir[MAXPATHLEN];
|
||||
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
|
||||
wchar_t 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));
|
||||
|
||||
#endif
|
||||
|
||||
// If -app parameter was passed in, it is now time to take it under
|
||||
// consideration.
|
||||
const char *appDataFile;
|
||||
@@ -334,33 +292,6 @@ main(int argc, char **argv)
|
||||
}
|
||||
|
||||
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) {
|
||||
Output(false, "Could not find the Mozilla runtime.\n");
|
||||
return 1;
|
||||
|
||||
@@ -542,13 +542,6 @@ def target_is_unix(target):
|
||||
|
||||
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)
|
||||
def target_is_linux(target):
|
||||
if target.kernel == 'Linux':
|
||||
|
||||
@@ -298,8 +298,6 @@ nsChromeRegistry::ConvertChromeURL(nsIURI* aChromeURI, nsIURI* *aResult)
|
||||
if (flags & PLATFORM_PACKAGE) {
|
||||
#if defined(XP_WIN)
|
||||
path.Insert("win/", 0);
|
||||
#elif defined(XP_MACOSX)
|
||||
path.Insert("mac/", 0);
|
||||
#else
|
||||
path.Insert("unix/", 0);
|
||||
#endif
|
||||
|
||||
@@ -11,8 +11,6 @@
|
||||
|
||||
#if defined(XP_WIN)
|
||||
#include <windows.h>
|
||||
#elif defined(XP_MACOSX)
|
||||
#include <CoreServices/CoreServices.h>
|
||||
#endif
|
||||
|
||||
#include "nsArrayEnumerator.h"
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# -*- makefile -*-
|
||||
# vim:set ts=8 sw=8 sts=8 noet:
|
||||
#
|
||||
# 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,
|
||||
@@ -751,7 +750,6 @@ $(HOST_LIBRARY): $(HOST_OBJS) Makefile
|
||||
$(EXPAND_LIBS_EXEC) --extract -- $(HOST_AR) $(HOST_AR_FLAGS) $(HOST_OBJS)
|
||||
|
||||
ifdef HAVE_DTRACE
|
||||
ifndef XP_MACOSX
|
||||
ifdef DTRACE_PROBE_OBJ
|
||||
ifndef DTRACE_LIB_DEPENDENT
|
||||
NON_DTRACE_OBJS := $(filter-out $(DTRACE_PROBE_OBJ),$(OBJS))
|
||||
@@ -760,7 +758,6 @@ $(DTRACE_PROBE_OBJ): $(NON_DTRACE_OBJS)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# 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
|
||||
@@ -773,9 +770,7 @@ ifndef INCREMENTAL_LINKER
|
||||
$(RM) $@
|
||||
endif
|
||||
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))
|
||||
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)
|
||||
@$(RM) $(DTRACE_PROBE_OBJ)
|
||||
else # ! DTRACE_LIB_DEPENDENT
|
||||
|
||||
+10
-19
@@ -18,10 +18,6 @@
|
||||
|
||||
// { %%%%% begin platform defs peculiar to Mork %%%%%
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
#define MORK_MAC 1
|
||||
#endif
|
||||
|
||||
#ifdef XP_WIN
|
||||
#define MORK_WIN 1
|
||||
#endif
|
||||
@@ -32,7 +28,7 @@
|
||||
|
||||
// } %%%%% 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 <ctype.h>
|
||||
#include <errno.h>
|
||||
@@ -88,20 +84,15 @@ void mork_fileflush(FILE * file);
|
||||
#define mork_kTAB '\011'
|
||||
#define mork_kCRLF "\015\012" /* A CR LF equivalent string */
|
||||
|
||||
#if defined(MORK_MAC)
|
||||
# define mork_kNewline "\015"
|
||||
# define mork_kNewlineSize 1
|
||||
#if defined(MORK_WIN)
|
||||
# define mork_kNewline "\015\012"
|
||||
# define mork_kNewlineSize 2
|
||||
#else
|
||||
# if defined(MORK_WIN)
|
||||
# define mork_kNewline "\015\012"
|
||||
# define mork_kNewlineSize 2
|
||||
# else
|
||||
# if defined(MORK_UNIX)
|
||||
# define mork_kNewline "\012"
|
||||
# define mork_kNewlineSize 1
|
||||
# endif /* MORK_UNIX */
|
||||
# endif /* MORK_WIN */
|
||||
#endif /* MORK_MAC */
|
||||
# if defined(MORK_UNIX)
|
||||
# define mork_kNewline "\012"
|
||||
# define mork_kNewlineSize 1
|
||||
# endif /* MORK_UNIX */
|
||||
#endif /* MORK_WIN */
|
||||
|
||||
// { %%%%% begin assertion macro %%%%%
|
||||
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 %%%%%
|
||||
|
||||
#if defined(MORK_WIN) || defined(MORK_UNIX) || defined(MORK_MAC)
|
||||
#if defined(MORK_WIN) || defined(MORK_UNIX)
|
||||
#define MORK_USE_C_STDLIB 1
|
||||
#endif /*MORK_WIN*/
|
||||
|
||||
|
||||
@@ -21,11 +21,7 @@ window {
|
||||
* depend on. Must style font-size to target linux.
|
||||
*/
|
||||
%ifdef XP_UNIX
|
||||
%ifndef XP_MACOSX
|
||||
font-size: 13px;
|
||||
%else
|
||||
font-size: 15px;
|
||||
%endif
|
||||
%else
|
||||
font-size: 15px;
|
||||
%endif
|
||||
|
||||
@@ -142,16 +142,6 @@ function evaluateTestScript(script, toolbox) {
|
||||
function bindToolboxHandlers() {
|
||||
gToolbox.once("destroyed", quitApp);
|
||||
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) {
|
||||
|
||||
@@ -110,7 +110,7 @@ devtools.jar:
|
||||
content/framework/toolbox-init.js (framework/toolbox-init.js)
|
||||
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.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.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)
|
||||
|
||||
@@ -32,18 +32,6 @@ public:
|
||||
NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLObjectElement, object)
|
||||
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
|
||||
virtual bool IsInteractiveHTMLContent(bool aIgnoreTabindex) const override;
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
/* vim:set ts=4 sw=4 sts=4 et cindent: */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Copyright 1993 by OpenVision Technologies, Inc.
|
||||
*
|
||||
@@ -94,10 +93,6 @@
|
||||
|
||||
EXTERN_C_BEGIN
|
||||
|
||||
#if defined(XP_MACOSX)
|
||||
# pragma pack(push,2)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If the platform supports the xom.h header file, it should be
|
||||
* included here.
|
||||
@@ -838,10 +833,6 @@ GSS_CALLCONV GSS_FUNC(gss_duplicate_name)
|
||||
);
|
||||
|
||||
|
||||
#if defined(XP_MACOSX)
|
||||
# pragma pack(pop)
|
||||
#endif
|
||||
|
||||
EXTERN_C_END
|
||||
|
||||
#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
|
||||
* 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/. */
|
||||
@@ -25,19 +24,6 @@
|
||||
|
||||
#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)
|
||||
#include <sys/types.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_unwrap_ptr ((gss_unwrap_type)*gssFuncs[9].func)
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
static PRFuncPtr KLCacheHasValidTicketsPtr;
|
||||
#define KLCacheHasValidTickets_ptr \
|
||||
((KLCacheHasValidTickets_type)*KLCacheHasValidTicketsPtr)
|
||||
#endif
|
||||
|
||||
static nsresult
|
||||
gssInit()
|
||||
{
|
||||
@@ -212,15 +192,6 @@ gssInit()
|
||||
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;
|
||||
return NS_OK;
|
||||
@@ -441,24 +412,6 @@ nsAuthGSSAPI::GetNextToken(const void *inToken,
|
||||
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,
|
||||
GSS_C_NO_CREDENTIAL,
|
||||
&mCtx,
|
||||
|
||||
+1
-9
@@ -123,20 +123,12 @@ AllowedImageSize(int32_t aWidth, int32_t aHeight)
|
||||
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;
|
||||
if (MOZ_UNLIKELY(!requiredBytes.isValid())) {
|
||||
NS_WARNING("width or height too large");
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,9 +6,7 @@
|
||||
#include "nsIDateTimeFormat.h"
|
||||
#include "mozilla/RefPtr.h"
|
||||
|
||||
#if defined(XP_MACOSX)
|
||||
#define USE_MAC_LOCALE
|
||||
#elif defined(XP_UNIX)
|
||||
#if defined(XP_UNIX)
|
||||
#define USE_UNIX_LOCALE
|
||||
#endif
|
||||
|
||||
@@ -18,9 +16,6 @@
|
||||
#ifdef USE_UNIX_LOCALE
|
||||
#include "unix/nsDateTimeFormatUnix.h"
|
||||
#endif
|
||||
#ifdef USE_MAC_LOCALE
|
||||
#include "mac/nsDateTimeFormatMac.h"
|
||||
#endif
|
||||
|
||||
using mozilla::MakeAndAddRef;
|
||||
|
||||
|
||||
@@ -15,11 +15,7 @@
|
||||
#include "nsLanguageAtomService.h"
|
||||
#include "nsPlatformCharset.h"
|
||||
|
||||
#if defined(XP_MACOSX)
|
||||
#define USE_MAC_LOCALE
|
||||
#endif
|
||||
|
||||
#if defined(XP_UNIX) && !defined(XP_MACOSX)
|
||||
#if defined(XP_UNIX)
|
||||
#define USE_UNIX_LOCALE
|
||||
#endif
|
||||
|
||||
@@ -28,11 +24,6 @@
|
||||
#include "windows/nsDateTimeFormatWin.h"
|
||||
#endif
|
||||
|
||||
#ifdef USE_MAC_LOCALE
|
||||
#include "mac/nsCollationMacUC.h"
|
||||
#include "mac/nsDateTimeFormatMac.h"
|
||||
#endif
|
||||
|
||||
#ifdef USE_UNIX_LOCALE
|
||||
#include "unix/nsCollationUnix.h"
|
||||
#include "unix/nsDateTimeFormatUnix.h"
|
||||
|
||||
@@ -17,8 +17,6 @@
|
||||
|
||||
#if defined(XP_WIN)
|
||||
# include "nsWin32Locale.h"
|
||||
#elif defined(XP_MACOSX)
|
||||
# include <Carbon/Carbon.h>
|
||||
#elif defined(XP_UNIX)
|
||||
# include <locale.h>
|
||||
# include <stdlib.h>
|
||||
@@ -41,7 +39,7 @@ const char* LocaleList[LocaleListLength] =
|
||||
#define NSILOCALE_MAX_ACCEPT_LANGUAGE 16
|
||||
#define NSILOCALE_MAX_ACCEPT_LENGTH 18
|
||||
|
||||
#if (defined(XP_UNIX) && !defined(XP_MACOSX))
|
||||
#if defined(XP_UNIX)
|
||||
static int posix_locale_category[LocaleListLength] =
|
||||
{
|
||||
LC_COLLATE,
|
||||
@@ -113,7 +111,7 @@ nsLocaleService::nsLocaleService(void)
|
||||
rv = NewLocale(xpLocale, getter_AddRefs(mApplicationLocale));
|
||||
NS_ENSURE_SUCCESS_VOID(rv);
|
||||
#endif
|
||||
#if defined(XP_UNIX) && !defined(XP_MACOSX)
|
||||
#if defined(XP_UNIX)
|
||||
RefPtr<nsLocale> resultLocale(new nsLocale());
|
||||
NS_ENSURE_TRUE_VOID(resultLocale);
|
||||
|
||||
@@ -154,36 +152,7 @@ nsLocaleService::nsLocaleService(void)
|
||||
}
|
||||
mSystemLocale = do_QueryInterface(resultLocale);
|
||||
mApplicationLocale = do_QueryInterface(resultLocale);
|
||||
|
||||
#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)
|
||||
@@ -206,7 +175,7 @@ nsLocaleService::NewLocale(const nsAString &aLocale, nsILocale **_retval)
|
||||
NS_ConvertASCIItoUTF16 category(LocaleList[i]);
|
||||
result = resultLocale->AddCategory(category, aLocale);
|
||||
if (NS_FAILED(result)) return result;
|
||||
#if defined(XP_UNIX) && !defined(XP_MACOSX)
|
||||
#if defined(XP_UNIX)
|
||||
category.AppendLiteral("##PLATFORM");
|
||||
result = resultLocale->AddCategory(category, aLocale);
|
||||
if (NS_FAILED(result)) return result;
|
||||
|
||||
@@ -101,12 +101,6 @@ public:
|
||||
return mProcessType;
|
||||
}
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
task_t GetChildTask() {
|
||||
return mChildTask;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Must run on the IO thread. Cause the OS process to exit and
|
||||
* ensure its OS resources are cleaned up.
|
||||
|
||||
@@ -126,12 +126,8 @@ DefaultJitOptions::DefaultJitOptions()
|
||||
SET_DEFAULT(disableSharedStubs, false);
|
||||
|
||||
// Toggles whether sincos optimization is globally disabled.
|
||||
// See bug984018: The MacOS is the only one that has the sincos fast.
|
||||
#if defined(XP_MACOSX)
|
||||
SET_DEFAULT(disableSincos, false);
|
||||
#else
|
||||
SET_DEFAULT(disableSincos, true);
|
||||
#endif
|
||||
// See bug 984018 as to why this is disabled.
|
||||
SET_DEFAULT(disableSincos, true);
|
||||
|
||||
// Toggles whether sink code motion is globally disabled.
|
||||
SET_DEFAULT(disableSink, true);
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
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 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/.
|
||||
@@ -567,11 +566,6 @@ case "$host" in
|
||||
esac
|
||||
;;
|
||||
|
||||
*-darwin*)
|
||||
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX"
|
||||
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
|
||||
;;
|
||||
|
||||
*-linux*|*-kfreebsd*-gnu|*-gnu*)
|
||||
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
|
||||
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
|
||||
|
||||
@@ -10,9 +10,6 @@
|
||||
#include "mozilla/WindowsDllBlocklist.h"
|
||||
|
||||
#include "nsXULAppAPI.h"
|
||||
#ifdef XP_MACOSX
|
||||
#include "xpcshellMacUtils.h"
|
||||
#endif
|
||||
#ifdef XP_WIN
|
||||
#include <windows.h>
|
||||
#include <shlobj.h>
|
||||
@@ -37,10 +34,6 @@ main(int argc, char** argv, char** envp)
|
||||
gtk_parse_args(&argc, &argv);
|
||||
#endif
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
InitAutoreleasePool();
|
||||
#endif
|
||||
|
||||
// unbuffer stdout so that output is in the correct order; note that stderr
|
||||
// is unbuffered by default
|
||||
setbuf(stdout, 0);
|
||||
@@ -51,9 +44,5 @@ main(int argc, char** argv, char** envp)
|
||||
|
||||
int result = XRE_XPCShellMain(argc, argv, envp);
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
FinishAutoreleasePool();
|
||||
#endif
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -127,16 +127,6 @@ SandboxDump(JSContext* cx, unsigned argc, Value* vp)
|
||||
if (!cstr)
|
||||
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
|
||||
__android_log_write(ANDROID_LOG_INFO, "GeckoDump", cstr);
|
||||
#endif
|
||||
|
||||
@@ -3209,12 +3209,7 @@ XPCJSContext::Initialize()
|
||||
// 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. :-(
|
||||
|
||||
#if defined(XP_MACOSX) || defined(DARWIN)
|
||||
// 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)
|
||||
#if defined(MOZ_ASAN)
|
||||
// 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
|
||||
// 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;
|
||||
argv += 2;
|
||||
} 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;
|
||||
if (!GetCurrentWorkingDirectory(workingDir)) {
|
||||
printf("GetCurrentWorkingDirectory failed.\n");
|
||||
@@ -1314,7 +1298,6 @@ XRE_XPCShellMain(int argc, char** argv, char** envp)
|
||||
printf("NS_NewLocalFile failed.\n");
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (argc > 1 && !strcmp(argv[1], "-a")) {
|
||||
@@ -1570,13 +1553,6 @@ XPCShellDirProvider::SetGREDirs(nsIFile* greDir)
|
||||
{
|
||||
mGREDir = greDir;
|
||||
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
|
||||
|
||||
@@ -387,47 +387,6 @@
|
||||
#define NS_ABVIEW_CONTRACTID \
|
||||
"@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 \
|
||||
{ 0x3c4ac0da, 0x2cda, 0x4018, \
|
||||
{ 0x95, 0x51, 0xe1, 0x58, 0xb2, 0xe1, 0x22, 0xd3 }}
|
||||
|
||||
@@ -343,11 +343,7 @@
|
||||
checked="true"/>
|
||||
</hbox>
|
||||
<spacer flex="1"/>
|
||||
#ifndef XP_MACOSX
|
||||
<description>&clickFinish.label;</description>
|
||||
#else
|
||||
<description>&clickFinish.labelMac;</description>
|
||||
#endif
|
||||
</vbox>
|
||||
</wizardpage>
|
||||
|
||||
|
||||
@@ -822,11 +822,6 @@ nsresult nsMsgFilter::ConvertMoveOrCopyToFolderValue(nsIMsgRuleAction *filterAct
|
||||
if (offset != -1)
|
||||
moveValue.Cut(offset, 4);
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
nsCString unescapedMoveValue;
|
||||
MsgUnescapeString(moveValue, 0, unescapedMoveValue);
|
||||
moveValue = unescapedMoveValue;
|
||||
#endif
|
||||
destFolderUri.Append('/');
|
||||
if (filterVersion == k45Version)
|
||||
{
|
||||
|
||||
@@ -698,7 +698,6 @@ nsresult nsMessenger::SaveAttachment(nsIFile *aFile,
|
||||
saveListener->QueryInterface(NS_GET_IID(nsIStreamListener),
|
||||
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
|
||||
// when saving an attachment to disk..
|
||||
if (MsgLowerCaseEqualsLiteral(aContentType, APPLICATION_BINHEX))
|
||||
@@ -713,7 +712,6 @@ nsresult nsMessenger::SaveAttachment(nsIFile *aFile,
|
||||
channelSupport,
|
||||
getter_AddRefs(convertedListener));
|
||||
}
|
||||
#endif
|
||||
nsCOMPtr<nsIURI> dummyNull;
|
||||
if (fetchService)
|
||||
rv = fetchService->FetchMimePart(URL, fullMessageUri.get(),
|
||||
@@ -771,10 +769,6 @@ nsMessenger::SaveAttachmentToFolder(const nsACString& contentType, const nsACStr
|
||||
ConvertAndSanitizeFileName(PromiseFlatCString(displayName).get(), unescapedFileName);
|
||||
rv = attachmentDestination->Append(unescapedFileName);
|
||||
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);
|
||||
attachmentDestination.swap(*aOutFile);
|
||||
|
||||
@@ -353,11 +353,9 @@ NS_IMETHODIMP nsMsgMailSession::AddMsgWindow(nsIMsgWindow *msgWindow)
|
||||
NS_IMETHODIMP nsMsgMailSession::RemoveMsgWindow(nsIMsgWindow *msgWindow)
|
||||
{
|
||||
mWindows.RemoveObject(msgWindow);
|
||||
// Mac keeps a hidden window open so the app doesn't shut down when
|
||||
// the last window is closed. So don't shutdown the account manager in that
|
||||
// case. Similarly, for suite, we don't want to disable mailnews when the
|
||||
// last mail window is closed.
|
||||
#if !defined(XP_MACOSX) && !defined(MOZ_SUITE)
|
||||
// For suite, we don't want to disable mailnews when the last mail window
|
||||
// is closed (other component windows may still be open).
|
||||
#if !defined(MOZ_SUITE)
|
||||
if (!mWindows.Count())
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
@@ -136,13 +136,11 @@ nsresult nsStatusBarBiffManager::PlayBiffSound(const char *aPrefBranch)
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifndef XP_MACOSX
|
||||
// if nothing played, play the default system sound
|
||||
if (!customSoundPlayed) {
|
||||
rv = mSound->PlayEventSound(nsISound::EVENT_NEW_MAIL_RECEIVED);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
#endif
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
@@ -611,7 +611,7 @@ nsresult NS_MsgCreatePathStringFromFolderURI(const char *aFolderURI,
|
||||
? oldPath.FindChar('/', startSlashPos + 1) - 1 : oldPath.Length() - 1;
|
||||
if (endSlashPos < 0)
|
||||
endSlashPos = oldPath.Length();
|
||||
#if defined(XP_UNIX) || defined(XP_MACOSX)
|
||||
#if defined(XP_UNIX)
|
||||
bool isLocalUri = aScheme.EqualsLiteral("none") ||
|
||||
aScheme.EqualsLiteral("pop3") ||
|
||||
aScheme.EqualsLiteral("rss");
|
||||
@@ -636,7 +636,7 @@ nsresult NS_MsgCreatePathStringFromFolderURI(const char *aFolderURI,
|
||||
CopyUTF16toMUTF7(pathPiece, tmp);
|
||||
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
|
||||
// been hashed. We're only doing this on the mac to limit potential
|
||||
// regressions.
|
||||
|
||||
@@ -102,9 +102,6 @@
|
||||
#ifdef XP_WIN
|
||||
#include "nsMessengerWinIntegration.h"
|
||||
#endif
|
||||
#ifdef XP_MACOSX
|
||||
#include "nsMessengerOSXIntegration.h"
|
||||
#endif
|
||||
#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
|
||||
#include "nsMessengerUnixIntegration.h"
|
||||
#endif
|
||||
@@ -157,12 +154,6 @@
|
||||
#include "nsAbOutlookDirectory.h"
|
||||
#endif
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
#include "nsAbOSXDirectory.h"
|
||||
#include "nsAbOSXCard.h"
|
||||
#include "nsAbOSXDirFactory.h"
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// bayesian spam filter includes
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -379,9 +370,6 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsMsgShutdownService)
|
||||
#ifdef XP_WIN
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsMessengerWinIntegration, Init)
|
||||
#endif
|
||||
#ifdef XP_MACOSX
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsMessengerOSXIntegration, Init)
|
||||
#endif
|
||||
#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsMessengerUnixIntegration, Init)
|
||||
#endif
|
||||
@@ -439,9 +427,6 @@ NS_DEFINE_NAMED_CID(NS_MSGNOTIFICATIONSERVICE_CID);
|
||||
#ifdef XP_WIN
|
||||
NS_DEFINE_NAMED_CID(NS_MESSENGERWININTEGRATION_CID);
|
||||
#endif
|
||||
#ifdef XP_MACOSX
|
||||
NS_DEFINE_NAMED_CID(NS_MESSENGEROSXINTEGRATION_CID);
|
||||
#endif
|
||||
#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
|
||||
NS_DEFINE_NAMED_CID(NS_MESSENGERUNIXINTEGRATION_CID);
|
||||
#endif
|
||||
@@ -499,12 +484,6 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbView)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMsgVCardService)
|
||||
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_ABDIRECTORY_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);
|
||||
#endif
|
||||
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_MSGVCARDSERVICE_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_ABLDIFSERVICE_CID);
|
||||
@@ -923,9 +897,6 @@ const mozilla::Module::CIDEntry kMailNewsCIDs[] = {
|
||||
#ifdef XP_WIN
|
||||
{ &kNS_MESSENGERWININTEGRATION_CID, false, NULL, nsMessengerWinIntegrationConstructor},
|
||||
#endif
|
||||
#ifdef XP_MACOSX
|
||||
{ &kNS_MESSENGEROSXINTEGRATION_CID, false, NULL, nsMessengerOSXIntegrationConstructor},
|
||||
#endif
|
||||
#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
|
||||
{ &kNS_MESSENGERUNIXINTEGRATION_CID, false, NULL, nsMessengerUnixIntegrationConstructor},
|
||||
#endif
|
||||
@@ -968,11 +939,6 @@ const mozilla::Module::CIDEntry kMailNewsCIDs[] = {
|
||||
{ &kNS_ABLDAPDIRFACTORY_CID, false, NULL, nsAbLDAPDirFactoryConstructor },
|
||||
#endif
|
||||
{ &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_MSGVCARDSERVICE_CID, false, NULL, nsMsgVCardServiceConstructor },
|
||||
{ &kNS_ABLDIFSERVICE_CID, false, NULL, nsAbLDIFServiceConstructor },
|
||||
@@ -1141,9 +1107,6 @@ const mozilla::Module::ContractIDEntry kMailNewsContracts[] = {
|
||||
#ifdef XP_WIN
|
||||
{ NS_MESSENGEROSINTEGRATION_CONTRACTID, &kNS_MESSENGERWININTEGRATION_CID },
|
||||
#endif
|
||||
#ifdef XP_MACOSX
|
||||
{ NS_MESSENGEROSINTEGRATION_CONTRACTID, &kNS_MESSENGEROSXINTEGRATION_CID },
|
||||
#endif
|
||||
#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
|
||||
{ NS_MESSENGEROSINTEGRATION_CONTRACTID, &kNS_MESSENGERUNIXINTEGRATION_CID },
|
||||
#endif
|
||||
@@ -1190,11 +1153,6 @@ const mozilla::Module::ContractIDEntry kMailNewsContracts[] = {
|
||||
#endif
|
||||
|
||||
{ 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_MSGVCARDSERVICE_CONTRACTID, &kNS_MSGVCARDSERVICE_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 },
|
||||
{ "content-policy", NS_MSGCONTENTPOLICY_CONTRACTID, NS_MSGCONTENTPOLICY_CONTRACTID },
|
||||
MAILNEWSDLF_CATEGORIES
|
||||
#ifdef XP_MACOSX
|
||||
{ "app-startup", NS_MESSENGEROSINTEGRATION_CONTRACTID, "service," NS_MESSENGEROSINTEGRATION_CONTRACTID}
|
||||
,
|
||||
#endif
|
||||
// Address Book Entries
|
||||
{ "command-line-handler", "m-addressbook", NS_ABMANAGERSTARTUPHANDLER_CONTRACTID },
|
||||
// Bayesian Filter Entries
|
||||
|
||||
@@ -36,77 +36,6 @@
|
||||
#include "mozilla/mailnews/MimeEncoder.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...
|
||||
//
|
||||
@@ -239,12 +168,7 @@ NS_IMETHODIMP nsMsgAttachmentHandler::GetAlreadyEncoded(bool* aAlreadyEncoded)
|
||||
void
|
||||
nsMsgAttachmentHandler::CleanupTempFile()
|
||||
{
|
||||
#ifdef XP_MACOSX
|
||||
if (mEncodedWorkingFile) {
|
||||
mEncodedWorkingFile->Remove(false);
|
||||
mEncodedWorkingFile = nullptr;
|
||||
}
|
||||
#endif // XP_MACOSX
|
||||
/** Mac Stub **/
|
||||
}
|
||||
|
||||
void
|
||||
@@ -549,13 +473,8 @@ FetcherURLDoneCallback(nsresult aStatus,
|
||||
ma->m_size = totalSize;
|
||||
if (!aContentType.IsEmpty())
|
||||
{
|
||||
#ifdef XP_MACOSX
|
||||
//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
|
||||
// can't send appledouble on non-macs
|
||||
if (!aContentType.EqualsLiteral("multipart/appledouble"))
|
||||
#endif
|
||||
ma->m_type = aContentType;
|
||||
}
|
||||
|
||||
@@ -698,15 +617,6 @@ done:
|
||||
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
|
||||
nsMsgAttachmentHandler::SnarfAttachment(nsMsgCompFields *compFields)
|
||||
{
|
||||
@@ -747,33 +657,6 @@ nsMsgAttachmentHandler::SnarfAttachment(nsMsgCompFields *compFields)
|
||||
nsCString sourceURISpec;
|
||||
rv = mURL->GetSpec(sourceURISpec);
|
||||
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
|
||||
@@ -793,236 +676,6 @@ nsMsgAttachmentHandler::SnarfAttachment(nsMsgCompFields *compFields)
|
||||
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
|
||||
nsMsgAttachmentHandler::LoadDataFromFile(nsIFile *file, nsString &sigData, bool charsetConversion)
|
||||
{
|
||||
|
||||
@@ -16,42 +16,6 @@
|
||||
#include "nsAutoPtr.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 mailnews {
|
||||
class MimeEncoder;
|
||||
@@ -95,14 +59,6 @@ private:
|
||||
bool UseUUEncode_p(void);
|
||||
void AnalyzeDataChunk (const char *chunk, int32_t chunkSize);
|
||||
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:
|
||||
@@ -113,12 +69,6 @@ public:
|
||||
nsMsgCompFields *mCompFields; // Message composition fields for the sender
|
||||
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_xMacCreator; // Mac file creator
|
||||
|
||||
|
||||
@@ -2088,9 +2088,7 @@ nsMsgComposeAndSend::AddCompFieldLocalAttachments()
|
||||
if (NS_SUCCEEDED(rv) && !fileExt.IsEmpty()) {
|
||||
nsAutoCString type;
|
||||
mimeFinder->GetTypeFromExtension(fileExt, type);
|
||||
#ifndef XP_MACOSX
|
||||
if (!type.Equals("multipart/appledouble")) // can't do apple double on non-macs
|
||||
#endif
|
||||
m_attachments[newLoc]->m_type = type;
|
||||
}
|
||||
}
|
||||
@@ -2105,9 +2103,7 @@ nsMsgComposeAndSend::AddCompFieldLocalAttachments()
|
||||
if (NS_SUCCEEDED(rv) && !fileExt.IsEmpty()) {
|
||||
nsAutoCString type;
|
||||
mimeFinder->GetTypeFromExtension(fileExt, type);
|
||||
#ifndef XP_MACOSX
|
||||
if (!type.Equals("multipart/appledouble")) // can't do apple double on non-macs
|
||||
#endif
|
||||
m_attachments[newLoc]->m_type = type;
|
||||
// rtf and vcs files may look like text to sniffers,
|
||||
// but they're not human readable.
|
||||
|
||||
@@ -724,27 +724,8 @@ bool nsIMAPBodypartLeaf::ShouldFetchInline(nsIMAPBodyShell *aShell)
|
||||
|
||||
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"
|
||||
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);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -88,14 +78,6 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsTextImport)
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
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
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -125,9 +107,6 @@ static const mozilla::Module::CategoryEntry kMailNewsImportCategories[] = {
|
||||
#ifdef MOZ_MAPI_SUPPORT
|
||||
{ "mailnewsimport", "{1DB469A0-8B00-11d3-A206-00A0CC26DA63}", kOutlookSupportsString },
|
||||
#endif
|
||||
#endif
|
||||
#if defined(XP_MACOSX)
|
||||
{ "mailnewsimport", "{6d3f101c-70ec-4e04-b68d-9908d1aeddf3}", kAppleMailSupportsString },
|
||||
#endif
|
||||
{ NULL }
|
||||
};
|
||||
@@ -137,11 +116,6 @@ const mozilla::Module::CIDEntry kMailNewsImportCIDs[] = {
|
||||
{ &kNS_IMPORTMIMEENCODE_CID, false, NULL, nsIImportMimeEncodeImplConstructor },
|
||||
{ &kNS_TEXTIMPORT_CID, false, NULL, nsTextImportConstructor },
|
||||
{ &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
|
||||
{ &kNS_OEIMPORT_CID, false, NULL, nsOEImportConstructor },
|
||||
{ &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-text;1", &kNS_TEXTIMPORT_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
|
||||
{ "@mozilla.org/import/import-oe;1", &kNS_OEIMPORT_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#"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
onload="OnLoadImportDialog()"
|
||||
#ifdef XP_MACOSX
|
||||
style="width: &window.macWidth; !important;"
|
||||
#else
|
||||
style="width: &window.width; !important;"
|
||||
#endif
|
||||
title="&importDialog.windowTitle;">
|
||||
|
||||
<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/shutdownWindow.xul (base/content/shutdownWindow.xul)
|
||||
content/messenger/shutdownWindow.js (base/content/shutdownWindow.js)
|
||||
#ifndef XP_MACOSX
|
||||
content/messenger/newmailalert.css (base/content/newmailalert.css)
|
||||
content/messenger/newmailalert.js (base/content/newmailalert.js)
|
||||
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.preview_length", 40);
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
pref("mail.biff.play_sound", false);
|
||||
#else
|
||||
pref("mail.biff.play_sound", true);
|
||||
#endif
|
||||
// 0 == default system sound, 1 == user specified wav
|
||||
pref("mail.biff.play_sound.type", 0);
|
||||
// _moz_mailbeep is a magic key, for the default sound.
|
||||
@@ -710,8 +706,6 @@ pref("mail.biff.show_alert", true);
|
||||
#ifdef XP_WIN
|
||||
pref("mail.biff.show_tray_icon", true);
|
||||
pref("mail.biff.show_balloon", false);
|
||||
#elifdef XP_MACOSX
|
||||
pref("mail.biff.animate_dock_icon", false);
|
||||
#elifdef XP_UNIX
|
||||
pref("mail.biff.use_system_alert", false);
|
||||
#endif
|
||||
@@ -724,13 +718,6 @@ pref("mail.biff.add_interval_jitter", true);
|
||||
pref("mail.biff.on_new_window", true);
|
||||
#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.
|
||||
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);
|
||||
#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
|
||||
// want to disable it so people can see where they are dragging things.
|
||||
|
||||
@@ -21,10 +21,6 @@
|
||||
MimeDefClass(MimeExternalBody, MimeExternalBodyClass,
|
||||
mimeExternalBodyClass, &MIME_SUPERCLASS);
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
extern MimeObjectClass mimeMultipartAppleDoubleClass;
|
||||
#endif
|
||||
|
||||
static int MimeExternalBody_initialize (MimeObject *);
|
||||
static void MimeExternalBody_finalize (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);
|
||||
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 &&
|
||||
obj->output_p &&
|
||||
obj->options &&
|
||||
@@ -425,10 +415,6 @@ FAIL:
|
||||
PR_FREEIF(subj);
|
||||
}
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
done:
|
||||
#endif
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
@@ -55,19 +55,6 @@ MimeMultipartAppleDouble_parse_begin (MimeObject *obj)
|
||||
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
|
||||
multipart/appledouble part (both links) that looks just like the
|
||||
links that MimeExternalObject emits for external leaf parts.
|
||||
@@ -156,10 +143,6 @@ GOTTA STILL DO THIS FOR QUOTING!
|
||||
if (status < 0) return status;
|
||||
}
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
done:
|
||||
#endif
|
||||
|
||||
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 &&
|
||||
!PL_strcasecmp(child->content_type, APPLICATION_APPLEFILE))
|
||||
{
|
||||
#ifdef XP_MACOSX
|
||||
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. */
|
||||
/* Don't emit the resources fork. */
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -16,10 +16,6 @@
|
||||
#include "nsMimeTypes.h"
|
||||
#include <ctype.h>
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
extern MimeObjectClass mimeMultipartAppleDoubleClass;
|
||||
#endif
|
||||
|
||||
#define MIME_SUPERCLASS mimeContainerClass
|
||||
MimeDefClass(MimeMultipart, MimeMultipartClass,
|
||||
mimeMultipartClass, &MIME_SUPERCLASS);
|
||||
@@ -492,19 +488,6 @@ MimeMultipart_create_child(MimeObject *obj)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,11 +23,6 @@ DIRS += [
|
||||
'news',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
|
||||
DIRS += [
|
||||
'import/applemail/src',
|
||||
]
|
||||
|
||||
if CONFIG['OS_ARCH'] == 'WINNT':
|
||||
DIRS += [ 'import/becky/src' ]
|
||||
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
* vim: sw=4 ts=4 et :
|
||||
*/
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/* 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/. */
|
||||
@@ -152,13 +150,9 @@ MFBT_API void* moz_xvalloc(size_t size)
|
||||
*/
|
||||
|
||||
/* NB: This is defined just to silence vacuous warnings about symbol
|
||||
* visibility on OS X/gcc. These symbols are force-inline and not
|
||||
* exported. */
|
||||
#if defined(XP_MACOSX)
|
||||
# define MOZALLOC_EXPORT_NEW MFBT_API
|
||||
#else
|
||||
# define MOZALLOC_EXPORT_NEW
|
||||
#endif
|
||||
* visibility on gcc. These symbols are force-inline and not exported.
|
||||
*/
|
||||
#define MOZALLOC_EXPORT_NEW
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
/*
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/* -*- 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
|
||||
* 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/. */
|
||||
@@ -62,7 +61,7 @@ static void print_usage() {
|
||||
"signed_input_archive.mar base_64_encoded_signature_file "
|
||||
"changed_signed_output.mar\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(" mar [-C workingDir] -D DERFilePath -v signed_archive.mar\n");
|
||||
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)
|
||||
uint32_t fileSizes[MAX_SIGNATURES];
|
||||
const uint8_t* certBuffers[MAX_SIGNATURES];
|
||||
#if ((!defined(MAR_NSS) && defined(XP_WIN)) || defined(XP_MACOSX)) || \
|
||||
((defined(XP_WIN) || defined(XP_MACOSX)) && !defined(MAR_NSS))
|
||||
#if defined(XP_WIN) && !defined(MAR_NSS)
|
||||
char* DERFilePaths[MAX_SIGNATURES];
|
||||
#endif
|
||||
#if (!defined(XP_WIN) && !defined(XP_MACOSX)) || defined(MAR_NSS)
|
||||
#if !defined(XP_WIN) || defined(MAR_NSS)
|
||||
CERTCertificate* certs[MAX_SIGNATURES];
|
||||
#endif
|
||||
#endif
|
||||
@@ -139,8 +137,7 @@ int main(int argc, char **argv) {
|
||||
#if defined(XP_WIN) && !defined(MAR_NSS) && !defined(NO_SIGN_VERIFY)
|
||||
memset((void*)certBuffers, 0, sizeof(certBuffers));
|
||||
#endif
|
||||
#if !defined(NO_SIGN_VERIFY) && ((!defined(MAR_NSS) && defined(XP_WIN)) || \
|
||||
defined(XP_MACOSX))
|
||||
#if !defined(NO_SIGN_VERIFY) && (!defined(MAR_NSS) && defined(XP_WIN))
|
||||
memset(DERFilePaths, 0, sizeof(DERFilePaths));
|
||||
memset(fileSizes, 0, sizeof(fileSizes));
|
||||
#endif
|
||||
@@ -171,8 +168,7 @@ int main(int argc, char **argv) {
|
||||
argv += 2;
|
||||
argc -= 2;
|
||||
}
|
||||
#if !defined(NO_SIGN_VERIFY) && ((!defined(MAR_NSS) && defined(XP_WIN)) || \
|
||||
defined(XP_MACOSX))
|
||||
#if !defined(NO_SIGN_VERIFY) && (!defined(MAR_NSS) && defined(XP_WIN))
|
||||
/* -D DERFilePath, also matches -D[index] DERFilePath
|
||||
We allow an index for verifying to be symmetric
|
||||
with the import and export command line arguments. */
|
||||
@@ -330,7 +326,7 @@ int main(int argc, char **argv) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
#if (!defined(XP_WIN) && !defined(XP_MACOSX)) || defined(MAR_NSS)
|
||||
#if !defined(XP_WIN) || defined(MAR_NSS)
|
||||
if (!NSSConfigDir || certCount == 0) {
|
||||
print_usage();
|
||||
return -1;
|
||||
@@ -344,7 +340,7 @@ int main(int argc, char **argv) {
|
||||
|
||||
rv = 0;
|
||||
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,
|
||||
&certBuffers[k], &fileSizes[k]);
|
||||
|
||||
@@ -384,7 +380,7 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
}
|
||||
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]);
|
||||
#else
|
||||
/* 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");
|
||||
}
|
||||
}
|
||||
#if (!defined(XP_WIN) && !defined(XP_MACOSX)) || defined(MAR_NSS)
|
||||
#if !defined(XP_WIN) || defined(MAR_NSS)
|
||||
(void) NSS_Shutdown();
|
||||
#endif
|
||||
return rv ? -1 : 0;
|
||||
|
||||
@@ -57,54 +57,7 @@ CryptoX_Result NSS_VerifySignature(VFYContext * const *ctx ,
|
||||
#define CryptoX_FreeCertificate(cert) \
|
||||
CERT_DestroyCertificate(*cert)
|
||||
|
||||
#elif XP_MACOSX
|
||||
|
||||
#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)
|
||||
#if defined(XP_WIN)
|
||||
|
||||
#include <windows.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 */
|
||||
static const char* specialFiles[] = {
|
||||
#if defined(XP_MACOSX)
|
||||
"macprefs.js"
|
||||
#elif defined(XP_WIN)
|
||||
#if defined(XP_WIN)
|
||||
"winpref.js"
|
||||
#elif defined(XP_UNIX)
|
||||
"unix.js"
|
||||
|
||||
+9
-401
@@ -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");
|
||||
#endif
|
||||
#if defined(MOZ_FFMPEG)
|
||||
#if defined(XP_MACOSX)
|
||||
pref("media.ffmpeg.enabled", false);
|
||||
#else
|
||||
pref("media.ffmpeg.enabled", true);
|
||||
#endif
|
||||
pref("media.libavcodec.allow-obsolete", false);
|
||||
#endif
|
||||
#if defined(MOZ_FFVPX)
|
||||
@@ -526,11 +522,7 @@ pref("media.getusermedia.agc", 1);
|
||||
// capture_delay: Adjustments for OS-specific input delay (lower bound)
|
||||
// playout_delay: Adjustments for OS-specific AudioStream+cubeb+output delay (lower bound)
|
||||
// full_duplex: enable cubeb full-duplex capture/playback
|
||||
#if defined(XP_MACOSX)
|
||||
pref("media.peerconnection.capture_delay", 50);
|
||||
pref("media.getusermedia.playout_delay", 10);
|
||||
pref("media.navigator.audio.full_duplex", false);
|
||||
#elif defined(XP_WIN)
|
||||
#if defined(XP_WIN)
|
||||
pref("media.peerconnection.capture_delay", 50);
|
||||
pref("media.getusermedia.playout_delay", 40);
|
||||
pref("media.navigator.audio.full_duplex", false);
|
||||
@@ -567,7 +559,7 @@ pref("media.mediasource.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);
|
||||
#else
|
||||
pref("media.mediasource.webm.enabled", true);
|
||||
@@ -695,14 +687,6 @@ pref("apz.scale_repaint_delay_ms", 500);
|
||||
pref("apz.desktop.enabled", false);
|
||||
#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.
|
||||
pref("layout.scroll.root-frame-containers", false);
|
||||
|
||||
@@ -717,8 +701,8 @@ pref("gfx.perf-warnings.enabled", false);
|
||||
// Color Management System
|
||||
// 0 = Off, 1 = All Images, 2 = Tagged Images Only.
|
||||
// See eCMSMode in gfx/thebes/gfxPlatform.h
|
||||
// Enabled by default on Windows and Mac, disabled elsewhere
|
||||
#if defined(XP_WIN) || defined(XP_MACOSX)
|
||||
// Enabled by default on Windows, disabled elsewhere
|
||||
#if defined(XP_WIN)
|
||||
pref("gfx.color_management.mode", 2);
|
||||
#else
|
||||
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.content.azure.backends", "direct2d1.1,cairo");
|
||||
#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.
|
||||
pref("gfx.canvas.azure.backends", "skia,cairo");
|
||||
pref("gfx.content.azure.backends", "cairo");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
pref("gfx.canvas.skiagl.dynamic-cache", true);
|
||||
|
||||
@@ -808,7 +785,6 @@ pref("accessibility.warn_on_browsewithcaret", true);
|
||||
|
||||
pref("accessibility.browsewithcaret_shortcut.enabled", true);
|
||||
|
||||
#ifndef XP_MACOSX
|
||||
// Tab focus model bit field:
|
||||
// 1 focuses text controls, 2 focuses other form elements, 4 adds links.
|
||||
// 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.
|
||||
pref("accessibility.tabfocus", 7);
|
||||
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
|
||||
// "gtk-primary-button-warps-slider" property with GTK (since 2.24 / 3.6),
|
||||
// unless this preference is explicitly set.
|
||||
#if !defined(XP_MACOSX) && !defined(MOZ_WIDGET_GTK)
|
||||
#if !defined(MOZ_WIDGET_GTK)
|
||||
pref("ui.scrollToClick", 0);
|
||||
#endif
|
||||
|
||||
@@ -888,11 +860,7 @@ pref("accessibility.typeaheadfind.timeout", 4000);
|
||||
pref("accessibility.typeaheadfind.enabletimeout", true);
|
||||
pref("accessibility.typeaheadfind.soundURL", "beep");
|
||||
pref("accessibility.typeaheadfind.enablesound", true);
|
||||
#ifdef XP_MACOSX
|
||||
pref("accessibility.typeaheadfind.prefillwithselection", false);
|
||||
#else
|
||||
pref("accessibility.typeaheadfind.prefillwithselection", true);
|
||||
#endif
|
||||
pref("accessibility.typeaheadfind.matchesCountLimit", 1000);
|
||||
pref("findbar.highlightAll", false);
|
||||
pref("findbar.modalHighlight", false);
|
||||
@@ -1111,7 +1079,7 @@ pref("print.print_edge_right", 0);
|
||||
pref("print.print_edge_bottom", 0);
|
||||
|
||||
// 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);
|
||||
#else
|
||||
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.shell", 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.disks", 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?
|
||||
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);
|
||||
#endif
|
||||
|
||||
// Is support for the CSS-wide "unset" value enabled?
|
||||
pref("layout.css.unset-value.enabled", true);
|
||||
@@ -3572,328 +3531,6 @@ pref("ui.osk.debug.keyboardDisplayReason", "");
|
||||
# XP_WIN
|
||||
#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
|
||||
// Handled differently under Mac/Windows
|
||||
pref("network.protocol-handler.warn-external.file", false);
|
||||
@@ -4103,7 +3740,6 @@ pref("gfx.font_rendering.fontconfig.max_generic_substitutions", 3);
|
||||
|
||||
# XP_UNIX
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#if OS_ARCH==AIX
|
||||
@@ -4243,9 +3879,6 @@ pref("canvas.poisondata", false);
|
||||
// WebGL prefs
|
||||
pref("gl.msaa-level", 2);
|
||||
pref("gl.require-hardware", false);
|
||||
#ifdef XP_MACOSX
|
||||
pref("gl.multithreaded", true);
|
||||
#endif
|
||||
pref("gl.ignore-dx-interop2-blacklist", 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
|
||||
// Default timeout for retransmission of unack'd keepalive probes.
|
||||
// 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
|
||||
#endif
|
||||
// Default maximum probe retransmissions.
|
||||
// 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);
|
||||
#endif
|
||||
|
||||
// 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
|
||||
pref("layers.acceleration.enabled", false);
|
||||
#else
|
||||
@@ -4372,13 +4005,6 @@ pref("layers.tiles.adjust", true);
|
||||
// 0 -> full-tilt mode: Recomposite even if not transaction occured.
|
||||
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
|
||||
pref("layers.offmainthreadcomposition.async-animations", true);
|
||||
|
||||
@@ -4425,11 +4051,6 @@ pref("layers.shared-buffer-provider.enabled", true);
|
||||
pref("layers.shared-buffer-provider.enabled", false);
|
||||
#endif
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
// cf. Bug 1324908
|
||||
pref("layers.shared-buffer-provider.enabled", false);
|
||||
#endif
|
||||
|
||||
// Force all possible layers to be always active layers
|
||||
pref("layers.force-active", false);
|
||||
|
||||
@@ -4586,11 +4207,7 @@ pref("dom.mozPermissionSettings.enabled", false);
|
||||
// W3C touch events
|
||||
// 0 - disabled, 1 - enabled, 2 - autodetect
|
||||
// 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);
|
||||
#endif
|
||||
|
||||
// W3C draft pointer events
|
||||
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.
|
||||
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.
|
||||
pref("dom.meta-viewport.enabled", false);
|
||||
|
||||
|
||||
@@ -955,7 +955,7 @@ MozDescribeCodeAddress(void* aPC, MozCodeAddressDetails* aDetails)
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(XP_WIN) || defined (XP_MACOSX) || defined (XP_LINUX)
|
||||
#if defined(XP_WIN) || defined (XP_LINUX)
|
||||
namespace mozilla {
|
||||
bool
|
||||
FramePointerStackWalk(MozWalkStackCallback aCallback, uint32_t aSkipFrames,
|
||||
@@ -979,8 +979,8 @@ FramePointerStackWalk(MozWalkStackCallback aCallback, uint32_t aSkipFrames,
|
||||
(uintptr_t(next) & 3)) {
|
||||
break;
|
||||
}
|
||||
#if (defined(__ppc__) && defined(XP_MACOSX)) || defined(__powerpc64__)
|
||||
// ppc mac or powerpc64 linux
|
||||
#if defined(__powerpc64__)
|
||||
// powerpc64 linux
|
||||
void* pc = *(bp + 2);
|
||||
bp += 3;
|
||||
#else // i386 or powerpc32 linux
|
||||
|
||||
@@ -818,10 +818,6 @@ class Artifacts(object):
|
||||
return ('linux64' if target_64bit else 'linux') + target_suffix
|
||||
if self._defines.get('XP_WIN', False):
|
||||
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|!')
|
||||
|
||||
def _pushheads_from_rev(self, rev, count):
|
||||
|
||||
@@ -119,12 +119,6 @@ AppPicker.prototype =
|
||||
return file.getVersionInfoField("FileDescription");
|
||||
} catch (e) {}
|
||||
}
|
||||
#elifdef XP_MACOSX
|
||||
if (file instanceof Components.interfaces.nsILocalFileMac) {
|
||||
try {
|
||||
return file.bundleDisplayName;
|
||||
} catch (e) {}
|
||||
}
|
||||
#endif
|
||||
return file.leafName;
|
||||
},
|
||||
@@ -183,8 +177,6 @@ AppPicker.prototype =
|
||||
var startLocation;
|
||||
#ifdef XP_WIN
|
||||
startLocation = "ProgF"; // Program Files
|
||||
#elifdef XP_MACOSX
|
||||
startLocation = "LocApp"; // Local Applications
|
||||
#else
|
||||
startLocation = "Home";
|
||||
#endif
|
||||
|
||||
@@ -118,15 +118,6 @@ XPCOMUtils.defineLazyGetter(this, "gABI", function() {
|
||||
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;
|
||||
});
|
||||
|
||||
|
||||
@@ -57,10 +57,6 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_WIDGET_GTK
|
||||
#include <gtk/gtk.h>
|
||||
#endif
|
||||
@@ -1376,12 +1372,7 @@ nsDownloadManager::GetDefaultDownloadsDirectory(nsIFile **aResult)
|
||||
mBundle->GetStringFromName(u"downloadsFolder",
|
||||
getter_Copies(folderName));
|
||||
|
||||
#if defined (XP_MACOSX)
|
||||
rv = dirService->Get(NS_OSX_DEFAULT_DOWNLOAD_DIR,
|
||||
NS_GET_IID(nsIFile),
|
||||
getter_AddRefs(downloadDir));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
#elif defined(XP_WIN)
|
||||
#if defined(XP_WIN)
|
||||
rv = dirService->Get(NS_WIN_DEFAULT_DOWNLOAD_DIR,
|
||||
NS_GET_IID(nsIFile),
|
||||
getter_AddRefs(downloadDir));
|
||||
@@ -2445,19 +2436,11 @@ nsDownloadManager::Observe(nsISupports *aSubject,
|
||||
nsCOMPtr<nsISupportsPRBool> cancelDownloads =
|
||||
do_QueryInterface(aSubject, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
#ifndef XP_MACOSX
|
||||
ConfirmCancelDownloads(currDownloadCount, cancelDownloads,
|
||||
u"quitCancelDownloadsAlertTitle",
|
||||
u"quitCancelDownloadsAlertMsgMultiple",
|
||||
u"quitCancelDownloadsAlertMsg",
|
||||
u"dontQuitButtonWin");
|
||||
#else
|
||||
ConfirmCancelDownloads(currDownloadCount, cancelDownloads,
|
||||
u"quitCancelDownloadsAlertTitle",
|
||||
u"quitCancelDownloadsAlertMsgMacMultiple",
|
||||
u"quitCancelDownloadsAlertMsgMac",
|
||||
u"dontQuitButtonMac");
|
||||
#endif
|
||||
} else if (strcmp(aTopic, "offline-requested") == 0 && currDownloadCount) {
|
||||
nsCOMPtr<nsISupportsPRBool> cancelDownloads =
|
||||
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<nsIFile> file;
|
||||
nsAutoString path;
|
||||
@@ -2757,7 +2740,6 @@ nsDownload::SetState(DownloadState aState)
|
||||
file &&
|
||||
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"
|
||||
// list, with a pref to disable.
|
||||
{
|
||||
@@ -2795,18 +2777,6 @@ nsDownload::SetState(DownloadState aState)
|
||||
g_object_unref(gio_file);
|
||||
#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
|
||||
@@ -3389,14 +3359,10 @@ nsDownload::OpenWithApplication()
|
||||
if (!prefs || NS_FAILED(prefs->GetBoolPref(PREF_BH_DELETETEMPFILEONEXIT,
|
||||
&deleteTempFileOnExit))) {
|
||||
// No prefservice or no pref set; use default value
|
||||
#if !defined(XP_MACOSX)
|
||||
// Mac users have been very verbal about temp files being deleted on
|
||||
// Some 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
|
||||
// other platforms for now.
|
||||
// all platforms for now.
|
||||
deleteTempFileOnExit = true;
|
||||
#else
|
||||
deleteTempFileOnExit = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
// Always schedule files to be deleted at the end of the private browsing
|
||||
|
||||
@@ -312,9 +312,7 @@ this.DownloadIntegration = {
|
||||
}
|
||||
|
||||
let directoryPath = null;
|
||||
#ifdef XP_MACOSX
|
||||
directoryPath = this._getDirectory("DfltDwnld");
|
||||
#elifdef XP_WIN
|
||||
#ifdef XP_WIN
|
||||
// For XP/2K, use My Documents/Downloads. Other version uses
|
||||
// the default Downloads directory.
|
||||
let version = parseFloat(Services.sysinfo.getProperty("version"));
|
||||
@@ -383,11 +381,7 @@ this.DownloadIntegration = {
|
||||
*/
|
||||
getTemporaryDownloadsDirectory: Task.async(function* () {
|
||||
let directoryPath = null;
|
||||
#ifdef XP_MACOSX
|
||||
directoryPath = yield this.getPreferredDownloadsDirectory();
|
||||
#else
|
||||
directoryPath = this._getDirectory("TmpD");
|
||||
#endif
|
||||
return directoryPath;
|
||||
}),
|
||||
|
||||
|
||||
@@ -25,11 +25,6 @@
|
||||
#include "nsILocalFileWin.h"
|
||||
#endif
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
#include "../../../../xpcom/io/CocoaFileUtils.h"
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_WIDGET_GTK
|
||||
#include <gtk/gtk.h>
|
||||
#endif
|
||||
@@ -69,39 +64,13 @@ static void gio_set_metadata_done(GObject *source_obj, GAsyncResult *res, gpoint
|
||||
}
|
||||
#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,
|
||||
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;
|
||||
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"
|
||||
// list, with a pref to disable.
|
||||
{
|
||||
@@ -136,53 +105,10 @@ nsresult DownloadPlatform::DownloadDone(nsIURI* aSource, nsIURI* aReferrer, nsIF
|
||||
nullptr, gio_set_metadata_done, nullptr);
|
||||
g_object_unref(file_info);
|
||||
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
|
||||
#endif // defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -184,17 +184,10 @@ this.DownloadPrompter.prototype = {
|
||||
switch (aPromptType) {
|
||||
case this.ON_QUIT:
|
||||
title = s.quitCancelDownloadsAlertTitle;
|
||||
#ifdef XP_MACOSX
|
||||
message = aDownloadsCount > 1
|
||||
? s.quitCancelDownloadsAlertMsgMacMultiple(aDownloadsCount)
|
||||
: s.quitCancelDownloadsAlertMsgMac;
|
||||
cancelButton = s.dontQuitButtonMac;
|
||||
#else
|
||||
message = aDownloadsCount > 1
|
||||
? s.quitCancelDownloadsAlertMsgMultiple(aDownloadsCount)
|
||||
: s.quitCancelDownloadsAlertMsg;
|
||||
cancelButton = s.dontQuitButtonWin;
|
||||
#endif
|
||||
break;
|
||||
case this.ON_OFFLINE:
|
||||
title = s.offlineCancelDownloadsAlertTitle;
|
||||
|
||||
@@ -18,11 +18,11 @@ EXTRA_JS_MODULES += [
|
||||
'DownloadList.jsm',
|
||||
'Downloads.jsm',
|
||||
'DownloadStore.jsm',
|
||||
'DownloadUIHelper.jsm',
|
||||
]
|
||||
|
||||
EXTRA_PP_JS_MODULES += [
|
||||
'DownloadIntegration.jsm',
|
||||
'DownloadUIHelper.jsm',
|
||||
]
|
||||
|
||||
FINAL_LIBRARY = 'xul'
|
||||
|
||||
@@ -486,12 +486,7 @@ function HandleSignonKeyPress(e) {
|
||||
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) {
|
||||
#endif
|
||||
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
|
||||
# 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/.
|
||||
@@ -126,10 +126,8 @@
|
||||
<hbox align="end">
|
||||
<hbox class="actionButtons" flex="1">
|
||||
<spacer flex="1"/>
|
||||
#ifndef XP_MACOSX
|
||||
<button oncommand="close();" icon="close"
|
||||
label="&closebutton.label;" accesskey="&closebutton.accesskey;"/>
|
||||
#endif
|
||||
</hbox>
|
||||
</hbox>
|
||||
</window>
|
||||
|
||||
@@ -35,14 +35,7 @@
|
||||
#include <unistd.h>
|
||||
#endif // defined(XP_WIN)
|
||||
|
||||
#if defined(XP_MACOSX)
|
||||
#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)
|
||||
#if defined(XP_UNIX)
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
#endif // defined(XP_UNIX)
|
||||
@@ -1239,30 +1232,7 @@ nsPerformanceStatsService::GetResources(uint64_t* userTime,
|
||||
MOZ_ASSERT(userTime);
|
||||
MOZ_ASSERT(systemTime);
|
||||
|
||||
#if defined(XP_MACOSX)
|
||||
// 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)
|
||||
#if defined(XP_UNIX)
|
||||
struct rusage rusage;
|
||||
#if defined(RUSAGE_THREAD)
|
||||
// Under Linux, we can obtain per-thread statistics
|
||||
@@ -1306,7 +1276,7 @@ nsPerformanceStatsService::GetResources(uint64_t* userTime,
|
||||
// Convert 100 ns to 1 us.
|
||||
*userTime = userTimeInt.QuadPart / 10;
|
||||
|
||||
#endif // defined(XP_MACOSX) || defined(XP_UNIX) || defined(XP_WIN)
|
||||
#endif // defined(XP_UNIX) || defined(XP_WIN)
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -60,14 +60,8 @@ XPCOMUtils.defineLazyModuleGetter(this, "PlacesUIUtils",
|
||||
// refresh instead.
|
||||
const MIN_TRANSACTIONS_FOR_BATCH = 5;
|
||||
|
||||
// On Mac OSX, the transferable system converts "\r\n" to "\n\n", where
|
||||
// we really just want "\n". On other platforms, the transferable system
|
||||
// converts "\r\n" to "\n".
|
||||
#ifdef XP_MACOSX
|
||||
const NEWLINE = "\n";
|
||||
#else
|
||||
// The transferable system converts "\r\n" to "\n" where needed.
|
||||
const NEWLINE = "\r\n";
|
||||
#endif
|
||||
|
||||
function QI_node(aNode, aIID) {
|
||||
var result = null;
|
||||
|
||||
@@ -68,10 +68,9 @@ if CONFIG['MOZ_PLACES']:
|
||||
'PlacesSearchAutocompleteProvider.jsm',
|
||||
'PlacesSyncUtils.jsm',
|
||||
'PlacesTransactions.jsm',
|
||||
'PlacesUtils.jsm',
|
||||
]
|
||||
|
||||
EXTRA_PP_JS_MODULES += ['PlacesUtils.jsm']
|
||||
|
||||
EXTRA_COMPONENTS += [
|
||||
'ColorAnalyzer.js',
|
||||
'nsLivemarkService.js',
|
||||
|
||||
@@ -6,10 +6,8 @@ toolkit.jar:
|
||||
content/global/printdialog.js (content/printdialog.js)
|
||||
content/global/printdialog.xul (content/printdialog.xul)
|
||||
#ifdef XP_UNIX
|
||||
#ifndef XP_MACOSX
|
||||
content/global/printjoboptions.js (content/printjoboptions.js)
|
||||
content/global/printjoboptions.xul (content/printjoboptions.xul)
|
||||
#endif
|
||||
#endif
|
||||
content/global/printPageSetup.js (content/printPageSetup.js)
|
||||
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
|
||||
- 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/content/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">
|
||||
<image id="info.icon" class="spaced"/>
|
||||
</hbox>
|
||||
<vbox id="infoContainer"
|
||||
#ifndef XP_MACOSX
|
||||
pack="center"
|
||||
#endif
|
||||
>
|
||||
<!-- Only shown on OS X, since it has no dialog title -->
|
||||
<vbox id="infoContainer" pack="center">
|
||||
<description id="info.title"
|
||||
#ifndef XP_MACOSX
|
||||
hidden="true"
|
||||
#else
|
||||
style="margin-bottom: 1em"
|
||||
#endif
|
||||
/>
|
||||
<description id="info.body" context="contentAreaContextMenu" noinitialfocus="true"/>
|
||||
</vbox>
|
||||
|
||||
@@ -315,27 +315,16 @@
|
||||
group="system" action="this.onKeyAction('default', event);"/>
|
||||
<handler event="keypress" keycode="VK_ESCAPE"
|
||||
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">
|
||||
let bnum = this.args.defaultButtonNum || 0;
|
||||
let defaultButton = this.ui["button" + bnum];
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
// On OS X, the default button always stays marked as such (until
|
||||
// the entire prompt blurs).
|
||||
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.
|
||||
// The default button is only marked as such when no other button has focus.
|
||||
// XUL buttons 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 someButtonFocused = event.originalTarget instanceof Ci.nsIDOMXULButtonElement;
|
||||
defaultButton.setAttribute("default", focusedDefault || !someButtonFocused);
|
||||
#endif
|
||||
</handler>
|
||||
<handler event="blur">
|
||||
// If focus shifted to somewhere else in the browser, don't make
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
toolkit.jar:
|
||||
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/selectDialog.js (content/selectDialog.js)
|
||||
content/global/selectDialog.xul (content/selectDialog.xul)
|
||||
|
||||
@@ -1016,27 +1016,11 @@ nsFormFillController::KeyPress(nsIDOMEvent* aEvent)
|
||||
keyEvent->GetKeyCode(&k);
|
||||
switch (k) {
|
||||
case nsIDOMKeyEvent::DOM_VK_DELETE:
|
||||
#ifndef XP_MACOSX
|
||||
mController->HandleDelete(&cancel);
|
||||
break;
|
||||
case nsIDOMKeyEvent::DOM_VK_BACK_SPACE:
|
||||
mController->HandleText(&unused);
|
||||
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_DOWN:
|
||||
{
|
||||
|
||||
@@ -274,10 +274,6 @@ nsAppStartup::Run(void)
|
||||
// with a zombie process.
|
||||
|
||||
if (!mShuttingDown && mConsiderQuitStopper != 0) {
|
||||
#ifdef XP_MACOSX
|
||||
EnterLastWindowClosingSurvivalArea();
|
||||
#endif
|
||||
|
||||
mRunning = true;
|
||||
|
||||
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 (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) {
|
||||
// there are no windows...
|
||||
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;
|
||||
@@ -406,10 +367,6 @@ nsAppStartup::Quit(uint32_t aMode)
|
||||
|
||||
if (!mAttemptingQuit) {
|
||||
mAttemptingQuit = true;
|
||||
#ifdef XP_MACOSX
|
||||
// now even the Mac wants to quit when the last window is closed
|
||||
ExitLastWindowClosingSurvivalArea();
|
||||
#endif
|
||||
if (obsService)
|
||||
obsService->NotifyObservers(nullptr, "quit-application-granted", nullptr);
|
||||
}
|
||||
|
||||
@@ -8542,14 +8542,6 @@
|
||||
"kind": "flag",
|
||||
"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" : {
|
||||
"expires_in_version": "never",
|
||||
"kind": "linear",
|
||||
|
||||
@@ -207,7 +207,6 @@
|
||||
"DEVTOOLS_WEBIDE_WIFI_CONNECTION_RESULT",
|
||||
"DISPLAY_SCALING_LINUX",
|
||||
"DISPLAY_SCALING_MSWIN",
|
||||
"DISPLAY_SCALING_OSX",
|
||||
"DNS_BLACKLIST_COUNT",
|
||||
"DNS_CLEANUP_AGE",
|
||||
"DNS_FAILED_LOOKUP_TIME",
|
||||
@@ -938,7 +937,6 @@
|
||||
"DEVTOOLS_WEBIDE_WIFI_CONNECTION_RESULT",
|
||||
"DISPLAY_SCALING_LINUX",
|
||||
"DISPLAY_SCALING_MSWIN",
|
||||
"DISPLAY_SCALING_OSX",
|
||||
"DNS_BLACKLIST_COUNT",
|
||||
"DNS_CLEANUP_AGE",
|
||||
"DNS_FAILED_LOOKUP_TIME",
|
||||
|
||||
@@ -71,18 +71,6 @@ this.PageThumbUtils = {
|
||||
let windowScale = aWindow ? aWindow.devicePixelRatio : systemScale;
|
||||
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.
|
||||
* If you change these values from the prefs,
|
||||
|
||||
@@ -11,11 +11,11 @@ EXTRA_COMPONENTS += [
|
||||
EXTRA_JS_MODULES += [
|
||||
'PageThumbs.jsm',
|
||||
'PageThumbsWorker.js',
|
||||
'PageThumbUtils.jsm',
|
||||
]
|
||||
|
||||
EXTRA_PP_JS_MODULES += [
|
||||
'BackgroundPageThumbs.jsm',
|
||||
'PageThumbUtils.jsm',
|
||||
]
|
||||
|
||||
JAR_MANIFESTS += ['jar.mn']
|
||||
|
||||
@@ -83,9 +83,7 @@ namespace safebrowsing {
|
||||
static PlatformType
|
||||
GetPlatformType()
|
||||
{
|
||||
#if defined(XP_MACOSX)
|
||||
return OSX_PLATFORM;
|
||||
#elif defined(XP_LINUX)
|
||||
#if defined(XP_LINUX)
|
||||
return LINUX_PLATFORM;
|
||||
#elif defined(XP_WIN)
|
||||
return WINDOWS_PLATFORM;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
# -*- Mode: HTML -*-
|
||||
# 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/.
|
||||
<!-- -*- Mode: XML -*-
|
||||
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/. -->
|
||||
|
||||
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://global/content/viewSource.css" type="text/css"?>
|
||||
@@ -99,10 +99,8 @@
|
||||
label="&savePageCmd.label;" accesskey="&savePageCmd.accesskey;"/>
|
||||
<menuitem command="cmd_pagesetup" id="menu_pageSetup"
|
||||
label="&pageSetupCmd.label;" accesskey="&pageSetupCmd.accesskey;"/>
|
||||
#ifndef XP_MACOSX
|
||||
<menuitem command="cmd_printpreview" id="menu_printPreview"
|
||||
label="&printPreviewCmd.label;" accesskey="&printPreviewCmd.accesskey;"/>
|
||||
#endif
|
||||
<menuitem key="key_print" command="cmd_print" id="menu_print"
|
||||
label="&printCmd.label;" accesskey="&printCmd.accesskey;"/>
|
||||
<menuseparator/>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0"?>
|
||||
# -*- Mode: HTML -*-
|
||||
# -*- Mode: XML -*-
|
||||
# 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/.
|
||||
@@ -50,10 +50,6 @@
|
||||
oncommand="document.getElementById('FindToolbar').onFindAgainCommand(false);"/>
|
||||
<command id="cmd_findPrevious"
|
||||
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_goToLine" oncommand="viewSourceChrome.promptAndGoToLine();" disabled="true"/>
|
||||
<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_findAgain" key="&findAgainCmd.commandkey;" command="cmd_findAgain" modifiers="accel"/>
|
||||
<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_findPrevious" modifiers="shift"/>
|
||||
|
||||
<key keycode="VK_BACK" command="Browser:Back"/>
|
||||
<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="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
|
||||
<key id="goBackKb2" key="&goBackCmd.commandKey;" command="Browser:Back" modifiers="accel"/>
|
||||
<key id="goForwardKb2" key="&goForwardCmd.commandKey;" command="Browser:Forward" modifiers="accel"/>
|
||||
@@ -150,10 +138,8 @@
|
||||
label="&savePageCmd.label;" accesskey="&savePageCmd.accesskey;"/>
|
||||
<menuitem command="cmd_pagesetup" id="menu_pageSetup"
|
||||
label="&pageSetupCmd.label;" accesskey="&pageSetupCmd.accesskey;"/>
|
||||
#ifndef XP_MACOSX
|
||||
<menuitem command="cmd_printpreview" id="menu_printPreview"
|
||||
label="&printPreviewCmd.label;" accesskey="&printPreviewCmd.accesskey;"/>
|
||||
#endif
|
||||
<menuitem key="key_print" command="cmd_print" id="menu_print"
|
||||
label="&printCmd.label;" accesskey="&printCmd.accesskey;"/>
|
||||
<menuseparator/>
|
||||
|
||||
@@ -7,6 +7,6 @@ toolkit.jar:
|
||||
content/global/viewSource.js (content/viewSource.js)
|
||||
* content/global/viewSource.xul (content/viewSource.xul)
|
||||
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/viewSource-content.js (content/viewSource-content.js)
|
||||
|
||||
@@ -131,8 +131,6 @@ function display(profileData) {
|
||||
let button = document.createElement('button');
|
||||
#ifdef XP_WIN
|
||||
let string = 'winOpenDir2';
|
||||
#elifdef XP_MACOSX
|
||||
let string = 'macOpenDir';
|
||||
#else
|
||||
let string = 'openDir';
|
||||
#endif
|
||||
|
||||
@@ -155,12 +155,8 @@
|
||||
<th class="column">
|
||||
#ifdef XP_WIN
|
||||
&aboutSupport.appBasicsProfileDirWinMac;
|
||||
#else
|
||||
#ifdef XP_MACOSX
|
||||
&aboutSupport.appBasicsProfileDirWinMac;
|
||||
#else
|
||||
&aboutSupport.appBasicsProfileDir;
|
||||
#endif
|
||||
#endif
|
||||
</th>
|
||||
|
||||
@@ -168,12 +164,8 @@
|
||||
<button id="profile-dir-button">
|
||||
#ifdef XP_WIN
|
||||
&aboutSupport.showWin2.label;
|
||||
#else
|
||||
#ifdef XP_MACOSX
|
||||
&aboutSupport.showMac.label;
|
||||
#else
|
||||
&aboutSupport.showDir.label;
|
||||
#endif
|
||||
#endif
|
||||
</button>
|
||||
</td>
|
||||
|
||||
@@ -212,10 +212,6 @@ function wrapToolbarItems()
|
||||
{
|
||||
forEachCustomizableToolbar(function (toolbar) {
|
||||
Array.forEach(toolbar.childNodes, function (item) {
|
||||
#ifdef XP_MACOSX
|
||||
if (item.firstChild && item.firstChild.localName == "menubar")
|
||||
return;
|
||||
#endif
|
||||
if (isToolbarItem(item)) {
|
||||
let wrapper = wrapToolbarItem(item);
|
||||
cleanupItemForToolbar(item, wrapper);
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<?xml version="1.0"?>
|
||||
# -*- Mode: HTML -*-
|
||||
# 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/.
|
||||
#
|
||||
# WARNING!!! This file is obsoleted by the dialog.xml widget
|
||||
#
|
||||
<!-- -*- Mode: XML -*-
|
||||
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/.
|
||||
|
||||
WARNING!!! This file is obsoleted by the dialog.xml widget
|
||||
-->
|
||||
|
||||
<!DOCTYPE overlay SYSTEM "chrome://global/locale/dialogOverlay.dtd">
|
||||
|
||||
@@ -14,44 +14,6 @@
|
||||
|
||||
<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">
|
||||
<spacer flex="1"/>
|
||||
<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="help" label="&helpButton.label;" oncommand="doHelpButton();"/>
|
||||
</hbox>
|
||||
#endif
|
||||
|
||||
<keyset id="dialogKeys">
|
||||
<key keycode="VK_RETURN" oncommand="if (!document.getElementById('ok').disabled) doOKButton();"/>
|
||||
<key keycode="VK_ESCAPE" oncommand="doCancelButton();"/>
|
||||
#ifdef XP_MACOSX
|
||||
<key key="." modifiers="meta" oncommand="doCancelButton();"/>
|
||||
#
|
||||
#endif
|
||||
</keyset>
|
||||
|
||||
</overlay>
|
||||
|
||||
@@ -4,12 +4,6 @@
|
||||
|
||||
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 wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
|
||||
.getService(Components.interfaces.nsIWindowMediator);
|
||||
@@ -29,7 +23,6 @@ function closeWindow(aClose, aPromptFunction)
|
||||
return false;
|
||||
if (windowCount != 1 && typeof(aPromptFunction) == "function" && !aPromptFunction())
|
||||
return false;
|
||||
#endif
|
||||
|
||||
if (aClose) {
|
||||
window.close();
|
||||
|
||||
@@ -15,7 +15,7 @@ toolkit.jar:
|
||||
#ifdef MOZ_OFFICIAL_BRANDING
|
||||
* content/global/aboutRights.xhtml
|
||||
#else
|
||||
* content/global/aboutRights.xhtml (aboutRights-unbranded.xhtml)
|
||||
content/global/aboutRights.xhtml (aboutRights-unbranded.xhtml)
|
||||
#endif
|
||||
content/global/aboutNetworking.js
|
||||
content/global/aboutNetworking.xhtml
|
||||
@@ -41,7 +41,7 @@ toolkit.jar:
|
||||
* content/global/buildconfig.html
|
||||
* content/global/contentAreaUtils.js
|
||||
content/global/customizeToolbar.css
|
||||
* content/global/customizeToolbar.js
|
||||
content/global/customizeToolbar.js
|
||||
content/global/customizeToolbar.xul
|
||||
content/global/datepicker.xhtml
|
||||
content/global/editMenuOverlay.js
|
||||
@@ -50,7 +50,7 @@ toolkit.jar:
|
||||
* content/global/finddialog.xul
|
||||
content/global/findUtils.js
|
||||
content/global/filepicker.properties
|
||||
* content/global/globalOverlay.js
|
||||
content/global/globalOverlay.js
|
||||
content/global/mozilla.xhtml
|
||||
#ifdef MOZ_PHOENIX
|
||||
content/global/logopage.xhtml
|
||||
@@ -66,7 +66,7 @@ toolkit.jar:
|
||||
content/global/treeUtils.js
|
||||
content/global/viewZoomOverlay.js
|
||||
content/global/globalOverlay.xul
|
||||
* content/global/dialogOverlay.xul
|
||||
content/global/dialogOverlay.xul
|
||||
content/global/dialogOverlay.js
|
||||
content/global/inlineSpellCheckUI.js
|
||||
content/global/nsClipboard.js
|
||||
@@ -88,7 +88,7 @@ toolkit.jar:
|
||||
content/global/bindings/editor.xml (widgets/editor.xml)
|
||||
content/global/bindings/expander.xml (widgets/expander.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/groupbox.xml (widgets/groupbox.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/toolbar.xml (widgets/toolbar.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.css (widgets/videocontrols.css)
|
||||
* 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/gmp-sources/eme-adobe.json (gmp-sources/eme-adobe.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>
|
||||
|
||||
|
||||
#if defined(XP_WIN) || defined(XP_MACOSX) || defined(XP_LINUX)
|
||||
#if defined(XP_WIN) || defined(XP_LINUX)
|
||||
|
||||
<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)
|
||||
this.cancelDialog();
|
||||
</handler>
|
||||
#ifdef XP_MACOSX
|
||||
<handler event="keypress" key="." modifiers="meta" phase="capturing" action="this.cancelDialog();"/>
|
||||
#else
|
||||
<handler event="focus" phase="capturing">
|
||||
var btn = this.getButton(this.defaultButton);
|
||||
if (btn)
|
||||
btn.setAttribute("default", event.originalTarget == btn || !(event.originalTarget instanceof Components.interfaces.nsIDOMXULButtonElement));
|
||||
</handler>
|
||||
#endif
|
||||
</handlers>
|
||||
|
||||
</binding>
|
||||
|
||||
@@ -1232,39 +1232,6 @@
|
||||
]]></body>
|
||||
</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
|
||||
- type-ahead-find and highlighting.
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
<binding id="optionsDialog"
|
||||
extends="chrome://global/content/bindings/dialog.xml#dialog">
|
||||
<content>
|
||||
#ifndef XP_MACOSX
|
||||
<xul:hbox flex="1">
|
||||
<xul:categoryBox anonid="prefsCategories">
|
||||
<children/>
|
||||
@@ -21,16 +20,6 @@
|
||||
<xul:iframe anonid="panelFrame" name="panelFrame" style="width: 0px;" flex="1"/>
|
||||
</xul:vbox>
|
||||
</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>
|
||||
|
||||
<implementation>
|
||||
|
||||
@@ -1146,11 +1146,7 @@
|
||||
</handler>
|
||||
|
||||
<handler event="keypress"
|
||||
#ifdef XP_MACOSX
|
||||
key="&openHelpMac.commandkey;" modifiers="accel"
|
||||
#else
|
||||
keycode="&openHelp.commandkey;"
|
||||
#endif
|
||||
phase="capturing">
|
||||
<![CDATA[
|
||||
var helpButton = this.getButton("help");
|
||||
|
||||
@@ -79,11 +79,11 @@
|
||||
<property name="treeBoxObject"
|
||||
onget="return this.boxObject;"
|
||||
readonly="true"/>
|
||||
# contentView is obsolete (see bug 202391)
|
||||
<!-- contentView is obsolete (see bug 202391) -->
|
||||
<property name="contentView"
|
||||
onget="return this.view; /*.QueryInterface(Components.interfaces.nsITreeContentView)*/"
|
||||
readonly="true"/>
|
||||
# builderView is obsolete (see bug 202393)
|
||||
<!-- builderView is obsolete (see bug 202393) -->
|
||||
<property name="builderView"
|
||||
onget="return this.view; /*.QueryInterface(Components.interfaces.nsIXULTreeBuilder)*/"
|
||||
readonly="true"/>
|
||||
@@ -774,7 +774,6 @@
|
||||
event.preventDefault();
|
||||
}
|
||||
</handler>
|
||||
#ifndef XP_MACOSX
|
||||
<!-- Use F2 key to enter text editing. -->
|
||||
<handler event="keydown" keycode="VK_F2">
|
||||
<![CDATA[
|
||||
@@ -786,7 +785,6 @@
|
||||
event.preventDefault();
|
||||
]]>
|
||||
</handler>
|
||||
#endif // XP_MACOSX
|
||||
|
||||
<handler event="keydown" keycode="VK_ESCAPE">
|
||||
<![CDATA[
|
||||
|
||||
@@ -465,54 +465,6 @@
|
||||
</implementation>
|
||||
</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">
|
||||
<content>
|
||||
<xul:hbox class="wizard-header-box-1" flex="1">
|
||||
@@ -602,6 +554,5 @@
|
||||
</property>
|
||||
</implementation>
|
||||
</binding>
|
||||
#endif
|
||||
|
||||
</bindings>
|
||||
|
||||
@@ -243,11 +243,6 @@ caption {
|
||||
|
||||
/******** draggable elements *********/
|
||||
|
||||
%ifdef XP_MACOSX
|
||||
titlebar,
|
||||
toolbar:not([nowindowdrag="true"]):not([customizing="true"]),
|
||||
statusbar:not([nowindowdrag="true"]),
|
||||
%endif
|
||||
windowdragbox {
|
||||
-moz-window-dragging: drag;
|
||||
}
|
||||
@@ -288,12 +283,6 @@ toolbar[customizing="true"][hidden="true"] {
|
||||
display: -moz-box;
|
||||
}
|
||||
|
||||
%ifdef XP_MACOSX
|
||||
toolbar[type="menubar"] {
|
||||
min-height: 0 !important;
|
||||
border: 0 !important;
|
||||
}
|
||||
%else
|
||||
toolbar[type="menubar"][autohide="true"] {
|
||||
-moz-binding: url("chrome://global/content/bindings/toolbar.xml#toolbar-menubar-autohide");
|
||||
overflow: hidden;
|
||||
@@ -305,7 +294,6 @@ toolbar[type="menubar"][autohide="true"][inactive="true"]:not([customizing="true
|
||||
-moz-appearance: none !important;
|
||||
border-style: none !important;
|
||||
}
|
||||
%endif
|
||||
|
||||
%ifdef MOZ_WIDGET_GTK
|
||||
window[shellshowingmenubar="true"] menubar,
|
||||
@@ -499,15 +487,9 @@ panel[arrowposition="start_after"]:-moz-locale-dir(rtl) {
|
||||
|
||||
%endif
|
||||
|
||||
%ifdef XP_MACOSX
|
||||
.statusbar-resizerpanel {
|
||||
display: none;
|
||||
}
|
||||
%else
|
||||
window[sizemode="maximized"] statusbarpanel.statusbar-resizerpanel {
|
||||
visibility: collapse;
|
||||
}
|
||||
%endif
|
||||
|
||||
/******** grid **********/
|
||||
|
||||
@@ -1018,9 +1000,6 @@ autorepeatbutton {
|
||||
|
||||
statusbar {
|
||||
-moz-binding: url("chrome://global/content/bindings/general.xml#statusbar");
|
||||
%ifdef XP_MACOSX
|
||||
padding-right: 14px;
|
||||
%endif
|
||||
}
|
||||
|
||||
statusbarpanel {
|
||||
|
||||
@@ -135,8 +135,6 @@ MOZ_SAFE_BROWSING:
|
||||
"linux",
|
||||
#elif XP_WIN
|
||||
"win",
|
||||
#elif XP_MACOSX
|
||||
"macosx",
|
||||
#elif XP_LINUX
|
||||
"linux",
|
||||
#else
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user