From 1933eb200c4bb16e4df535d779c98561f85c1e25 Mon Sep 17 00:00:00 2001 From: "phajdan.jr@chromium.org" Date: Thu, 19 Feb 2009 18:23:25 +0000 Subject: Clean up dns prefetch code, and also port it. - remove slave threads and use HostResolver in asynchronous mode instead (while still limiting number of concurrent lookups) - make the implementation portable and make DnsMaster unit test compile and pass on Linux - add more tests to DnsMaster unit test to simulate various shutdown scenarios, concurrent lookups, and to verify that we don't exceed our limit of concurrent lookup requests) - remove some tests which relied on specifics of slaves' inner working - adjust initialization and shutdown of dns prefetching (now it relies on the IO message loop being present) Bonus: shutdown is almost instant now, no need to have a timeout. BUG=5687, 6683 Review URL: http://codereview.chromium.org/15076 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10021 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/browser_process_impl.cc | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'chrome/browser/browser_process_impl.cc') diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc index eb545e5..21bd96b 100644 --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc @@ -14,6 +14,7 @@ #include "chrome/browser/download/save_file_manager.h" #include "chrome/browser/google_url_tracker.h" #include "chrome/browser/metrics/metrics_service.h" +#include "chrome/browser/net/dns_global.h" #include "chrome/browser/profile_manager.h" #include "chrome/browser/renderer_host/render_process_host.h" #include "chrome/browser/renderer_host/resource_dispatcher_host.h" @@ -174,6 +175,11 @@ BrowserProcessImpl::~BrowserProcessImpl() { resource_dispatcher_host()->Shutdown(); } + // Shutdown DNS prefetching now to ensure that network stack objects + // living on the IO thread get destroyed before the IO thread goes away. + io_thread_->message_loop()->PostTask(FROM_HERE, + NewRunnableFunction(chrome_browser_net::ShutdownDnsPrefetch)); + // Need to stop io_thread_ before resource_dispatcher_host_, since // io_thread_ may still deref ResourceDispatcherHost and handle resource // request before going away. -- cgit v1.1