Index: chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.cc |
diff --git a/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.cc b/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.cc |
index 1201cf0e19838275ccd5640411f073af5c667f40..1054fde0ffa6a34690caddd65c91ce4e39ea950c 100644 |
--- a/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.cc |
+++ b/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.cc |
@@ -6,13 +6,18 @@ |
#include "base/prefs/pref_service.h" |
#include "base/prefs/scoped_user_pref_update.h" |
+#include "base/sequenced_task_runner.h" |
#include "base/strings/string_util.h" |
#include "chrome/browser/prefs/proxy_prefs.h" |
#include "chrome/common/pref_names.h" |
+#include "net/proxy/proxy_config.h" |
+#include "net/proxy/proxy_info.h" |
+#include "net/proxy/proxy_service.h" |
DataReductionProxyChromeConfigurator::DataReductionProxyChromeConfigurator( |
- PrefService* prefs) : prefs_(prefs) { |
- DCHECK(prefs); |
+ PrefService* prefs, |
+ scoped_refptr<base::SequencedTaskRunner> network_task_runner) |
+ : prefs_(prefs), network_task_runner_(network_task_runner) { |
} |
DataReductionProxyChromeConfigurator::~DataReductionProxyChromeConfigurator() { |
@@ -60,6 +65,19 @@ void DataReductionProxyChromeConfigurator::Enable( |
dict->SetString("server", server); |
dict->SetString("mode", ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS)); |
dict->SetString("bypass_list", JoinString(bypass_rules_, ", ")); |
+ |
+ net::ProxyConfig config; |
+ config.proxy_rules().ParseFromString(server); |
+ config.proxy_rules().bypass_rules.ParseFromString( |
+ JoinString(bypass_rules_, ", ")); |
+ net::ProxyConfig::ID unused_id = 1; |
+ config.set_id(unused_id); |
+ network_task_runner_->PostTask( |
+ FROM_HERE, |
+ base::Bind( |
+ &DataReductionProxyChromeConfigurator::UpdateProxyConfigOnIO, |
+ base::Unretained(this), |
+ config)); |
} |
void DataReductionProxyChromeConfigurator::Disable() { |
@@ -69,6 +87,13 @@ void DataReductionProxyChromeConfigurator::Disable() { |
dict->SetString("mode", ProxyModeToString(ProxyPrefs::MODE_SYSTEM)); |
dict->SetString("server", ""); |
dict->SetString("bypass_list", ""); |
+ net::ProxyConfig config = net::ProxyConfig::CreateDirect(); |
+ network_task_runner_->PostTask( |
+ FROM_HERE, |
+ base::Bind( |
+ &DataReductionProxyChromeConfigurator::UpdateProxyConfigOnIO, |
+ base::Unretained(this), |
+ config)); |
} |
void DataReductionProxyChromeConfigurator::AddHostPatternToBypass( |
@@ -90,3 +115,13 @@ void DataReductionProxyChromeConfigurator::AddURLPatternToBypass( |
AddHostPatternToBypass(host_pattern); |
} |
+ |
+void DataReductionProxyChromeConfigurator::UpdateProxyConfigOnIO( |
+ const net::ProxyConfig& config) { |
+ config_ = config; |
+} |
+ |
+const net::ProxyConfig& |
+DataReductionProxyChromeConfigurator::GetProxyConfigOnIO() const { |
+ return config_; |
+} |