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

Unified Diff: content/browser/renderer_host/render_process_host_impl.cc

Issue 206923002: Adds plumbing to pass WebUI mojo::Handle from browser to renderer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add TODO and merge to trunk Created 6 years, 9 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
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

Powered by Google App Engine
This is Rietveld 408576698