diff -r ecd5bb5744dc -r f6b055dd94bc mozilla-kde.patch --- a/mozilla-kde.patch Sat Mar 31 09:26:42 2012 +0200 +++ b/mozilla-kde.patch Sat Mar 31 22:19:28 2012 +0200 @@ -27,7 +27,7 @@ diff --git a/modules/libpref/src/Preferences.cpp b/modules/libpref/src/Preferences.cpp --- a/modules/libpref/src/Preferences.cpp +++ b/modules/libpref/src/Preferences.cpp -@@ -56,16 +56,17 @@ +@@ -57,16 +57,17 @@ #include "nsIStringEnumerator.h" #include "nsIZipReader.h" #include "nsPrefBranch.h" @@ -45,14 +45,14 @@ #include "prefapi.h" #include "prefread.h" #include "prefapi_private_data.h" -@@ -935,30 +936,48 @@ pref_LoadPrefsInDir(nsIFile* aDir, char - } +@@ -937,16 +938,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char static nsresult pref_LoadPrefsInDirList(const char *listId) { nsresult rv; nsCOMPtr dirSvc(do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv)); - if (NS_FAILED(rv)) return rv; + if (NS_FAILED(rv)) + return rv; + // make sure we load these special files after all the others + static const char* specialFiles[] = { @@ -72,30 +72,34 @@ + } + } + - nsCOMPtr dirList; + nsCOMPtr list; dirSvc->Get(listId, NS_GET_IID(nsISimpleEnumerator), - getter_AddRefs(dirList)); - if (dirList) { - bool hasMore; - while (NS_SUCCEEDED(dirList->HasMoreElements(&hasMore)) && hasMore) { - nsCOMPtr elem; - dirList->GetNext(getter_AddRefs(elem)); - if (elem) { - nsCOMPtr dir = do_QueryInterface(elem); - if (dir) { - // Do we care if a file provided by this process fails to load? -- pref_LoadPrefsInDir(dir, nsnull, 0); -+ pref_LoadPrefsInDir(dir, specialFiles, NS_ARRAY_LENGTH(specialFiles)); - } - } - } + getter_AddRefs(list)); + if (!list) + return NS_OK; + + bool hasMore; +@@ -962,17 +981,17 @@ static nsresult pref_LoadPrefsInDirList( + + nsCAutoString leaf; + path->GetNativeLeafName(leaf); + + // Do we care if a file provided by this process fails to load? + if (Substring(leaf, leaf.Length() - 4).Equals(NS_LITERAL_CSTRING(".xpi"))) + ReadExtensionPrefs(path); + else +- pref_LoadPrefsInDir(path, nsnull, 0); ++ pref_LoadPrefsInDir(path, specialFiles, NS_ARRAY_LENGTH(specialFiles)); } return NS_OK; } static nsresult pref_ReadPrefFromJar(nsZipArchive* jarReader, const char *name) -@@ -1051,28 +1070,40 @@ static nsresult pref_InitInitialObjects( + { + nsZipItemPtr manifest(jarReader, name, true); + NS_ENSURE_TRUE(manifest.Buffer(), NS_ERROR_NOT_AVAILABLE); +@@ -1062,28 +1081,40 @@ 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) @@ -139,17 +143,18 @@ diff --git a/toolkit/components/downloads/Makefile.in b/toolkit/components/downloads/Makefile.in --- a/toolkit/components/downloads/Makefile.in +++ b/toolkit/components/downloads/Makefile.in -@@ -75,8 +75,10 @@ EXTRA_COMPONENTS = \ +@@ -73,8 +73,11 @@ EXTRA_COMPONENTS = \ + nsDownloadManagerUI.js \ + nsDownloadManagerUI.manifest \ $(NULL) endif - ifdef ENABLE_TESTS - DIRS += test - endif + TEST_DIRS += test include $(topsrcdir)/config/rules.mk + +LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre ++ diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/components/downloads/nsDownloadManager.cpp --- a/toolkit/components/downloads/nsDownloadManager.cpp +++ b/toolkit/components/downloads/nsDownloadManager.cpp @@ -174,7 +179,7 @@ #include "AndroidBridge.h" #endif -@@ -2214,16 +2218,25 @@ nsDownload::SetState(DownloadState aStat +@@ -2221,16 +2225,25 @@ nsDownload::SetState(DownloadState aStat nsCOMPtr pref(do_GetService(NS_PREFSERVICE_CONTRACTID)); // Master pref to control this function. @@ -200,7 +205,7 @@ PRInt64 goat = PR_Now() - mStartTime; showTaskbarAlert = goat > alertIntervalUSec; -@@ -2247,19 +2260,20 @@ nsDownload::SetState(DownloadState aStat +@@ -2254,19 +2267,20 @@ nsDownload::SetState(DownloadState aStat // If downloads are automatically removed per the user's // retention policy, there's no reason to make the text clickable // because if it is, they'll click open the download manager and @@ -225,7 +230,7 @@ diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn --- a/toolkit/content/jar.mn +++ b/toolkit/content/jar.mn -@@ -40,29 +40,33 @@ toolkit.jar: +@@ -44,29 +44,33 @@ toolkit.jar: *+ content/global/viewZoomOverlay.js (viewZoomOverlay.js) *+ content/global/bindings/autocomplete.xml (widgets/autocomplete.xml) *+ content/global/bindings/browser.xml (widgets/browser.xml) @@ -2092,8 +2097,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp --- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp +++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp -@@ -45,16 +45,18 @@ - #include "nsReadableUtils.h" +@@ -46,16 +46,18 @@ #include "nsArrayUtils.h" #include "prnetdb.h" #include "prenv.h" @@ -2101,6 +2105,7 @@ #include "nsNetUtil.h" #include "nsISupportsPrimitives.h" #include "nsIGSettingsService.h" + #include "nsInterfaceHashtable.h" +#include "nsVoidArray.h" +#include "nsKDEUtils.h" @@ -2111,10 +2116,10 @@ nsUnixSystemProxySettings() {} nsresult Init(); -@@ -64,16 +66,17 @@ private: - - nsCOMPtr mGConf; +@@ -67,16 +69,17 @@ private: nsCOMPtr mGSettings; + nsCOMPtr mProxySettings; + nsInterfaceHashtable mSchemeProxySettings; bool IsProxyMode(const char* aMode); nsresult SetProxyResultFromGConf(const char* aKeyBase, const char* aType, nsACString& aResult); nsresult GetProxyFromGConf(const nsACString& aScheme, const nsACString& aHost, PRInt32 aPort, nsACString& aResult); @@ -2129,7 +2134,7 @@ nsUnixSystemProxySettings::Init() { // If this is a GNOME session, load gconf and try to use its preferences. -@@ -526,16 +529,19 @@ nsUnixSystemProxySettings::GetProxyForUR +@@ -529,16 +532,19 @@ nsUnixSystemProxySettings::GetProxyForUR nsCAutoString host; rv = aURI->GetHost(host); NS_ENSURE_SUCCESS(rv, rv); @@ -2141,7 +2146,7 @@ + if( nsKDEUtils::kdeSupport()) + return GetProxyFromKDE(scheme, host, port, aResult); + - if (mGSettings) { + if (mProxySettings) { rv = GetProxyFromGSettings(scheme, host, port, aResult); if (rv == NS_OK) return rv; @@ -2149,7 +2154,7 @@ if (mGConf) return GetProxyFromGConf(scheme, host, port, aResult); -@@ -561,8 +567,34 @@ static const mozilla::Module::ContractID +@@ -564,8 +570,34 @@ static const mozilla::Module::ContractID static const mozilla::Module kUnixProxyModule = { mozilla::Module::kVersion, @@ -2673,7 +2678,7 @@ diff --git a/uriloader/exthandler/Makefile.in b/uriloader/exthandler/Makefile.in --- a/uriloader/exthandler/Makefile.in +++ b/uriloader/exthandler/Makefile.in -@@ -92,18 +92,19 @@ LOCAL_INCLUDES = -I$(srcdir) +@@ -90,18 +90,19 @@ LOCAL_INCLUDES = -I$(srcdir) LOCAL_INCLUDES += -I$(topsrcdir)/dom/base \ -I$(topsrcdir)/dom/ipc \ -I$(topsrcdir)/content/base/src \ @@ -3250,7 +3255,7 @@ diff --git a/widget/gtk2/Makefile.in b/widget/gtk2/Makefile.in --- a/widget/gtk2/Makefile.in +++ b/widget/gtk2/Makefile.in -@@ -135,11 +135,14 @@ DEFINES += -DCAIRO_GFX +@@ -135,11 +135,14 @@ DEFINES += -DCAIRO_GFX -DMOZ_APP_NAME=' INCLUDES += \ -I$(srcdir)/../xpwidgets \ @@ -3604,7 +3609,7 @@ diff --git a/xpcom/components/Makefile.in b/xpcom/components/Makefile.in --- a/xpcom/components/Makefile.in +++ b/xpcom/components/Makefile.in -@@ -92,10 +92,11 @@ LOCAL_INCLUDES = \ +@@ -91,10 +91,11 @@ LOCAL_INCLUDES = \ # we don't want the shared lib, but we want to force the creation of a static lib. FORCE_STATIC_LIB = 1 @@ -3619,134 +3624,134 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp --- a/xpcom/components/ManifestParser.cpp +++ b/xpcom/components/ManifestParser.cpp -@@ -62,16 +62,17 @@ - #include "nsTextFormatter.h" - #include "nsVersionComparator.h" - #include "nsXPCOMCIDInternal.h" - - #include "nsIConsoleService.h" - #include "nsIScriptError.h" - #include "nsIXULAppInfo.h" - #include "nsIXULRuntime.h" -+#include "nsKDEUtils.h" - - using namespace mozilla; - - struct ManifestDirective - { - const char* directive; - int argc; - -@@ -429,16 +430,17 @@ ParseManifest(NSLocationType type, FileL - NS_NAMED_LITERAL_STRING(kPlatform, "platform"); - NS_NAMED_LITERAL_STRING(kContentAccessible, "contentaccessible"); - NS_NAMED_LITERAL_STRING(kApplication, "application"); - NS_NAMED_LITERAL_STRING(kAppVersion, "appversion"); - NS_NAMED_LITERAL_STRING(kGeckoVersion, "platformversion"); - NS_NAMED_LITERAL_STRING(kOs, "os"); - NS_NAMED_LITERAL_STRING(kOsVersion, "osversion"); - NS_NAMED_LITERAL_STRING(kABI, "abi"); -+ NS_NAMED_LITERAL_STRING(kDesktop, "desktop"); - #if defined(MOZ_WIDGET_ANDROID) - NS_NAMED_LITERAL_STRING(kTablet, "tablet"); - #endif - - // Obsolete - NS_NAMED_LITERAL_STRING(kXPCNativeWrappers, "xpcnativewrappers"); - - nsAutoString appID; -@@ -476,41 +478,46 @@ ParseManifest(NSLocationType type, FileL - CopyUTF8toUTF16(s, abi); - abi.Insert(PRUnichar('_'), 0); - abi.Insert(osTarget, 0); - } - } - } - - nsAutoString osVersion; -+ nsAutoString desktop; - #if defined(XP_WIN) - OSVERSIONINFO info = { sizeof(OSVERSIONINFO) }; - if (GetVersionEx(&info)) { - nsTextFormatter::ssprintf(osVersion, NS_LITERAL_STRING("%ld.%ld").get(), - info.dwMajorVersion, - info.dwMinorVersion); - } -+ desktop = NS_LITERAL_STRING("win"); - #elif defined(MOZ_WIDGET_COCOA) - SInt32 majorVersion, minorVersion; - if ((Gestalt(gestaltSystemVersionMajor, &majorVersion) == noErr) && - (Gestalt(gestaltSystemVersionMinor, &minorVersion) == noErr)) { - nsTextFormatter::ssprintf(osVersion, NS_LITERAL_STRING("%ld.%ld").get(), - majorVersion, - minorVersion); - } -+ desktop = NS_LITERAL_STRING("macosx"); - #elif defined(MOZ_WIDGET_GTK2) - nsTextFormatter::ssprintf(osVersion, NS_LITERAL_STRING("%ld.%ld").get(), - gtk_major_version, - gtk_minor_version); -+ desktop = nsKDEUtils::kdeSession() ? NS_LITERAL_STRING("kde") : NS_LITERAL_STRING("gnome"); - #elif defined(MOZ_WIDGET_ANDROID) - bool isTablet = false; - if (mozilla::AndroidBridge::Bridge()) { - mozilla::AndroidBridge::Bridge()->GetStaticStringField("android/os/Build$VERSION", "RELEASE", osVersion); - isTablet = mozilla::AndroidBridge::Bridge()->IsTablet(); - } -+ desktop = NS_LITERAL_STRING("android"); - #endif - - // Because contracts must be registered after CIDs, we save and process them - // at the end. - nsTArray contracts; - - char *token; - char *newline = buf; -@@ -592,24 +599,26 @@ ParseManifest(NSLocationType type, FileL - TriState stOsVersion = eUnspecified; - TriState stOs = eUnspecified; - TriState stABI = eUnspecified; - #if defined(MOZ_WIDGET_ANDROID) - TriState stTablet = eUnspecified; - #endif - bool platform = false; - bool contentAccessible = false; -+ TriState stDesktop = eUnspecified; - - while (NULL != (token = nsCRT::strtok(whitespace, kWhitespace, &whitespace)) && ok) { - ToLowerCase(token); - NS_ConvertASCIItoUTF16 wtoken(token); - - if (CheckStringFlag(kApplication, wtoken, appID, stApp) || - CheckStringFlag(kOs, wtoken, osTarget, stOs) || - CheckStringFlag(kABI, wtoken, abi, stABI) || -+ CheckStringFlag(kDesktop, wtoken, desktop, stDesktop) || - CheckVersionFlag(kOsVersion, wtoken, osVersion, stOsVersion) || - CheckVersionFlag(kAppVersion, wtoken, appVersion, stAppVersion) || - CheckVersionFlag(kGeckoVersion, wtoken, geckoVersion, stGeckoVersion)) - continue; - - #if defined(MOZ_WIDGET_ANDROID) - bool tablet = false; - if (CheckFlag(kTablet, wtoken, tablet)) { -@@ -638,16 +647,17 @@ ParseManifest(NSLocationType type, FileL - } - - if (!ok || - stApp == eBad || - stAppVersion == eBad || - stGeckoVersion == eBad || - stOs == eBad || - stOsVersion == eBad || -+ stDesktop == eBad || - #ifdef MOZ_WIDGET_ANDROID - stTablet == eBad || - #endif - stABI == eBad) - continue; - - if (directive->regfunc) { - if (GeckoProcessType_Default != XRE_GetProcessType()) +@@ -63,16 +63,17 @@ + #include "nsTextFormatter.h" + #include "nsVersionComparator.h" + #include "nsXPCOMCIDInternal.h" + + #include "nsIConsoleService.h" + #include "nsIScriptError.h" + #include "nsIXULAppInfo.h" + #include "nsIXULRuntime.h" ++#include "nsKDEUtils.h" + + using namespace mozilla; + + struct ManifestDirective + { + const char* directive; + int argc; + +@@ -430,16 +431,17 @@ ParseManifest(NSLocationType type, FileL + NS_NAMED_LITERAL_STRING(kPlatform, "platform"); + NS_NAMED_LITERAL_STRING(kContentAccessible, "contentaccessible"); + NS_NAMED_LITERAL_STRING(kApplication, "application"); + NS_NAMED_LITERAL_STRING(kAppVersion, "appversion"); + NS_NAMED_LITERAL_STRING(kGeckoVersion, "platformversion"); + NS_NAMED_LITERAL_STRING(kOs, "os"); + NS_NAMED_LITERAL_STRING(kOsVersion, "osversion"); + NS_NAMED_LITERAL_STRING(kABI, "abi"); ++ NS_NAMED_LITERAL_STRING(kDesktop, "desktop"); + #if defined(MOZ_WIDGET_ANDROID) + NS_NAMED_LITERAL_STRING(kTablet, "tablet"); + #endif + + // Obsolete + NS_NAMED_LITERAL_STRING(kXPCNativeWrappers, "xpcnativewrappers"); + + nsAutoString appID; +@@ -477,41 +479,46 @@ ParseManifest(NSLocationType type, FileL + CopyUTF8toUTF16(s, abi); + abi.Insert(PRUnichar('_'), 0); + abi.Insert(osTarget, 0); + } + } + } + + nsAutoString osVersion; ++ nsAutoString desktop; + #if defined(XP_WIN) + OSVERSIONINFO info = { sizeof(OSVERSIONINFO) }; + if (GetVersionEx(&info)) { + nsTextFormatter::ssprintf(osVersion, NS_LITERAL_STRING("%ld.%ld").get(), + info.dwMajorVersion, + info.dwMinorVersion); + } ++ desktop = NS_LITERAL_STRING("win"); + #elif defined(MOZ_WIDGET_COCOA) + SInt32 majorVersion, minorVersion; + if ((Gestalt(gestaltSystemVersionMajor, &majorVersion) == noErr) && + (Gestalt(gestaltSystemVersionMinor, &minorVersion) == noErr)) { + nsTextFormatter::ssprintf(osVersion, NS_LITERAL_STRING("%ld.%ld").get(), + majorVersion, + minorVersion); + } ++ desktop = NS_LITERAL_STRING("macosx"); + #elif defined(MOZ_WIDGET_GTK2) + nsTextFormatter::ssprintf(osVersion, NS_LITERAL_STRING("%ld.%ld").get(), + gtk_major_version, + gtk_minor_version); ++ desktop = nsKDEUtils::kdeSession() ? NS_LITERAL_STRING("kde") : NS_LITERAL_STRING("gnome"); + #elif defined(MOZ_WIDGET_ANDROID) + bool isTablet = false; + if (mozilla::AndroidBridge::Bridge()) { + mozilla::AndroidBridge::Bridge()->GetStaticStringField("android/os/Build$VERSION", "RELEASE", osVersion); + isTablet = mozilla::AndroidBridge::Bridge()->IsTablet(); + } ++ desktop = NS_LITERAL_STRING("android"); + #endif + + // Because contracts must be registered after CIDs, we save and process them + // at the end. + nsTArray contracts; + + char *token; + char *newline = buf; +@@ -593,24 +600,26 @@ ParseManifest(NSLocationType type, FileL + TriState stOsVersion = eUnspecified; + TriState stOs = eUnspecified; + TriState stABI = eUnspecified; + #if defined(MOZ_WIDGET_ANDROID) + TriState stTablet = eUnspecified; + #endif + bool platform = false; + bool contentAccessible = false; ++ TriState stDesktop = eUnspecified; + + while (NULL != (token = nsCRT::strtok(whitespace, kWhitespace, &whitespace)) && ok) { + ToLowerCase(token); + NS_ConvertASCIItoUTF16 wtoken(token); + + if (CheckStringFlag(kApplication, wtoken, appID, stApp) || + CheckStringFlag(kOs, wtoken, osTarget, stOs) || + CheckStringFlag(kABI, wtoken, abi, stABI) || ++ CheckStringFlag(kDesktop, wtoken, desktop, stDesktop) || + CheckVersionFlag(kOsVersion, wtoken, osVersion, stOsVersion) || + CheckVersionFlag(kAppVersion, wtoken, appVersion, stAppVersion) || + CheckVersionFlag(kGeckoVersion, wtoken, geckoVersion, stGeckoVersion)) + continue; + + #if defined(MOZ_WIDGET_ANDROID) + bool tablet = false; + if (CheckFlag(kTablet, wtoken, tablet)) { +@@ -639,16 +648,17 @@ ParseManifest(NSLocationType type, FileL + } + + if (!ok || + stApp == eBad || + stAppVersion == eBad || + stGeckoVersion == eBad || + stOs == eBad || + stOsVersion == eBad || ++ stDesktop == eBad || + #ifdef MOZ_WIDGET_ANDROID + stTablet == eBad || + #endif + stABI == eBad) + continue; + + if (directive->regfunc) { + if (GeckoProcessType_Default != XRE_GetProcessType()) diff --git a/xpcom/io/Makefile.in b/xpcom/io/Makefile.in --- a/xpcom/io/Makefile.in +++ b/xpcom/io/Makefile.in @@ -3790,7 +3795,7 @@ #include "prmem.h" #include "plbase64.h" -@@ -1795,44 +1796,51 @@ nsLocalFile::SetPersistentDescriptor(con +@@ -1796,44 +1797,51 @@ nsLocalFile::SetPersistentDescriptor(con return InitWithNativePath(aPersistentDescriptor); #endif } @@ -3856,7 +3861,7 @@ return rv; } return NS_ERROR_FAILURE; -@@ -1858,16 +1866,23 @@ nsLocalFile::Launch() +@@ -1859,16 +1867,23 @@ nsLocalFile::Launch() if (nsnull == connection) return NS_ERROR_FAILURE;