Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Unified Diff: net/proxy/proxy_service.cc

Issue 10912132: Move ProxyConfigService construction onto the IO thread. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Adjust comments Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/proxy/proxy_service.cc
diff --git a/net/proxy/proxy_service.cc b/net/proxy/proxy_service.cc
index 9989b8221cdc09944ce3e14622d3d088851b6f7e..6e6d6e37e5b72545237e4cf5c604060c44817ab1 100644
--- a/net/proxy/proxy_service.cc
+++ b/net/proxy/proxy_service.cc
@@ -1318,47 +1318,37 @@ void ProxyService::ForceReloadProxyConfig() {
ApplyProxyConfigIfAvailable();
}
+void ProxyService::StartTearDown() {
+ config_service_->StartTearDown();
+}
+
// static
ProxyConfigService* ProxyService::CreateSystemProxyConfigService(
- base::SingleThreadTaskRunner* io_thread_task_runner,
+ base::SingleThreadTaskRunner* glib_thread_task_runner,
MessageLoop* file_loop) {
#if defined(OS_WIN)
return new ProxyConfigServiceWin();
#elif defined(OS_IOS)
return new ProxyConfigServiceIOS();
#elif defined(OS_MACOSX)
- return new ProxyConfigServiceMac(io_thread_task_runner);
+ return new ProxyConfigServiceMac(
+ MessageLoopForIO::current()->message_loop_proxy());
#elif defined(OS_CHROMEOS)
LOG(ERROR) << "ProxyConfigService for ChromeOS should be created in "
<< "profile_io_data.cc::CreateProxyConfigService and this should "
<< "be used only for examples.";
return new UnsetProxyConfigService;
#elif defined(OS_LINUX)
- ProxyConfigServiceLinux* linux_config_service =
- new ProxyConfigServiceLinux();
-
- // Assume we got called on the thread that runs the default glib
- // main loop, so the current thread is where we should be running
- // gconf calls from.
- scoped_refptr<base::SingleThreadTaskRunner> glib_thread_task_runner =
- base::ThreadTaskRunnerHandle::Get();
-
// The file loop should be a MessageLoopForIO on Linux.
DCHECK_EQ(MessageLoop::TYPE_IO, file_loop->type());
-
- // Synchronously fetch the current proxy config (since we are
- // running on glib_default_loop). Additionally register for
- // notifications (delivered in either |glib_default_loop| or
- // |file_loop|) to keep us updated when the proxy config changes.
- linux_config_service->SetupAndFetchInitialConfig(
- glib_thread_task_runner, io_thread_task_runner,
+ return new ProxyConfigServiceLinux(
+ glib_thread_task_runner,
+ MessageLoopForIO::current()->message_loop_proxy(),
static_cast<MessageLoopForIO*>(file_loop));
-
- return linux_config_service;
#elif defined(OS_ANDROID)
return new ProxyConfigServiceAndroid(
- io_thread_task_runner,
- MessageLoopForUI::current()->message_loop_proxy());
+ glib_thread_task_runner,
+ MessageLoopForIO::current()->message_loop_proxy());
#else
LOG(WARNING) << "Failed to choose a system proxy settings fetcher "
"for this platform.";

Powered by Google App Engine
This is Rietveld 408576698