diff options
author | joi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-28 12:51:39 +0000 |
---|---|---|
committer | joi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-28 12:51:39 +0000 |
commit | 042666f262a0c2ff601402e95f94fe9664a03f17 (patch) | |
tree | 508140a07a104fd3dd03b4c4c6548161de30f67f /content/shell/shell_browser_main.cc | |
parent | 1d697f38d70b8edaca243a49f790b525c1c95a9d (diff) | |
download | chromium_src-042666f262a0c2ff601402e95f94fe9664a03f17.zip chromium_src-042666f262a0c2ff601402e95f94fe9664a03f17.tar.gz chromium_src-042666f262a0c2ff601402e95f94fe9664a03f17.tar.bz2 |
Have content/ create and destroy its own threads.
Change embedding API and embedders to allow for this.
Push inheritance of base::Thread down to content::BrowserThreadImpl so
that content::BrowserThread is just a namespace for API functions.
This change temporarily disables chrome_frame_net_tests as agreed by the CF lead, see bug 105435.
TBR=ben@chromium.org (IWYU change only)
BUG=98716,104578,105435
Review URL: http://codereview.chromium.org/8477004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@111695 0039d316-1c4b-4281-b951-d872f2087c98
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) { |