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 cb9e788a19141c70da51ee1a9136e3174f006b5a..dbf3e02b5d82f1b2cdc3d835c4c42070379db1c6 100644 |
--- a/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.cc |
+++ b/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.cc |
@@ -10,6 +10,7 @@ |
#include "base/strings/string_util.h" |
#include "chrome/browser/prefs/proxy_prefs.h" |
#include "chrome/common/pref_names.h" |
+#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_params.h" |
#include "net/proxy/proxy_config.h" |
#include "net/proxy/proxy_info.h" |
#include "net/proxy/proxy_service.h" |
@@ -23,6 +24,24 @@ DataReductionProxyChromeConfigurator::DataReductionProxyChromeConfigurator( |
DataReductionProxyChromeConfigurator::~DataReductionProxyChromeConfigurator() { |
} |
+// static |
+void DataReductionProxyChromeConfigurator::Disable(PrefService* prefs) { |
+ DCHECK(prefs); |
+ DictionaryPrefUpdate update(prefs, prefs::kProxy); |
+ base::DictionaryValue* dict = update.Get(); |
+ std::string mode; |
+ dict->GetString("mode", &mode); |
+ std::string server; |
+ dict->GetString("server", &server); |
+ if (mode != ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS) |
+ || !ContainsDataReductionProxy(server)) |
+ return; |
bengr
2014/10/28 21:03:41
I prefer using curly braces when the if clause spa
Not at Google. Contact bengr
2014/10/28 22:31:44
Done.
|
+ |
+ dict->SetString("mode", ProxyModeToString(ProxyPrefs::MODE_SYSTEM)); |
+ dict->SetString("server", ""); |
+ dict->SetString("bypass_list", ""); |
+} |
+ |
void DataReductionProxyChromeConfigurator::Enable( |
bool primary_restricted, |
bool fallback_restricted, |
@@ -85,12 +104,7 @@ void DataReductionProxyChromeConfigurator::Enable( |
} |
void DataReductionProxyChromeConfigurator::Disable() { |
- DCHECK(prefs_); |
- DictionaryPrefUpdate update(prefs_, prefs::kProxy); |
- base::DictionaryValue* dict = update.Get(); |
- dict->SetString("mode", ProxyModeToString(ProxyPrefs::MODE_SYSTEM)); |
- dict->SetString("server", ""); |
- dict->SetString("bypass_list", ""); |
+ Disable(prefs_); |
net::ProxyConfig config = net::ProxyConfig::CreateDirect(); |
network_task_runner_->PostTask( |
FROM_HERE, |
@@ -120,6 +134,24 @@ void DataReductionProxyChromeConfigurator::AddURLPatternToBypass( |
AddHostPatternToBypass(host_pattern); |
} |
+// static |
+bool DataReductionProxyChromeConfigurator::ContainsDataReductionProxy( |
bengr
2014/10/28 21:03:41
Why can't you use DRPParams::IsDataReductionProxy?
Not at Google. Contact bengr
2014/10/28 22:31:44
Done.
|
+ const std::string& server) { |
+ data_reduction_proxy::DataReductionProxyParams params(0); |
+ return HasProxy(server, params.origin()) || |
+ HasProxy(server, params.fallback_origin()) || |
+ HasProxy(server, params.alt_origin()) || |
+ HasProxy(server, params.ssl_origin()); |
+} |
+ |
+// static |
+bool DataReductionProxyChromeConfigurator::HasProxy(const std::string& server, |
bengr
2014/10/28 21:03:41
I don't think you'll need this if you use the meth
Not at Google. Contact bengr
2014/10/28 22:31:44
Done.
|
+ const GURL& proxy) { |
+ std::string trimmed_proxy_url; |
+ base::TrimString(proxy.spec(), "/", &trimmed_proxy_url); |
+ return server.find(trimmed_proxy_url) != std::string::npos; |
+} |
+ |
void DataReductionProxyChromeConfigurator::UpdateProxyConfigOnIO( |
const net::ProxyConfig& config) { |
config_ = config; |