Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1134)

Unified Diff: content/browser/browser_main_loop.cc

Issue 2215353004: content: Let embedders know when MojoShellConnection is initialized. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/browser_main_loop.h ('k') | content/public/browser/browser_main_parts.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/browser_main_loop.cc
diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc
index d7a1f3958a4ac9896d8f6c0289a611d7b7a2bd97..25eccd4cdffc2d98e7e5a4fe46a013a8378650b6 100644
--- a/content/browser/browser_main_loop.cc
+++ b/content/browser/browser_main_loop.cc
@@ -277,16 +277,6 @@ static void SetUpGLibLogHandler() {
}
#endif // defined(USE_GLIB)
-#if defined(USE_AURA)
-void WaitForMojoShellInitialize() {
- // TODO(rockot): Remove this. http://crbug.com/594852.
- base::RunLoop wait_loop;
- MojoShellConnection::GetForProcess()->SetInitializeHandler(
- wait_loop.QuitClosure());
- wait_loop.Run();
-}
-#endif // defined(USE_AURA)
-
void OnStoppedStartupTracing(const base::FilePath& trace_file) {
VLOG(0) << "Completed startup tracing to " << trace_file.value();
}
@@ -1179,37 +1169,18 @@ void BrowserMainLoop::InitializeMainThread() {
int BrowserMainLoop::BrowserThreadsStarted() {
TRACE_EVENT0("startup", "BrowserMainLoop::BrowserThreadsStarted");
- // Bring up Mojo IPC and shell as early as possible.
-
- if (!parsed_command_line_.HasSwitch(switches::kSingleProcess)) {
- // Disallow mojo sync calls in the browser process. Note that we allow sync
- // calls in single-process mode since renderer IPCs are made from a browser
- // thread.
- bool sync_call_allowed = false;
- MojoResult result = mojo::edk::SetProperty(
- MOJO_PROPERTY_TYPE_SYNC_CALL_ALLOWED, &sync_call_allowed);
- DCHECK_EQ(MOJO_RESULT_OK, result);
- }
-
- mojo_ipc_support_.reset(new mojo::edk::ScopedIPCSupport(
- BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::IO)
- ->task_runner()));
+ // Bring up Mojo IPC and shell as early as possible. Initializaing mojo
+ // requires the IO thread to have been initialized first. So this cannot
+ // happen any earlier than this.
+ InitializeMojo();
- mojo_shell_context_.reset(new MojoShellContext);
#if defined(USE_AURA)
- // TODO(rockot): Remove the blocking wait for init.
- // http://crbug.com/594852.
- if (shell::ShellIsRemote() && MojoShellConnection::GetForProcess()) {
+ if (shell::ShellIsRemote()) {
base::CommandLine::ForCurrentProcess()->AppendSwitch(
switches::kIsRunningInMash);
- WaitForMojoShellInitialize();
}
#endif
-#if defined(OS_MACOSX)
- mojo::edk::SetMachPortProvider(MachBroker::GetInstance());
-#endif // defined(OS_MACOSX)
-
indexed_db_thread_.reset(new base::Thread("IndexedDB"));
indexed_db_thread_->Start();
@@ -1424,6 +1395,29 @@ void BrowserMainLoop::MainMessageLoopRun() {
#endif
}
+void BrowserMainLoop::InitializeMojo() {
+ if (!parsed_command_line_.HasSwitch(switches::kSingleProcess)) {
+ // Disallow mojo sync calls in the browser process. Note that we allow sync
+ // calls in single-process mode since renderer IPCs are made from a browser
+ // thread.
+ bool sync_call_allowed = false;
+ MojoResult result = mojo::edk::SetProperty(
+ MOJO_PROPERTY_TYPE_SYNC_CALL_ALLOWED, &sync_call_allowed);
+ DCHECK_EQ(MOJO_RESULT_OK, result);
+ }
+
+ mojo_ipc_support_.reset(new mojo::edk::ScopedIPCSupport(
+ BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::IO)
+ ->task_runner()));
+
+ mojo_shell_context_.reset(new MojoShellContext);
+#if defined(OS_MACOSX)
+ mojo::edk::SetMachPortProvider(MachBroker::GetInstance());
+#endif // defined(OS_MACOSX)
+ if (parts_)
+ parts_->MojoShellConnectionStarted(MojoShellConnection::GetForProcess());
+}
+
base::FilePath BrowserMainLoop::GetStartupTraceFileName(
const base::CommandLine& command_line) const {
base::FilePath trace_file;
« no previous file with comments | « content/browser/browser_main_loop.h ('k') | content/public/browser/browser_main_parts.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698