summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/proxy_config_service_impl.cc
diff options
context:
space:
mode:
authorygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-29 22:50:03 +0000
committerygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-29 22:50:03 +0000
commitac08e7f6cde403d12d02d50fdfe373ff3f0e9ee3 (patch)
treebf8c44c9e1bdfc7ee6226d2f080ea8086c618d58 /chrome/browser/chromeos/proxy_config_service_impl.cc
parentedd19b4363571e1e8dd3f43549c3ba369db00ad8 (diff)
downloadchromium_src-ac08e7f6cde403d12d02d50fdfe373ff3f0e9ee3.zip
chromium_src-ac08e7f6cde403d12d02d50fdfe373ff3f0e9ee3.tar.gz
chromium_src-ac08e7f6cde403d12d02d50fdfe373ff3f0e9ee3.tar.bz2
Added NetworkPortalDetector.
BUG=134206 TEST=Manual tests on an Alex device. Review URL: https://chromiumcodereview.appspot.com/10981067 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164756 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/proxy_config_service_impl.cc')
-rw-r--r--chrome/browser/chromeos/proxy_config_service_impl.cc28
1 files changed, 18 insertions, 10 deletions
diff --git a/chrome/browser/chromeos/proxy_config_service_impl.cc b/chrome/browser/chromeos/proxy_config_service_impl.cc
index 03228db..3b20231 100644
--- a/chrome/browser/chromeos/proxy_config_service_impl.cc
+++ b/chrome/browser/chromeos/proxy_config_service_impl.cc
@@ -562,6 +562,20 @@ void ProxyConfigServiceImpl::OnNetworkChanged(NetworkLibrary* network_lib,
}
// static
+bool ProxyConfigServiceImpl::ParseProxyConfig(const Network* network,
+ net::ProxyConfig* proxy_config) {
+ if (!network || !proxy_config)
+ return false;
+ JSONStringValueSerializer serializer(network->proxy_config());
+ scoped_ptr<Value> value(serializer.Deserialize(NULL, NULL));
+ if (!value.get() || value->GetType() != Value::TYPE_DICTIONARY)
+ return false;
+ ProxyConfigDictionary proxy_dict(static_cast<DictionaryValue*>(value.get()));
+ return PrefProxyConfigTrackerImpl::PrefConfigToNetConfig(proxy_dict,
+ proxy_config);
+}
+
+// static
void ProxyConfigServiceImpl::RegisterPrefs(PrefService* pref_service) {
// Use shared proxies default to off. GetUseSharedProxies will return the
// correct value based on pre-login and login.
@@ -715,16 +729,10 @@ void ProxyConfigServiceImpl::DetermineEffectiveConfig(const Network* network,
network_availability = net::ProxyConfigService::CONFIG_VALID;
} else if (!network->proxy_config().empty()) {
// Network is private or shared with user using shared proxies.
- JSONStringValueSerializer serializer(network->proxy_config());
- scoped_ptr<Value> value(serializer.Deserialize(NULL, NULL));
- if (value.get() && value->GetType() == Value::TYPE_DICTIONARY) {
- DictionaryValue* dict = static_cast<DictionaryValue*>(value.get());
- ProxyConfigDictionary proxy_dict(dict);
- if (PrefConfigToNetConfig(proxy_dict, &network_config)) {
- VLOG(1) << this << ": using network proxy: "
- << network->proxy_config();
- network_availability = net::ProxyConfigService::CONFIG_VALID;
- }
+ if (ParseProxyConfig(network, &network_config)) {
+ VLOG(1) << this << ": using network proxy: "
+ << network->proxy_config();
+ network_availability = net::ProxyConfigService::CONFIG_VALID;
}
}
}