Index: chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.cc |
diff --git a/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.cc b/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.cc |
index 163e2eedad3f6cb02ae227805305ced6b9e28109..9598d7d1a1f6383a63e01fb25391e1d4012e13aa 100644 |
--- a/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.cc |
+++ b/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.cc |
@@ -6,11 +6,13 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/prefs/pref_service.h" |
+#include "base/prefs/scoped_user_pref_update.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/metrics/chrome_metrics_service_accessor.h" |
-#include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.h" |
+#include "chrome/browser/prefs/proxy_prefs.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/profiles/profile_manager.h" |
+#include "chrome/common/pref_names.h" |
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_auth_request_handler.h" |
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_configurator.h" |
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h" |
@@ -21,6 +23,33 @@ using data_reduction_proxy::Client; |
using data_reduction_proxy::DataReductionProxyParams; |
using data_reduction_proxy::DataReductionProxySettings; |
+// The Data Reduction Proxy has been turned into a "best effort" proxy, |
+// meaning it is used only if the effective proxy configuration resolves to |
+// DIRECT for a URL. It no longer can be a ProxyConfig in the proxy preference |
+// hierarchy. This method removes the Data Reduction Proxy configuration from |
+// prefs, if present. |proxy_pref_name| is the name of the proxy pref. |
+void MigrateDataReductionProxyOffProxyPrefs(PrefService* prefs) { |
+ DictionaryPrefUpdate update(prefs, prefs::kProxy); |
+ base::DictionaryValue* dict = update.Get(); |
+ std::string mode; |
+ if (!dict->GetString("mode", &mode)) |
+ return; |
+ if (ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS) != mode) |
+ return; |
+ std::string proxy_server; |
+ if (!dict->GetString("server", &proxy_server)) |
+ return; |
+ net::ProxyConfig::ProxyRules proxy_rules; |
+ proxy_rules.ParseFromString(proxy_server); |
+ if (!data_reduction_proxy::DataReductionProxyConfigurator:: |
+ ContainsDataReductionProxy(proxy_rules)) { |
+ return; |
+ } |
+ dict->SetString("mode", ProxyModeToString(ProxyPrefs::MODE_SYSTEM)); |
+ dict->SetString("server", ""); |
+ dict->SetString("bypass_list", ""); |
+} |
+ |
DataReductionProxyChromeSettings::DataReductionProxyChromeSettings( |
DataReductionProxyParams* params) : DataReductionProxySettings(params) { |
} |
@@ -46,6 +75,8 @@ void DataReductionProxyChromeSettings::InitDataReductionProxySettings( |
base::Unretained(this))); |
SetDataReductionProxyAlternativeEnabled( |
DataReductionProxyParams::IsIncludedInAlternativeFieldTrial()); |
+ // TODO(bengr): Remove after M46. See http://crbug.com/445599. |
+ MigrateDataReductionProxyOffProxyPrefs(profile_prefs); |
} |
void DataReductionProxyChromeSettings::RegisterSyntheticFieldTrial( |