mozilla-nongnome-proxies.patch
changeset 419 f6b055dd94bc
parent 382 67f876aafae8
child 568 2c74c5927ea2
--- 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)) &&