Index: content/renderer/mojo/mojo_render_process_observer.cc |
diff --git a/content/renderer/mojo/mojo_render_process_observer.cc b/content/renderer/mojo/mojo_render_process_observer.cc |
index f72e3989b9d4817010e7abbc072b1a01027cd274..7f01d3f8a691f761b13b648642e7334b4b0adf40 100644 |
--- a/content/renderer/mojo/mojo_render_process_observer.cc |
+++ b/content/renderer/mojo/mojo_render_process_observer.cc |
@@ -9,6 +9,8 @@ |
#include "content/common/mojo/mojo_channel_init.h" |
#include "content/common/mojo/mojo_messages.h" |
#include "content/public/renderer/render_thread.h" |
+#include "content/public/renderer/render_view.h" |
+#include "content/renderer/web_ui_mojo.h" |
namespace content { |
@@ -46,6 +48,25 @@ void MojoRenderProcessObserver::OnChannelCreated( |
DCHECK(!channel_init_.get()); |
channel_init_.reset(new MojoChannelInit); |
channel_init_->Init(handle, ChildProcess::current()->io_message_loop_proxy()); |
+ if (!channel_init_->is_handle_valid()) |
+ return; |
+ |
+ ScopedRenderProcessHostMojoHandle render_process_host_handle( |
+ RenderProcessHostMojoHandle( |
+ channel_init_->bootstrap_message_pipe().release().value())); |
+ render_process_host_mojo_.reset(render_process_host_handle.Pass(), this); |
+} |
+ |
+void MojoRenderProcessObserver::SetWebUIHandle( |
+ int32 view_routing_id, |
+ mojo::ScopedMessagePipeHandle web_ui_handle) { |
+ RenderView* render_view = RenderView::FromRoutingID(view_routing_id); |
+ if (!render_view) |
+ return; |
+ WebUIMojo* web_ui_mojo = WebUIMojo::Get(render_view); |
+ if (!web_ui_mojo) |
+ return; |
+ web_ui_mojo->SetBrowserHandle(web_ui_handle.Pass()); |
} |
} // namespace content |