Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index 1866bb8b33105056a6b1fbb2698d9010aef8f515..892c10043a653306eceb8260d1310f18faebab01 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -30,6 +30,7 @@ |
#include "content/common/clipboard_messages.h" |
#include "content/common/frame_messages.h" |
#include "content/common/input_messages.h" |
+#include "content/common/render_frame_setup.mojom.h" |
#include "content/common/service_worker/service_worker_types.h" |
#include "content/common/socket_stream_handle_data.h" |
#include "content/common/swapped_out_messages.h" |
@@ -435,6 +436,8 @@ RenderFrameImpl::RenderFrameImpl(RenderViewImpl* render_view, int routing_id) |
#if defined(ENABLE_NOTIFICATIONS) |
notification_provider_ = new NotificationProvider(this); |
#endif |
+ |
+ InitializeServiceRegistry(); |
} |
RenderFrameImpl::~RenderFrameImpl() { |
@@ -1344,6 +1347,10 @@ void RenderFrameImpl::ExecuteJavaScript(const base::string16& javascript) { |
OnJavaScriptExecuteRequest(javascript, 0, false); |
} |
+ServiceRegistry* RenderFrameImpl::GetServiceRegistry() { |
+ return &service_registry_; |
+} |
+ |
void RenderFrameImpl::OnChildFrameProcessGone() { |
if (compositing_helper_) |
compositing_helper_->ChildFrameGone(); |
@@ -3578,4 +3585,16 @@ RendererCdmManager* RenderFrameImpl::GetCdmManager() { |
#endif // defined(OS_ANDROID) |
+void RenderFrameImpl::InitializeServiceRegistry() { |
+ if (!RenderThread::Get()->GetServiceRegistry()) |
+ return; |
+ |
+ RenderFrameSetupPtr setup; |
+ RenderThread::Get()->GetServiceRegistry()->GetInterface(&setup); |
+ mojo::IInterfaceProviderPtr interface_provider; |
+ setup->ConnectToInterfaceProvider(routing_id_, |
+ mojo::Get(&interface_provider)); |
+ service_registry_.Bind(interface_provider.PassMessagePipe()); |
+} |
+ |
} // namespace content |