diff options
Diffstat (limited to 'content/shell/shell_browser_main.cc')
-rw-r--r-- | content/shell/shell_browser_main.cc | 49 |
1 files changed, 16 insertions, 33 deletions
diff --git a/content/shell/shell_browser_main.cc b/content/shell/shell_browser_main.cc index a5f2fbe..324139e 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) { |