 Chromium Code Reviews
 Chromium Code Reviews Issue 449973002:
  Use data reduction proxy when managed proxy config returns direct  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@no-uma-in-proxy-service
    
  
    Issue 449973002:
  Use data reduction proxy when managed proxy config returns direct  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@no-uma-in-proxy-service| 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..cb9e788a19141c70da51ee1a9136e3174f006b5a 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() { | 
| @@ -26,6 +31,8 @@ void DataReductionProxyChromeConfigurator::Enable( | 
| const std::string& ssl_origin) { | 
| DCHECK(prefs_); | 
| DictionaryPrefUpdate update(prefs_, prefs::kProxy); | 
| + // TODO(bengr): Consider relying on the proxy config for all data reduction | 
| + // proxy configuration. | 
| base::DictionaryValue* dict = update.Get(); | 
| std::vector<std::string> proxies; | 
| @@ -60,6 +67,21 @@ 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_, ", ")); | 
| + // The ID is set to a bogus value. It cannot be left uninitialized, else the | 
| + // config will return invalid. | 
| + net::ProxyConfig::ID unused_id = 1; | 
| + config.set_id(unused_id); | 
| 
Ryan Sleevi
2014/08/14 19:19:51
why not just set_id(1)? Why do you need to declare
 | 
| + network_task_runner_->PostTask( | 
| + FROM_HERE, | 
| + base::Bind( | 
| + &DataReductionProxyChromeConfigurator::UpdateProxyConfigOnIO, | 
| + base::Unretained(this), | 
| 
Ryan Sleevi
2014/08/14 19:19:50
This is a very dangerous usage.
No where in the h
 | 
| + config)); | 
| } | 
| void DataReductionProxyChromeConfigurator::Disable() { | 
| @@ -69,6 +91,13 @@ void DataReductionProxyChromeConfigurator::Disable() { | 
| dict->SetString("mode", ProxyModeToString(ProxyPrefs::MODE_SYSTEM)); | 
| dict->SetString("server", ""); | 
| dict->SetString("bypass_list", ""); | 
| 
Ryan Sleevi
2014/08/14 19:19:50
cleanup: These should all be std::string() instead
 | 
| + net::ProxyConfig config = net::ProxyConfig::CreateDirect(); | 
| + network_task_runner_->PostTask( | 
| + FROM_HERE, | 
| + base::Bind( | 
| + &DataReductionProxyChromeConfigurator::UpdateProxyConfigOnIO, | 
| + base::Unretained(this), | 
| + config)); | 
| 
Ryan Sleevi
2014/08/14 19:19:50
Did git-cl-format do this? It seems odd for it.
 | 
| } | 
| void DataReductionProxyChromeConfigurator::AddHostPatternToBypass( | 
| @@ -90,3 +119,13 @@ void DataReductionProxyChromeConfigurator::AddURLPatternToBypass( | 
| AddHostPatternToBypass(host_pattern); | 
| } | 
| + | 
| +void DataReductionProxyChromeConfigurator::UpdateProxyConfigOnIO( | 
| 
Ryan Sleevi
2014/08/14 19:19:50
If you decide to keep these methods (ideally, you
 | 
| + const net::ProxyConfig& config) { | 
| + config_ = config; | 
| +} | 
| + | 
| +const net::ProxyConfig& | 
| +DataReductionProxyChromeConfigurator::GetProxyConfigOnIO() const { | 
| + return config_; | 
| +} |