| Index: components/proxy_config/pref_proxy_config_tracker_impl.cc
|
| diff --git a/chrome/browser/net/pref_proxy_config_tracker_impl.cc b/components/proxy_config/pref_proxy_config_tracker_impl.cc
|
| similarity index 87%
|
| rename from chrome/browser/net/pref_proxy_config_tracker_impl.cc
|
| rename to components/proxy_config/pref_proxy_config_tracker_impl.cc
|
| index 6de119ea7f9ca9223fe181e13166b5775ee8dceb..13176a00dc120eb6d866390feb61394b74695c29 100644
|
| --- a/chrome/browser/net/pref_proxy_config_tracker_impl.cc
|
| +++ b/components/proxy_config/pref_proxy_config_tracker_impl.cc
|
| @@ -2,26 +2,21 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "chrome/browser/net/pref_proxy_config_tracker_impl.h"
|
| +#include "components/proxy_config/pref_proxy_config_tracker_impl.h"
|
|
|
| #include "base/bind.h"
|
| +#include "base/location.h"
|
| #include "base/metrics/histogram_macros.h"
|
| #include "base/prefs/pref_registry_simple.h"
|
| #include "base/prefs/pref_service.h"
|
| +#include "base/single_thread_task_runner.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/values.h"
|
| -#include "chrome/browser/chrome_notification_types.h"
|
| -#include "chrome/common/pref_names.h"
|
| #include "components/pref_registry/pref_registry_syncable.h"
|
| #include "components/proxy_config/proxy_config_dictionary.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -#include "content/public/browser/notification_details.h"
|
| -#include "content/public/browser/notification_source.h"
|
| #include "net/proxy/proxy_list.h"
|
| #include "net/proxy/proxy_server.h"
|
|
|
| -using content::BrowserThread;
|
| -
|
| namespace {
|
|
|
| // Determine if |proxy| is of the form "*.googlezip.net".
|
| @@ -93,8 +88,7 @@ ChromeProxyConfigService::ChromeProxyConfigService(
|
| : base_service_(base_service),
|
| pref_config_state_(ProxyPrefs::CONFIG_UNSET),
|
| pref_config_read_pending_(true),
|
| - registered_observer_(false) {
|
| -}
|
| + registered_observer_(false) {}
|
|
|
| ChromeProxyConfigService::~ChromeProxyConfigService() {
|
| if (registered_observer_ && base_service_.get())
|
| @@ -113,7 +107,7 @@ void ChromeProxyConfigService::RemoveObserver(
|
| }
|
|
|
| net::ProxyConfigService::ConfigAvailability
|
| - ChromeProxyConfigService::GetLatestProxyConfig(net::ProxyConfig* config) {
|
| +ChromeProxyConfigService::GetLatestProxyConfig(net::ProxyConfig* config) {
|
| RegisterObserver();
|
|
|
| if (pref_config_read_pending_)
|
| @@ -128,9 +122,8 @@ net::ProxyConfigService::ConfigAvailability
|
|
|
| ProxyPrefs::ConfigState config_state;
|
| return PrefProxyConfigTrackerImpl::GetEffectiveProxyConfig(
|
| - pref_config_state_, pref_config_,
|
| - system_availability, system_config, false,
|
| - &config_state, config);
|
| + pref_config_state_, pref_config_, system_availability, system_config,
|
| + false, &config_state, config);
|
| }
|
|
|
| void ChromeProxyConfigService::OnLazyPoll() {
|
| @@ -141,7 +134,7 @@ void ChromeProxyConfigService::OnLazyPoll() {
|
| void ChromeProxyConfigService::UpdateProxyConfig(
|
| ProxyPrefs::ConfigState config_state,
|
| const net::ProxyConfig& config) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
| pref_config_read_pending_ = false;
|
| pref_config_state_ = config_state;
|
| @@ -169,7 +162,7 @@ void ChromeProxyConfigService::UpdateProxyConfig(
|
| void ChromeProxyConfigService::OnProxyConfigChanged(
|
| const net::ProxyConfig& config,
|
| ConfigAvailability availability) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
| // Check whether there is a proxy configuration defined by preferences. In
|
| // this case that proxy configuration takes precedence and the change event
|
| @@ -183,7 +176,7 @@ void ChromeProxyConfigService::OnProxyConfigChanged(
|
| }
|
|
|
| void ChromeProxyConfigService::RegisterObserver() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| if (!registered_observer_ && base_service_.get()) {
|
| base_service_->AddObserver(this);
|
| registered_observer_ = true;
|
| @@ -193,13 +186,15 @@ void ChromeProxyConfigService::RegisterObserver() {
|
| //========================= PrefProxyConfigTrackerImpl =========================
|
|
|
| PrefProxyConfigTrackerImpl::PrefProxyConfigTrackerImpl(
|
| - PrefService* pref_service)
|
| + PrefService* pref_service,
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner)
|
| : pref_service_(pref_service),
|
| chrome_proxy_config_service_(NULL),
|
| - update_pending_(true) {
|
| + update_pending_(true),
|
| + task_runner_(task_runner) {
|
| config_state_ = ReadPrefConfig(pref_service_, &pref_config_);
|
| proxy_prefs_.Init(pref_service);
|
| - proxy_prefs_.Add(prefs::kProxy,
|
| + proxy_prefs_.Add(ProxyPrefs::kProxy,
|
| base::Bind(&PrefProxyConfigTrackerImpl::OnProxyPrefChanged,
|
| base::Unretained(this)));
|
| }
|
| @@ -222,7 +217,7 @@ PrefProxyConfigTrackerImpl::CreateTrackingProxyConfigService(
|
| }
|
|
|
| void PrefProxyConfigTrackerImpl::DetachFromPrefService() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| // Stop notifications.
|
| proxy_prefs_.RemoveAll();
|
| pref_service_ = NULL;
|
| @@ -239,14 +234,14 @@ bool PrefProxyConfigTrackerImpl::PrefPrecedes(
|
|
|
| // static
|
| net::ProxyConfigService::ConfigAvailability
|
| - PrefProxyConfigTrackerImpl::GetEffectiveProxyConfig(
|
| - ProxyPrefs::ConfigState pref_state,
|
| - const net::ProxyConfig& pref_config,
|
| - net::ProxyConfigService::ConfigAvailability system_availability,
|
| - const net::ProxyConfig& system_config,
|
| - bool ignore_fallback_config,
|
| - ProxyPrefs::ConfigState* effective_config_state,
|
| - net::ProxyConfig* effective_config) {
|
| +PrefProxyConfigTrackerImpl::GetEffectiveProxyConfig(
|
| + ProxyPrefs::ConfigState pref_state,
|
| + const net::ProxyConfig& pref_config,
|
| + net::ProxyConfigService::ConfigAvailability system_availability,
|
| + const net::ProxyConfig& system_config,
|
| + bool ignore_fallback_config,
|
| + ProxyPrefs::ConfigState* effective_config_state,
|
| + net::ProxyConfig* effective_config) {
|
| net::ProxyConfigService::ConfigAvailability rv;
|
| *effective_config_state = pref_state;
|
|
|
| @@ -284,7 +279,7 @@ net::ProxyConfigService::ConfigAvailability
|
| void PrefProxyConfigTrackerImpl::RegisterPrefs(PrefRegistrySimple* registry) {
|
| base::DictionaryValue* default_settings =
|
| ProxyConfigDictionary::CreateSystem();
|
| - registry->RegisterDictionaryPref(prefs::kProxy, default_settings);
|
| + registry->RegisterDictionaryPref(ProxyPrefs::kProxy, default_settings);
|
| }
|
|
|
| // static
|
| @@ -292,25 +287,23 @@ void PrefProxyConfigTrackerImpl::RegisterProfilePrefs(
|
| user_prefs::PrefRegistrySyncable* pref_service) {
|
| base::DictionaryValue* default_settings =
|
| ProxyConfigDictionary::CreateSystem();
|
| - pref_service->RegisterDictionaryPref(prefs::kProxy, default_settings);
|
| + pref_service->RegisterDictionaryPref(ProxyPrefs::kProxy, default_settings);
|
| }
|
|
|
| // static
|
| ProxyPrefs::ConfigState PrefProxyConfigTrackerImpl::ReadPrefConfig(
|
| const PrefService* pref_service,
|
| net::ProxyConfig* config) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| -
|
| // Clear the configuration and source.
|
| *config = net::ProxyConfig();
|
| ProxyPrefs::ConfigState config_state = ProxyPrefs::CONFIG_UNSET;
|
|
|
| const PrefService::Preference* pref =
|
| - pref_service->FindPreference(prefs::kProxy);
|
| + pref_service->FindPreference(ProxyPrefs::kProxy);
|
| DCHECK(pref);
|
|
|
| const base::DictionaryValue* dict =
|
| - pref_service->GetDictionary(prefs::kProxy);
|
| + pref_service->GetDictionary(ProxyPrefs::kProxy);
|
| DCHECK(dict);
|
| ProxyConfigDictionary proxy_dict(dict);
|
|
|
| @@ -322,7 +315,7 @@ ProxyPrefs::ConfigState PrefProxyConfigTrackerImpl::ReadPrefConfig(
|
| config_state = ProxyPrefs::CONFIG_EXTENSION;
|
| else
|
| config_state = ProxyPrefs::CONFIG_OTHER_PRECEDE;
|
| - } else {
|
| + } else {
|
| config_state = ProxyPrefs::CONFIG_FALLBACK;
|
| }
|
| }
|
| @@ -332,7 +325,7 @@ ProxyPrefs::ConfigState PrefProxyConfigTrackerImpl::ReadPrefConfig(
|
|
|
| ProxyPrefs::ConfigState PrefProxyConfigTrackerImpl::GetProxyConfig(
|
| net::ProxyConfig* config) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| if (config_state_ != ProxyPrefs::CONFIG_UNSET)
|
| *config = pref_config_;
|
| return config_state_;
|
| @@ -346,11 +339,10 @@ void PrefProxyConfigTrackerImpl::OnProxyConfigChanged(
|
| update_pending_ = true;
|
| return;
|
| }
|
| - update_pending_ = !BrowserThread::PostTask(
|
| - BrowserThread::IO, FROM_HERE,
|
| - base::Bind(&ChromeProxyConfigService::UpdateProxyConfig,
|
| - base::Unretained(chrome_proxy_config_service_),
|
| - config_state, config));
|
| + update_pending_ = !task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&ChromeProxyConfigService::UpdateProxyConfig,
|
| + base::Unretained(chrome_proxy_config_service_),
|
| + config_state, config));
|
| VLOG(1) << this << (update_pending_ ? ": Error" : ": Done")
|
| << " pushing proxy to UpdateProxyConfig";
|
| }
|
| @@ -417,10 +409,10 @@ bool PrefProxyConfigTrackerImpl::PrefConfigToNetConfig(
|
| }
|
|
|
| void PrefProxyConfigTrackerImpl::OnProxyPrefChanged() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| net::ProxyConfig new_config;
|
| - ProxyPrefs::ConfigState config_state = ReadPrefConfig(pref_service_,
|
| - &new_config);
|
| + ProxyPrefs::ConfigState config_state =
|
| + ReadPrefConfig(pref_service_, &new_config);
|
| if (config_state_ != config_state ||
|
| (config_state_ != ProxyPrefs::CONFIG_UNSET &&
|
| !pref_config_.Equals(new_config))) {
|
|
|