--- a/mozilla-nongnome-proxies.patch Sat Mar 31 09:26:42 2012 +0200
+++ b/mozilla-nongnome-proxies.patch Sat Mar 31 22:19:28 2012 +0200
@@ -9,7 +9,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
-@@ -71,18 +71,24 @@ private:
+@@ -74,22 +74,28 @@ private:
nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType, nsACString& aResult);
};
@@ -18,21 +18,29 @@
nsresult
nsUnixSystemProxySettings::Init()
{
+- mSchemeProxySettings.Init(5);
- mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
- mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
+- if (mGSettings) {
+- mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
+- getter_AddRefs(mProxySettings));
+ // If this is a GNOME session, load gconf and try to use its preferences.
+ // If gconf is not available (which would be stupid) we'll proceed as if
+ // this was not a GNOME session, using *_PROXY environment variables.
+ const char* sessionType = PR_GetEnv("DESKTOP_SESSION");
+ if (sessionType && !strcmp(sessionType, "gnome")) {
++ mSchemeProxySettings.Init(5);
+ mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
+ mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
-+ }
++ if (mGSettings) {
++ mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
++ getter_AddRefs(mProxySettings));
++ }
+ }
+
return NS_OK;
}
bool
nsUnixSystemProxySettings::IsProxyMode(const char* aMode)
{
- nsCAutoString mode;
- return NS_SUCCEEDED(mGConf->GetString(NS_LITERAL_CSTRING("/system/proxy/mode"), mode)) &&