forked from pool/MozillaThunderbird
- update to Thunderbird 13.0 (bnc#765204)
* MFSA 2012-34/CVE-2012-1938/CVE-2012-1937/CVE-2011-3101 Miscellaneous memory safety hazards * MFSA 2012-36/CVE-2012-1944 (bmo#751422) Content Security Policy inline-script bypass * MFSA 2012-37/CVE-2012-1945 (bmo#670514) Information disclosure though Windows file shares and shortcut files * MFSA 2012-38/CVE-2012-1946 (bmo#750109) Use-after-free while replacing/inserting a node in a document * MFSA 2012-40/CVE-2012-1947/CVE-2012-1940/CVE-2012-1941 Buffer overflow and use-after-free issues found using Address Sanitizer - require NSS 3.13.4 * MFSA 2012-39/CVE-2012-0441 (bmo#715073) - fix build with system NSPR (mozilla-system-nspr.patch) - add dependentlibs.list for improved XRE startup - update enigmail to 1.4.2 OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaThunderbird?expand=0&rev=178
This commit is contained in:
committed by
Git OBS Bridge
parent
087fae14ac
commit
9c02a444ab
@@ -27,7 +27,7 @@ diff --git a/modules/libpref/src/Makefile.in b/modules/libpref/src/Makefile.in
|
||||
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 @@ diff --git a/modules/libpref/src/Preferences.cpp b/modules/libpref/src/Preferenc
|
||||
#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<nsIProperties> 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 @@ diff --git a/modules/libpref/src/Preferences.cpp b/modules/libpref/src/Preferenc
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
nsCOMPtr<nsISimpleEnumerator> dirList;
|
||||
nsCOMPtr<nsISimpleEnumerator> list;
|
||||
dirSvc->Get(listId,
|
||||
NS_GET_IID(nsISimpleEnumerator),
|
||||
getter_AddRefs(dirList));
|
||||
if (dirList) {
|
||||
bool hasMore;
|
||||
while (NS_SUCCEEDED(dirList->HasMoreElements(&hasMore)) && hasMore) {
|
||||
nsCOMPtr<nsISupports> elem;
|
||||
dirList->GetNext(getter_AddRefs(elem));
|
||||
if (elem) {
|
||||
nsCOMPtr<nsIFile> 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<char> 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/modules/libpref/src/Preferences.cpp b/modules/libpref/src/Preferenc
|
||||
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 @@ diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/compon
|
||||
#include "AndroidBridge.h"
|
||||
#endif
|
||||
|
||||
@@ -2214,16 +2218,25 @@ nsDownload::SetState(DownloadState aStat
|
||||
@@ -2221,16 +2225,25 @@ nsDownload::SetState(DownloadState aStat
|
||||
nsCOMPtr<nsIPrefBranch> pref(do_GetService(NS_PREFSERVICE_CONTRACTID));
|
||||
|
||||
// Master pref to control this function.
|
||||
@@ -200,7 +205,7 @@ diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/compon
|
||||
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/components/downloads/nsDownloadManager.cpp b/toolkit/compon
|
||||
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 @@ new file mode 100644
|
||||
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 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
|
||||
#include "nsNetUtil.h"
|
||||
#include "nsISupportsPrimitives.h"
|
||||
#include "nsIGSettingsService.h"
|
||||
#include "nsInterfaceHashtable.h"
|
||||
+#include "nsVoidArray.h"
|
||||
+#include "nsKDEUtils.h"
|
||||
|
||||
@@ -2111,10 +2116,10 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
|
||||
|
||||
nsUnixSystemProxySettings() {}
|
||||
nsresult Init();
|
||||
@@ -64,16 +66,17 @@ private:
|
||||
|
||||
nsCOMPtr<nsIGConfService> mGConf;
|
||||
@@ -67,16 +69,17 @@ private:
|
||||
nsCOMPtr<nsIGSettingsService> mGSettings;
|
||||
nsCOMPtr<nsIGSettingsCollection> mProxySettings;
|
||||
nsInterfaceHashtable<nsCStringHashKey, nsIGSettingsCollection> 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 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
|
||||
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 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
|
||||
+ 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 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
|
||||
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 @@ new file mode 100644
|
||||
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/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
|
||||
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/widget/gtk2/nsFilePicker.h b/widget/gtk2/nsFilePicker.h
|
||||
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/Makefile.in b/xpcom/components/Makefile.in
|
||||
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<CachedDirective> 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<CachedDirective> 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 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
|
||||
#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 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
|
||||
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;
|
||||
|
Reference in New Issue
Block a user