Index: chromecast/browser/cast_browser_process.cc |
diff --git a/chromecast/browser/cast_browser_process.cc b/chromecast/browser/cast_browser_process.cc |
index cf7101aab315a05cd2c52005d003c15de9ff24af..f27a061788106489b53dac7865c29ccccba088ad 100644 |
--- a/chromecast/browser/cast_browser_process.cc |
+++ b/chromecast/browser/cast_browser_process.cc |
@@ -16,6 +16,9 @@ |
#include "chromecast/net/connectivity_checker.h" |
#include "chromecast/service/cast_service.h" |
#include "components/prefs/pref_service.h" |
+#include "components/proxy_config/pref_proxy_config_tracker_impl.h" |
+#include "content/public/browser/browser_thread.h" |
+#include "net/proxy/proxy_service.h" |
#if defined(OS_ANDROID) |
#include "components/crash/content/browser/crash_dump_manager_android.h" |
@@ -47,6 +50,11 @@ CastBrowserProcess::CastBrowserProcess() |
CastBrowserProcess::~CastBrowserProcess() { |
DCHECK_EQ(g_instance, this); |
+ pref_proxy_config_tracker_impl_->DetachFromPrefService(); |
+ connectivity_checker_->DetachFromPrefService(); |
+ |
+ content::BrowserThread::GetTaskRunnerForThread(content::BrowserThread::IO) |
+ ->DeleteSoon(FROM_HERE, proxy_service_.release()); |
if (pref_service_) |
pref_service_->CommitPendingWrite(); |
g_instance = NULL; |
@@ -94,6 +102,20 @@ void CastBrowserProcess::SetPrefService( |
std::unique_ptr<PrefService> pref_service) { |
DCHECK(!pref_service_); |
pref_service_.swap(pref_service); |
+ |
+ pref_proxy_config_tracker_impl_ = |
wzhong
2017/02/07 15:56:02
I'd rather you have a separate function SetPrefPro
almasrymina
2017/02/08 00:48:03
Removed with new approach.
|
+ base::MakeUnique<PrefProxyConfigTrackerImpl>( |
+ pref_service_.get(), content::BrowserThread::GetTaskRunnerForThread( |
+ content::BrowserThread::IO)); |
+} |
+ |
+void CastBrowserProcess::SetProxyService() { |
+ std::unique_ptr<net::ProxyConfigService> proxy_config_service = |
+ pref_proxy_config_tracker_impl_->CreateTrackingProxyConfigService( |
+ nullptr); |
+ |
+ proxy_service_ = net::ProxyService::CreateUsingSystemProxyResolver( |
+ std::move(proxy_config_service), 0, nullptr); |
} |
void CastBrowserProcess::SetRemoteDebuggingServer( |