| Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_config.cc
|
| diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.cc
|
| index 9b9ba22cabc9dbf0f4f068e51251fc6b1b40e44a..fe8b897d18613d1b7b2f186e32e0625d40f73a84 100644
|
| --- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.cc
|
| +++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.cc
|
| @@ -10,7 +10,6 @@
|
| #include "base/bind_helpers.h"
|
| #include "base/metrics/histogram.h"
|
| #include "base/metrics/sparse_histogram.h"
|
| -#include "base/single_thread_task_runner.h"
|
| #include "base/strings/string_util.h"
|
| #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_configurator.h"
|
| #include "components/data_reduction_proxy/core/common/data_reduction_proxy_config_values.h"
|
| @@ -54,7 +53,8 @@ namespace data_reduction_proxy {
|
| // Checks if the secure proxy is allowed by the carrier by sending a probe.
|
| class SecureProxyChecker : public net::URLFetcherDelegate {
|
| public:
|
| - SecureProxyChecker(net::URLRequestContextGetter* url_request_context_getter)
|
| + SecureProxyChecker(const scoped_refptr<net::URLRequestContextGetter>&
|
| + url_request_context_getter)
|
| : url_request_context_getter_(url_request_context_getter) {}
|
|
|
| void OnURLFetchComplete(const net::URLFetcher* source) override {
|
| @@ -101,7 +101,6 @@ class SecureProxyChecker : public net::URLFetcherDelegate {
|
| };
|
|
|
| DataReductionProxyConfig::DataReductionProxyConfig(
|
| - scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
|
| net::NetLog* net_log,
|
| scoped_ptr<DataReductionProxyConfigValues> config_values,
|
| DataReductionProxyConfigurator* configurator,
|
| @@ -112,24 +111,23 @@ DataReductionProxyConfig::DataReductionProxyConfig(
|
| enabled_by_user_(false),
|
| alternative_enabled_by_user_(false),
|
| config_values_(config_values.Pass()),
|
| - io_task_runner_(io_task_runner),
|
| net_log_(net_log),
|
| configurator_(configurator),
|
| - event_creator_(event_creator),
|
| - url_request_context_getter_(nullptr) {
|
| - DCHECK(io_task_runner);
|
| + event_creator_(event_creator) {
|
| DCHECK(configurator);
|
| DCHECK(event_creator);
|
| + // Constructed on the UI thread, but should be checked on the IO thread.
|
| + thread_checker_.DetachFromThread();
|
| }
|
|
|
| DataReductionProxyConfig::~DataReductionProxyConfig() {
|
| net::NetworkChangeNotifier::RemoveIPAddressObserver(this);
|
| }
|
|
|
| -void DataReductionProxyConfig::InitializeOnIOThread(
|
| - net::URLRequestContextGetter* url_request_context_getter) {
|
| - DCHECK(url_request_context_getter);
|
| - url_request_context_getter_ = url_request_context_getter;
|
| +void DataReductionProxyConfig::InitializeOnIOThread(const scoped_refptr<
|
| + net::URLRequestContextGetter>& url_request_context_getter) {
|
| + secure_proxy_checker_.reset(
|
| + new SecureProxyChecker(url_request_context_getter));
|
|
|
| if (!config_values_->allowed())
|
| return;
|
| @@ -139,7 +137,7 @@ void DataReductionProxyConfig::InitializeOnIOThread(
|
| }
|
|
|
| void DataReductionProxyConfig::ReloadConfig() {
|
| - DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| UpdateConfigurator(enabled_by_user_, alternative_enabled_by_user_,
|
| restricted_by_carrier_, false /* at_startup */);
|
| }
|
| @@ -147,6 +145,7 @@ void DataReductionProxyConfig::ReloadConfig() {
|
| bool DataReductionProxyConfig::WasDataReductionProxyUsed(
|
| const net::URLRequest* request,
|
| DataReductionProxyTypeInfo* proxy_info) const {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| DCHECK(request);
|
| return IsDataReductionProxy(request->proxy_server(), proxy_info);
|
| }
|
| @@ -154,12 +153,14 @@ bool DataReductionProxyConfig::WasDataReductionProxyUsed(
|
| bool DataReductionProxyConfig::IsDataReductionProxy(
|
| const net::HostPortPair& host_port_pair,
|
| DataReductionProxyTypeInfo* proxy_info) const {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| return config_values_->IsDataReductionProxy(host_port_pair, proxy_info);
|
| }
|
|
|
| bool DataReductionProxyConfig::IsBypassedByDataReductionProxyLocalRules(
|
| const net::URLRequest& request,
|
| const net::ProxyConfig& data_reduction_proxy_config) const {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| DCHECK(request.context());
|
| DCHECK(request.context()->proxy_service());
|
| net::ProxyInfo result;
|
| @@ -176,6 +177,7 @@ bool DataReductionProxyConfig::AreDataReductionProxiesBypassed(
|
| const net::URLRequest& request,
|
| const net::ProxyConfig& data_reduction_proxy_config,
|
| base::TimeDelta* min_retry_delay) const {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| if (request.context() != NULL &&
|
| request.context()->proxy_service() != NULL) {
|
| return AreProxiesBypassed(
|
| @@ -231,6 +233,7 @@ bool DataReductionProxyConfig::IsProxyBypassed(
|
| const net::ProxyRetryInfoMap& retry_map,
|
| const net::ProxyServer& proxy_server,
|
| base::TimeDelta* retry_delay) const {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| net::ProxyRetryInfoMap::const_iterator found =
|
| retry_map.find(proxy_server.ToURI());
|
|
|
| @@ -247,6 +250,7 @@ bool DataReductionProxyConfig::IsProxyBypassed(
|
|
|
| bool DataReductionProxyConfig::ContainsDataReductionProxy(
|
| const net::ProxyConfig::ProxyRules& proxy_rules) const {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| // Data Reduction Proxy configurations are always TYPE_PROXY_PER_SCHEME.
|
| if (proxy_rules.type != net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME)
|
| return false;
|
| @@ -272,6 +276,7 @@ bool DataReductionProxyConfig::ContainsDataReductionProxy(
|
|
|
| bool DataReductionProxyConfig::UsingHTTPTunnel(
|
| const net::HostPortPair& proxy_server) const {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| return config_values_->UsingHTTPTunnel(proxy_server);
|
| }
|
|
|
| @@ -294,6 +299,7 @@ bool DataReductionProxyConfig::promo_allowed() const {
|
|
|
| void DataReductionProxyConfig::SetProxyConfig(
|
| bool enabled, bool alternative_enabled, bool at_startup) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| enabled_by_user_ = enabled;
|
| alternative_enabled_by_user_ = alternative_enabled;
|
| UpdateConfigurator(enabled_by_user_, alternative_enabled_by_user_,
|
| @@ -317,7 +323,6 @@ void DataReductionProxyConfig::UpdateConfigurator(bool enabled,
|
| bool alternative_enabled,
|
| bool restricted,
|
| bool at_startup) {
|
| - DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| DCHECK(configurator_);
|
| LogProxyState(enabled, restricted, at_startup);
|
| // The alternative is only configured if the standard configuration is
|
| @@ -375,7 +380,6 @@ void DataReductionProxyConfig::HandleSecureProxyCheckResponse(
|
| const std::string& response,
|
| const net::URLRequestStatus& status,
|
| int http_response_code) {
|
| - DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| bool success_response = ("OK" == response.substr(0, 2));
|
| if (event_creator_)
|
| event_creator_->EndSecureProxyCheck(bound_net_log_, status.error(),
|
| @@ -428,7 +432,6 @@ void DataReductionProxyConfig::HandleSecureProxyCheckResponse(
|
| }
|
|
|
| void DataReductionProxyConfig::OnIPAddressChanged() {
|
| - DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| if (enabled_by_user_) {
|
| DCHECK(config_values_->allowed());
|
| RecordNetworkChangeEvent(IP_CHANGED);
|
| @@ -484,7 +487,6 @@ void DataReductionProxyConfig::RecordSecureProxyCheckFetchResult(
|
| void DataReductionProxyConfig::SecureProxyCheck(
|
| const GURL& secure_proxy_check_url,
|
| FetcherResponseCallback fetcher_callback) {
|
| - DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| bound_net_log_ = net::BoundNetLog::Make(
|
| net_log_, net::NetLog::SOURCE_DATA_REDUCTION_PROXY);
|
| if (event_creator_) {
|
| @@ -492,10 +494,6 @@ void DataReductionProxyConfig::SecureProxyCheck(
|
| bound_net_log_, config_values_->secure_proxy_check_url());
|
| }
|
|
|
| - if (!secure_proxy_checker_) {
|
| - secure_proxy_checker_.reset(
|
| - new SecureProxyChecker(url_request_context_getter_));
|
| - }
|
| secure_proxy_checker_->CheckIfSecureProxyIsAllowed(secure_proxy_check_url,
|
| fetcher_callback);
|
| }
|
|
|