Index: content/browser/browser_main_loop.cc |
=================================================================== |
--- content/browser/browser_main_loop.cc (revision 121244) |
+++ content/browser/browser_main_loop.cc (working copy) |
@@ -290,9 +290,7 @@ |
// Must first NULL pointer or we hit a DCHECK that the newly constructed |
// message loop is the current one. |
main_message_loop_.reset(); |
- main_message_loop_.reset(parts_->GetMainMessageLoop()); |
- if (!main_message_loop_.get()) |
- main_message_loop_.reset(new MessageLoop(MessageLoop::TYPE_UI)); |
+ main_message_loop_.reset(new MessageLoop(MessageLoop::TYPE_UI)); |
InitializeMainThread(); |
@@ -319,7 +317,8 @@ |
parts_->PostMainMessageLoopStart(); |
} |
-void BrowserMainLoop::CreateThreads() { |
+void BrowserMainLoop::RunMainMessageLoopParts( |
+ bool* completed_main_message_loop) { |
if (parts_.get()) |
result_code_ = parts_->PreCreateThreads(); |
@@ -401,14 +400,11 @@ |
if (parts_.get()) |
parts_->PreMainMessageLoopRun(); |
+ TRACE_EVENT_BEGIN_ETW("BrowserMain:MESSAGE_LOOP", 0, ""); |
// If the UI thread blocks, the whole UI is unresponsive. |
// Do not allow disk IO from the UI thread. |
base::ThreadRestrictions::SetIOAllowed(false); |
-} |
-void BrowserMainLoop::RunMainMessageLoopParts() { |
- TRACE_EVENT_BEGIN_ETW("BrowserMain:MESSAGE_LOOP", 0, ""); |
- |
bool ran_main_loop = false; |
if (parts_.get()) |
ran_main_loop = parts_->MainMessageLoopRun(&result_code_); |
@@ -417,6 +413,11 @@ |
MainMessageLoopRun(); |
TRACE_EVENT_END_ETW("BrowserMain:MESSAGE_LOOP", 0, ""); |
+ |
+ if (completed_main_message_loop) |
+ *completed_main_message_loop = true; |
+ |
+ ShutdownThreadsAndCleanUp(); |
} |
void BrowserMainLoop::ShutdownThreadsAndCleanUp() { |