Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3667)

Unified Diff: chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.cc

Issue 792803007: Make Data Reduction Proxy a best effort proxy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: updated tests Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
deleted file mode 100644
index a5d41017c4ffadff2a1320907e81d6b77ed0c067..0000000000000000000000000000000000000000
--- a/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.cc
+++ /dev/null
@@ -1,195 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.h"
-
-#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 "base/values.h"
-#include "chrome/browser/prefs/proxy_prefs.h"
-#include "chrome/common/pref_names.h"
-#include "components/data_reduction_proxy/core/common/data_reduction_proxy_event_store.h"
-#include "components/data_reduction_proxy/core/common/data_reduction_proxy_params.h"
-#include "net/proxy/proxy_config.h"
-#include "net/proxy/proxy_info.h"
-#include "net/proxy/proxy_list.h"
-#include "net/proxy/proxy_service.h"
-
-DataReductionProxyChromeConfigurator::DataReductionProxyChromeConfigurator(
- PrefService* prefs,
- scoped_refptr<base::SequencedTaskRunner> network_task_runner,
- net::NetLog* net_log,
- data_reduction_proxy::DataReductionProxyEventStore* event_store)
- : prefs_(prefs),
- network_task_runner_(network_task_runner),
- net_log_(net_log),
- data_reduction_proxy_event_store_(event_store) {
- DCHECK(prefs);
- DCHECK(network_task_runner.get());
- DCHECK(net_log);
- DCHECK(event_store);
-}
-
-DataReductionProxyChromeConfigurator::~DataReductionProxyChromeConfigurator() {
-}
-
-// static
-void DataReductionProxyChromeConfigurator::DisableInProxyConfigPref(
- 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);
- net::ProxyConfig::ProxyRules proxy_rules;
- proxy_rules.ParseFromString(server);
- // The data reduction proxy uses MODE_FIXED_SERVERS.
- if (mode != ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS)
- || !ContainsDataReductionProxy(proxy_rules)) {
- return;
- }
- dict->SetString("mode", ProxyModeToString(ProxyPrefs::MODE_SYSTEM));
- dict->SetString("server", "");
- dict->SetString("bypass_list", "");
-}
-
-void DataReductionProxyChromeConfigurator::Enable(
- bool primary_restricted,
- bool fallback_restricted,
- const std::string& primary_origin,
- const std::string& fallback_origin,
- 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;
- if (!primary_restricted) {
- std::string trimmed_primary;
- base::TrimString(primary_origin, "/", &trimmed_primary);
- if (!trimmed_primary.empty())
- proxies.push_back(trimmed_primary);
- }
- if (!fallback_restricted) {
- std::string trimmed_fallback;
- base::TrimString(fallback_origin, "/", &trimmed_fallback);
- if (!trimmed_fallback.empty())
- proxies.push_back(trimmed_fallback);
- }
- if (proxies.empty()) {
- std::string mode;
- // If already in a disabled mode, do nothing.
- if (dict->GetString("mode", &mode))
- if (ProxyModeToString(ProxyPrefs::MODE_SYSTEM) == mode)
- return;
- Disable();
- return;
- }
-
- std::string trimmed_ssl;
- base::TrimString(ssl_origin, "/", &trimmed_ssl);
-
- std::string server = "http=" + JoinString(proxies, ",") + ",direct://;"
- + (ssl_origin.empty() ? "" : ("https=" + trimmed_ssl + ",direct://;"));
-
- 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);
- data_reduction_proxy_event_store_->AddProxyEnabledEvent(
- net_log_, primary_restricted, fallback_restricted, primary_origin,
- fallback_origin, ssl_origin);
- network_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(
- &DataReductionProxyChromeConfigurator::UpdateProxyConfigOnIOThread,
- base::Unretained(this),
- config));
-}
-
-void DataReductionProxyChromeConfigurator::Disable() {
- DisableInProxyConfigPref(prefs_);
- net::ProxyConfig config = net::ProxyConfig::CreateDirect();
- data_reduction_proxy_event_store_->AddProxyDisabledEvent(net_log_);
- network_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(
- &DataReductionProxyChromeConfigurator::UpdateProxyConfigOnIOThread,
- base::Unretained(this),
- config));
-}
-
-void DataReductionProxyChromeConfigurator::AddHostPatternToBypass(
- const std::string& pattern) {
- bypass_rules_.push_back(pattern);
-}
-
-void DataReductionProxyChromeConfigurator::AddURLPatternToBypass(
- const std::string& pattern) {
- size_t pos = pattern.find('/');
- if (pattern.find('/', pos + 1) == pos + 1)
- pos = pattern.find('/', pos + 2);
-
- std::string host_pattern;
- if (pos != std::string::npos)
- host_pattern = pattern.substr(0, pos);
- else
- host_pattern = pattern;
-
- AddHostPatternToBypass(host_pattern);
-}
-
-// static
-bool DataReductionProxyChromeConfigurator::ContainsDataReductionProxy(
- const net::ProxyConfig::ProxyRules& proxy_rules) {
- data_reduction_proxy::DataReductionProxyParams params(
- data_reduction_proxy::DataReductionProxyParams::
- kAllowAllProxyConfigurations);
- if (proxy_rules.type != net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME)
- return false;
-
- const net::ProxyList* https_proxy_list =
- proxy_rules.MapUrlSchemeToProxyList("https");
- if (https_proxy_list && !https_proxy_list->IsEmpty() &&
- // Sufficient to check only the first proxy.
- params.IsDataReductionProxy(https_proxy_list->Get().host_port_pair(),
- NULL)) {
- return true;
- }
-
- const net::ProxyList* http_proxy_list =
- proxy_rules.MapUrlSchemeToProxyList("http");
- if (http_proxy_list && !http_proxy_list->IsEmpty() &&
- // Sufficient to check only the first proxy.
- params.IsDataReductionProxy(http_proxy_list->Get().host_port_pair(),
- NULL)) {
- return true;
- }
-
- return false;
-}
-
-void DataReductionProxyChromeConfigurator::UpdateProxyConfigOnIOThread(
- const net::ProxyConfig& config) {
- config_ = config;
-}
-
-const net::ProxyConfig&
-DataReductionProxyChromeConfigurator::GetProxyConfigOnIOThread() const {
- return config_;
-}

Powered by Google App Engine
This is Rietveld 408576698