Index: content/renderer/render_thread_impl.cc |
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc |
index f1a704e0bc0deba9d882f8f9290f505f8b116833..bf4a8b025bd02a914dbcdb1b78a9af46bab6fc5e 100644 |
--- a/content/renderer/render_thread_impl.cc |
+++ b/content/renderer/render_thread_impl.cc |
@@ -82,7 +82,6 @@ |
#include "content/renderer/media/video_capture_impl_manager.h" |
#include "content/renderer/media/video_capture_message_filter.h" |
#include "content/renderer/media/webrtc_identity_service.h" |
-#include "content/renderer/mojo/mojo_render_process_observer.h" |
#include "content/renderer/p2p/socket_dispatcher.h" |
#include "content/renderer/render_process_impl.h" |
#include "content/renderer/render_view_impl.h" |
@@ -90,6 +89,7 @@ |
#include "content/renderer/service_worker/embedded_worker_context_message_filter.h" |
#include "content/renderer/service_worker/embedded_worker_dispatcher.h" |
#include "content/renderer/shared_worker/embedded_shared_worker_stub.h" |
+#include "content/renderer/web_ui_mojo.h" |
#include "grit/content_resources.h" |
#include "ipc/ipc_channel_handle.h" |
#include "ipc/ipc_forwarding_message_filter.h" |
@@ -310,12 +310,14 @@ RenderThreadImpl* RenderThreadImpl::current() { |
// When we run plugins in process, we actually run them on the render thread, |
// which means that we need to make the render thread pump UI events. |
-RenderThreadImpl::RenderThreadImpl() { |
+RenderThreadImpl::RenderThreadImpl() |
+ : mojo_application_(this) { |
Init(); |
} |
RenderThreadImpl::RenderThreadImpl(const std::string& channel_name) |
- : ChildThread(channel_name) { |
+ : ChildThread(channel_name), |
+ mojo_application_(this) { |
Init(); |
} |
@@ -394,9 +396,6 @@ void RenderThreadImpl::Init() { |
AddFilter((new EmbeddedWorkerContextMessageFilter())->GetFilter()); |
- // MojoRenderProcessObserver deletes itself as necessary. |
- new MojoRenderProcessObserver(this); |
- |
GetContentClient()->renderer()->RenderThreadStarted(); |
InitSkiaEventTracer(); |
@@ -1202,6 +1201,28 @@ scoped_ptr<gfx::GpuMemoryBuffer> RenderThreadImpl::AllocateGpuMemoryBuffer( |
internalformat).PassAs<gfx::GpuMemoryBuffer>(); |
} |
+void RenderThreadImpl::AcceptConnection( |
+ const mojo::String& url, |
+ mojo::ScopedMessagePipeHandle message_pipe) { |
+ // TODO(darin): Figure out what URL to use for the RenderProcess service. |
+ if (url.To<std::string>() == "content:render_process") { |
+ render_process_host_.reset( |
+ ScopedIRenderProcessHostHandle::From(message_pipe.Pass()), this); |
+ } |
+} |
+ |
+void RenderThreadImpl::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()); |
+} |
+ |
void RenderThreadImpl::DoNotSuspendWebKitSharedTimer() { |
suspend_webkit_shared_timer_ = false; |
} |
@@ -1226,7 +1247,8 @@ bool RenderThreadImpl::OnControlMessageReceived(const IPC::Message& msg) { |
} |
// Some messages are handled by delegates. |
- if (appcache_dispatcher_->OnMessageReceived(msg) || |
+ if (mojo_application_.OnMessageReceived(msg) || |
+ appcache_dispatcher_->OnMessageReceived(msg) || |
dom_storage_dispatcher_->OnMessageReceived(msg) || |
embedded_worker_dispatcher_->OnMessageReceived(msg)) { |
return true; |