| 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) {
|
|
|