Index: content/shell/shell_browser_main.cc |
diff --git a/content/shell/shell_browser_main.cc b/content/shell/shell_browser_main.cc |
index a5f2fbe1e41f8acb6949def2f97dc9e4ce85b963..324139eb49dca8770612ff1472d02928f84f9bdb 100644 |
--- a/content/shell/shell_browser_main.cc |
+++ b/content/shell/shell_browser_main.cc |
@@ -40,41 +40,9 @@ ShellBrowserMainParts::ShellBrowserMainParts( |
} |
ShellBrowserMainParts::~ShellBrowserMainParts() { |
- base::ThreadRestrictions::SetIOAllowed(true); |
- io_thread()->message_loop()->PostTask( |
- FROM_HERE, base::IgnoreReturn<bool>( |
- base::Bind(&base::ThreadRestrictions::SetIOAllowed, true))); |
- |
- browser_context_.reset(); |
- |
- resource_dispatcher_host_->download_file_manager()->Shutdown(); |
- resource_dispatcher_host_->save_file_manager()->Shutdown(); |
- resource_dispatcher_host_->Shutdown(); |
- io_thread_.reset(); |
- cache_thread_.reset(); |
- process_launcher_thread_.reset(); |
- file_thread_.reset(); |
- resource_dispatcher_host_.reset(); // Kills WebKit thread. |
- db_thread_.reset(); |
} |
-void ShellBrowserMainParts::PreMainMessageLoopRun() { |
- db_thread_.reset(new BrowserProcessSubThread(BrowserThread::DB)); |
- db_thread_->Start(); |
- file_thread_.reset(new BrowserProcessSubThread(BrowserThread::FILE)); |
- file_thread_->Start(); |
- process_launcher_thread_.reset( |
- new BrowserProcessSubThread(BrowserThread::PROCESS_LAUNCHER)); |
- process_launcher_thread_->Start(); |
- |
- base::Thread::Options options; |
- options.message_loop_type = MessageLoop::TYPE_IO; |
- |
- cache_thread_.reset(new BrowserProcessSubThread(BrowserThread::CACHE)); |
- cache_thread_->StartWithOptions(options); |
- io_thread_.reset(new BrowserProcessSubThread(BrowserThread::IO)); |
- io_thread_->StartWithOptions(options); |
- |
+void ShellBrowserMainParts::PreCreateThreads() { |
browser_context_.reset(new ShellBrowserContext(this)); |
Shell::PlatformInitialize(); |
@@ -85,7 +53,22 @@ void ShellBrowserMainParts::PreMainMessageLoopRun() { |
NULL, |
MSG_ROUTING_NONE, |
NULL); |
+} |
+ |
+void ShellBrowserMainParts::PostMainMessageLoopRun() { |
+ browser_context_.reset(); |
+ resource_dispatcher_host_->download_file_manager()->Shutdown(); |
+ resource_dispatcher_host_->save_file_manager()->Shutdown(); |
+ resource_dispatcher_host_->Shutdown(); |
+} |
+ |
+void ShellBrowserMainParts::PreStopThread(BrowserThread::ID id) { |
+ if (id == BrowserThread::WEBKIT) { |
+ // It remains the embedder's responsibility to kill the WebKit |
+ // thread. This happens when RDH is destroyed. |
+ resource_dispatcher_host_.reset(); |
+ } |
} |
bool ShellBrowserMainParts::MainMessageLoopRun(int* result_code) { |