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

Unified Diff: components/data_reduction_proxy/core/browser/data_reduction_proxy_config_service.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: components/data_reduction_proxy/core/browser/data_reduction_proxy_config_service.cc
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_service.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_service.cc
deleted file mode 100644
index ac38c1f0faa3516cbe23cf9bdb1121d442f5df32..0000000000000000000000000000000000000000
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_service.cc
+++ /dev/null
@@ -1,200 +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 "components/data_reduction_proxy/core/browser/data_reduction_proxy_config_service.h"
-
-#include "base/bind.h"
-#include "base/memory/ref_counted.h"
-#include "base/message_loop/message_loop.h"
-#include "base/strings/string_util.h"
-
-namespace data_reduction_proxy {
-
-DataReductionProxyConfigService::DataReductionProxyConfigService(
- scoped_ptr<net::ProxyConfigService> base_service)
- : config_read_pending_(true),
- registered_observer_(false),
- enabled_(false),
- restricted_(false) {
- base_service_ = base_service.Pass();
-}
-
-DataReductionProxyConfigService::~DataReductionProxyConfigService() {
- if (registered_observer_ && base_service_.get())
- base_service_->RemoveObserver(this);
-}
-
-void DataReductionProxyConfigService::AddObserver(
- net::ProxyConfigService::Observer* observer) {
- RegisterObserver();
- observers_.AddObserver(observer);
-}
-
-void DataReductionProxyConfigService::RemoveObserver(
- net::ProxyConfigService::Observer* observer) {
- observers_.RemoveObserver(observer);
-}
-
-net::ProxyConfigService::ConfigAvailability
-DataReductionProxyConfigService::GetLatestProxyConfig(
- net::ProxyConfig* config) {
- RegisterObserver();
-
- if (enabled_) {
- *config = config_;
- return net::ProxyConfigService::CONFIG_VALID;
- }
-
- // Ask the base service if available.
- net::ProxyConfig system_config;
- ConfigAvailability system_availability =
- net::ProxyConfigService::CONFIG_UNSET;
- if (base_service_.get()) {
- system_availability = base_service_->GetLatestProxyConfig(&system_config);
- *config = system_config;
- }
- if (system_availability == net::ProxyConfigService::CONFIG_UNSET) {
- *config = net::ProxyConfig::CreateDirect();
- }
-
- return net::ProxyConfigService::CONFIG_VALID;
-}
-
-void DataReductionProxyConfigService::OnLazyPoll() {
- if (base_service_.get())
- base_service_->OnLazyPoll();
-}
-
-void DataReductionProxyConfigService::UpdateProxyConfig(
- bool enabled,
- const net::ProxyConfig& config) {
-
- config_read_pending_ = false;
- enabled_ = enabled;
- config_ = config;
-
- if (!observers_.might_have_observers())
- return;
-
- // Evaluate the proxy configuration. If GetLatestProxyConfig returns
- // CONFIG_PENDING, we are using the system proxy service, but it doesn't have
- // a valid configuration yet. Once it is ready, OnProxyConfigChanged() will be
- // called and broadcast the proxy configuration.
- // Note: If a switch between a preference proxy configuration and the system
- // proxy configuration occurs an unnecessary notification might get sent if
- // the two configurations agree. This case should be rare however, so we don't
- // handle that case specially.
- net::ProxyConfig new_config;
- ConfigAvailability availability = GetLatestProxyConfig(&new_config);
- if (availability != CONFIG_PENDING) {
- FOR_EACH_OBSERVER(net::ProxyConfigService::Observer, observers_,
- OnProxyConfigChanged(new_config, availability));
- }
-}
-
-void DataReductionProxyConfigService::OnProxyConfigChanged(
- const net::ProxyConfig& config,
- ConfigAvailability availability) {
-
- // Check whether the data reduction proxy is enabled. In this case that proxy
- // configuration takes precedence and the change event from the delegate proxy
- // service can be disregarded.
- if (!enabled_) {
- net::ProxyConfig actual_config;
- availability = GetLatestProxyConfig(&actual_config);
- FOR_EACH_OBSERVER(net::ProxyConfigService::Observer, observers_,
- OnProxyConfigChanged(actual_config, availability));
- }
-}
-
-void DataReductionProxyConfigService::RegisterObserver() {
- if (!registered_observer_ && base_service_.get()) {
- base_service_->AddObserver(this);
- registered_observer_ = true;
- }
-}
-
-DataReductionProxyConfigTracker::DataReductionProxyConfigTracker(
- base::Callback<void(bool, const net::ProxyConfig&)> update_proxy_config,
- const scoped_refptr<base::TaskRunner>& task_runner)
- : update_proxy_config_(update_proxy_config),
- task_runner_(task_runner) {
-}
-
-DataReductionProxyConfigTracker::~DataReductionProxyConfigTracker() {
-}
-
-void DataReductionProxyConfigTracker::Enable(
- bool primary_restricted,
- bool fallback_restricted,
- const std::string& primary_origin,
- const std::string& fallback_origin,
- const std::string& ssl_origin) {
-
- 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;
- Disable();
- return;
- }
-
- std::string trimmed_ssl;
- base::TrimString(ssl_origin, "/", &trimmed_ssl);
-
- std::string server = "http=" + JoinString(proxies, ",") + ",direct://;"
- + (ssl_origin.empty() ? "" : ("https=" + ssl_origin + ",direct://;"));
-
- net::ProxyConfig config;
- config.proxy_rules().ParseFromString(server);
- config.proxy_rules().bypass_rules.ParseFromString(
- JoinString(bypass_rules_, ", "));
- UpdateProxyConfigOnIOThread(true, config);
-}
-
-
-void DataReductionProxyConfigTracker::Disable() {
- net::ProxyConfig config = net::ProxyConfig::CreateDirect();
- UpdateProxyConfigOnIOThread(false, config);
-}
-
-void DataReductionProxyConfigTracker::AddHostPatternToBypass(
- const std::string& pattern) {
- bypass_rules_.push_back(pattern);
-}
-
-void DataReductionProxyConfigTracker::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);
-}
-
-void DataReductionProxyConfigTracker::UpdateProxyConfigOnIOThread(
- bool enabled,
- const net::ProxyConfig& config) {
- task_runner_->PostTask(
- FROM_HERE, base::Bind(update_proxy_config_, enabled, config));
-}
-
-} // namespace data_reduction_proxy

Powered by Google App Engine
This is Rietveld 408576698