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 |