Index: content/browser/renderer_host/render_process_host_impl.cc |
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc |
index f22d6df4949af4798d94ae9301890f913e78a7bc..dc5b4de87bfcbb2d1e55ccd73388ecf8f5bb5b79 100644 |
--- a/content/browser/renderer_host/render_process_host_impl.cc |
+++ b/content/browser/renderer_host/render_process_host_impl.cc |
@@ -161,9 +161,7 @@ |
#endif |
#if defined(USE_MOJO) |
-#include "content/common/mojo/mojo_channel_init.h" |
-#include "content/common/mojo/mojo_messages.h" |
-#include "mojo/embedder/platform_channel_pair.h" |
+#include "content/browser/renderer_host/render_process_host_mojo_impl.h" |
#endif |
extern bool g_exited_main_message_loop; |
@@ -331,17 +329,6 @@ class RendererSandboxedProcessLauncherDelegate |
#endif // OS_POSIX |
}; |
-#if defined(USE_MOJO) |
-base::PlatformFile PlatformFileFromScopedPlatformHandle( |
- mojo::embedder::ScopedPlatformHandle handle) { |
-#if defined(OS_POSIX) |
- return handle.release().fd; |
-#elif defined(OS_WIN) |
- return handle.release().handle; |
-#endif |
-} |
-#endif |
- |
} // namespace |
RendererMainThreadFactoryFunction g_renderer_main_thread_factory = NULL; |
@@ -1942,6 +1929,10 @@ void RenderProcessHostImpl::ProcessDied(bool already_dead) { |
ClearTransportDIBCache(); |
+#if defined(USE_MOJO) |
+ render_process_host_mojo_.reset(); |
+#endif |
+ |
// It's possible that one of the calls out to the observers might have caused |
// this object to be no longer needed. |
if (delayed_cleanup_needed_) |
@@ -2084,6 +2075,11 @@ void RenderProcessHostImpl::OnProcessLaunched() { |
if (WebRTCInternals::GetInstance()->aec_dump_enabled()) |
EnableAecDump(WebRTCInternals::GetInstance()->aec_dump_file_path()); |
#endif |
+ |
+#if defined(USE_MOJO) |
+ if (render_process_host_mojo_.get()) |
+ render_process_host_mojo_->OnProcessLaunched(); |
+#endif |
} |
scoped_refptr<AudioRendererHost> |
@@ -2158,24 +2154,12 @@ void RenderProcessHostImpl::DecrementWorkerRefCount() { |
} |
#if defined(USE_MOJO) |
-void RenderProcessHostImpl::CreateMojoChannel() { |
- if (mojo_channel_init_.get()) |
- return; |
- |
- mojo::embedder::PlatformChannelPair channel_pair; |
- mojo_channel_init_.reset(new MojoChannelInit); |
- mojo_channel_init_->Init( |
- PlatformFileFromScopedPlatformHandle(channel_pair.PassServerHandle()), |
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO)); |
- if (mojo_channel_init_->is_handle_valid()) { |
- base::ProcessHandle process_handle = run_renderer_in_process() ? |
- base::Process::Current().handle() : |
- child_process_launcher_->GetHandle(); |
- base::PlatformFile client_file = |
- PlatformFileFromScopedPlatformHandle(channel_pair.PassClientHandle()); |
- Send(new MojoMsg_ChannelCreated( |
- IPC::GetFileHandleForProcess(client_file, process_handle, true))); |
- } |
+void RenderProcessHostImpl::SetWebUIHandle( |
+int32 view_routing_id, |
+mojo::ScopedMessagePipeHandle handle) { |
+ if (!render_process_host_mojo_) |
+ render_process_host_mojo_.reset(new RenderProcessHostMojoImpl(this)); |
+ render_process_host_mojo_->SetWebUIHandle(view_routing_id, handle.Pass()); |
} |
#endif |