Index: content/shell/shell_browser_main.cc |
=================================================================== |
--- content/shell/shell_browser_main.cc (revision 100929) |
+++ content/shell/shell_browser_main.cc (working copy) |
@@ -4,3 +4,89 @@ |
#include "content/shell/shell_browser_main.h" |
+#include "base/message_loop.h" |
+#include "base/threading/thread.h" |
+#include "base/threading/thread_restrictions.h" |
+#include "content/browser/browser_process_sub_thread.h" |
+#include "content/browser/renderer_host/resource_dispatcher_host.h" |
+#include "content/browser/tab_contents/tab_contents.h" |
+#include "content/browser/tab_contents/navigation_controller.h" |
+#include "content/common/page_transition_types.h" |
+#include "content/shell/shell_browser_context.h" |
+#include "content/shell/shell_content_browser_client.h" |
+#include "ui/base/clipboard/clipboard.h" |
+ |
+namespace content { |
+ |
+ShellBrowserMainParts::ShellBrowserMainParts( |
+ const MainFunctionParams& parameters) |
+ : BrowserMainParts(parameters) { |
+ ShellContentBrowserClient* shell_browser_client = |
+ static_cast<ShellContentBrowserClient*>( |
+ content::GetContentClient()->browser()); |
+ shell_browser_client->set_shell_browser_main_parts(this); |
+} |
+ |
+ShellBrowserMainParts::~ShellBrowserMainParts() { |
+ base::ThreadRestrictions::SetIOAllowed(true); |
+ io_thread()->message_loop()->PostTask( |
+ FROM_HERE, |
+ NewRunnableFunction(&base::ThreadRestrictions::SetIOAllowed, true)); |
+ |
+ 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); |
+ |
+ browser_context_.reset(new ShellBrowserContext(this)); |
+ |
+ tab_contents_.reset(new TabContents( |
+ browser_context_.get(), |
+ NULL, |
+ MSG_ROUTING_NONE, |
+ NULL, |
+ NULL)); |
+ tab_contents_->controller().LoadURL( |
+ GURL("http://www.google.com"), |
+ GURL(), |
+ PageTransition::TYPED, |
+ std::string()); |
+} |
+ |
+ResourceDispatcherHost* ShellBrowserMainParts::GetResourceDispatcherHost() { |
+ if (!resource_dispatcher_host_.get()) { |
+ ResourceQueue::DelegateSet resource_queue_delegates; |
+ resource_dispatcher_host_.reset( |
+ new ResourceDispatcherHost(resource_queue_delegates)); |
+ } |
+ return resource_dispatcher_host_.get(); |
+} |
+ |
+ui::Clipboard* ShellBrowserMainParts::GetClipboard() { |
+ if (!clipboard_.get()) |
+ clipboard_.reset(new ui::Clipboard()); |
+ return clipboard_.get(); |
+} |
+ |
+} // namespace |