| Index: chrome/browser/profiles/profile_io_data.cc
|
| diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc
|
| index 86e8045b5399b6d890b20a980df56c56a7a1b85e..222fded59853e49b70e484788256532125232fb0 100644
|
| --- a/chrome/browser/profiles/profile_io_data.cc
|
| +++ b/chrome/browser/profiles/profile_io_data.cc
|
| @@ -135,6 +135,18 @@ Profile* GetProfileOnUI(ProfileManager* profile_manager, Profile* profile) {
|
| return NULL;
|
| }
|
|
|
| +// Inform PrefProxyConfigTracker of underlying ChromeProxyConfigService.
|
| +void SetChromeProxyConfigService(
|
| + base::Callback<Profile*(void)> profile_getter,
|
| + ChromeProxyConfigService* chrome_proxy_config_service) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + Profile* profile = profile_getter.Run();
|
| + if (profile) {
|
| + profile->GetProxyConfigTracker()->SetChromeProxyConfigService(
|
| + chrome_proxy_config_service);
|
| + }
|
| +}
|
| +
|
| } // namespace
|
|
|
| void ProfileIOData::InitializeOnUIThread(Profile* profile) {
|
| @@ -199,11 +211,7 @@ void ProfileIOData::InitializeOnUIThread(Profile* profile) {
|
| params->protocol_handler_interceptor.reset(
|
| protocol_handler_registry->CreateURLInterceptor());
|
|
|
| - ChromeProxyConfigService* proxy_config_service =
|
| - ProxyServiceFactory::CreateProxyConfigService(true);
|
| - params->proxy_config_service.reset(proxy_config_service);
|
| - profile->GetProxyConfigTracker()->SetChromeProxyConfigService(
|
| - proxy_config_service);
|
| + params->profile_getter = profile_getter;
|
| params->profile = profile;
|
| profile_params_.reset(params.release());
|
|
|
| @@ -552,11 +560,18 @@ void ProfileIOData::LazyInitialize() const {
|
| new chrome_browser_net::ChromeFraudulentCertificateReporter(
|
| main_request_context_.get()));
|
|
|
| + ChromeProxyConfigService* proxy_config_service =
|
| + ProxyServiceFactory::CreateProxyConfigService(true);
|
| + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| + base::Bind(&SetChromeProxyConfigService,
|
| + profile_params_->profile_getter,
|
| + proxy_config_service));
|
| +
|
| proxy_service_.reset(
|
| ProxyServiceFactory::CreateProxyService(
|
| io_thread->net_log(),
|
| io_thread_globals->proxy_script_fetcher_context.get(),
|
| - profile_params_->proxy_config_service.release(),
|
| + proxy_config_service,
|
| command_line));
|
|
|
| transport_security_state_.reset(new net::TransportSecurityState());
|
| @@ -677,6 +692,8 @@ void ProfileIOData::ShutdownOnUIThread() {
|
| if (url_blacklist_manager_.get())
|
| url_blacklist_manager_->ShutdownOnUIThread();
|
| #endif
|
| + if (proxy_service_.get())
|
| + proxy_service_->StartTearDown();
|
| bool posted = BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE, this);
|
| if (!posted)
|
| delete this;
|
|
|