nsresult nsUnixSystemProxySettings::SetProxyResultFromGSettings(const char* aKeyBase, const char* aType, nsACString& aResult) { nsDependentCString key(aKeyBase); nsCOMPtr<nsIGSettingsCollection> proxy_settings = mSchemeProxySettings.Get(key); nsresult rv; if (!proxy_settings) { rv = mGSettings->GetCollectionForSchema(key, getter_AddRefs(proxy_settings)); NS_ENSURE_SUCCESS(rv, rv); mSchemeProxySettings.Put(key, proxy_settings); } nsAutoCString host; rv = proxy_settings->GetString(NS_LITERAL_CSTRING("host"), host); NS_ENSURE_SUCCESS(rv, rv); if (host.IsEmpty()) return NS_ERROR_FAILURE; int32_t port; rv = proxy_settings->GetInt(NS_LITERAL_CSTRING("port"), &port); NS_ENSURE_SUCCESS(rv, rv); /* When port is 0, proxy is not considered as enabled even if host is set. */ if (port == 0) return NS_ERROR_FAILURE; SetProxyResult(aType, host, port, aResult); return NS_OK; }
nsresult nsUnixSystemProxySettings::Init() { mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID); if (mGSettings) { mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"), getter_AddRefs(mProxySettings)); } if (!mProxySettings) { mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID); } return NS_OK; }