diff options
Diffstat (limited to 'content/browser/browser_main_loop.cc')
-rw-r--r-- | content/browser/browser_main_loop.cc | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc index 6a9e38c..563c310 100644 --- a/content/browser/browser_main_loop.cc +++ b/content/browser/browser_main_loop.cc @@ -294,9 +294,7 @@ void BrowserMainLoop::MainMessageLoopStart() { // 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(); @@ -323,7 +321,8 @@ void BrowserMainLoop::MainMessageLoopStart() { parts_->PostMainMessageLoopStart(); } -void BrowserMainLoop::CreateThreads() { +void BrowserMainLoop::RunMainMessageLoopParts( + bool* completed_main_message_loop) { if (parts_.get()) result_code_ = parts_->PreCreateThreads(); @@ -405,13 +404,10 @@ void BrowserMainLoop::CreateThreads() { 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()) @@ -421,6 +417,11 @@ void BrowserMainLoop::RunMainMessageLoopParts() { MainMessageLoopRun(); TRACE_EVENT_END_ETW("BrowserMain:MESSAGE_LOOP", 0, ""); + + if (completed_main_message_loop) + *completed_main_message_loop = true; + + ShutdownThreadsAndCleanUp(); } void BrowserMainLoop::ShutdownThreadsAndCleanUp() { |