Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index 5aed77678c39a1043d68ca080963acf06148d014..f181c72b360de64a985137eb984d6cd76c8682ec 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -70,7 +70,6 @@ |
#include "content/renderer/devtools/devtools_agent.h" |
#include "content/renderer/dom_automation_controller.h" |
#include "content/renderer/external_popup_menu.h" |
-#include "content/renderer/geolocation_dispatcher.h" |
#include "content/renderer/gpu/gpu_benchmarking_extension.h" |
#include "content/renderer/history_controller.h" |
#include "content/renderer/history_serialization.h" |
@@ -514,6 +513,24 @@ RenderFrameImpl::CreateRenderFrameImplFunction g_create_render_frame_impl = |
void OnGotContentHandlerID(uint32_t content_handler_id) {} |
+class ForwardingServiceProvider : public mojo::ServiceProvider { |
+ public: |
+ ForwardingServiceProvider(base::WeakPtr<ServiceRegistry> service_registry) |
+ : service_registry_(service_registry) {} |
+ |
+ void ConnectToService(const mojo::String& interface_name, |
+ mojo::ScopedMessagePipeHandle pipe) override { |
+ if (service_registry_) |
+ service_registry_->ConnectToRemoteService( |
+ interface_name.To<std::string>(), pipe.Pass()); |
+ } |
+ |
+ private: |
+ base::WeakPtr<ServiceRegistry> service_registry_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ForwardingServiceProvider); |
+}; |
+ |
} // namespace |
// static |
@@ -710,13 +727,14 @@ RenderFrameImpl::RenderFrameImpl(const CreateParams& params) |
#endif |
has_played_media_(false), |
devtools_agent_(nullptr), |
- geolocation_dispatcher_(NULL), |
push_messaging_dispatcher_(NULL), |
presentation_dispatcher_(NULL), |
screen_orientation_dispatcher_(NULL), |
manifest_manager_(NULL), |
accessibility_mode_(AccessibilityModeOff), |
renderer_accessibility_(NULL), |
+ service_provider_( |
+ new ForwardingServiceProvider(service_registry_.GetWeakPtr())), |
weak_factory_(this) { |
std::pair<RoutingIDFrameMap::iterator, bool> result = |
g_routing_id_frame_map.Get().insert(std::make_pair(routing_id_, this)); |
@@ -3595,12 +3613,6 @@ void RenderFrameImpl::willOpenWebSocket(blink::WebSocketHandle* handle) { |
impl->set_render_frame_id(routing_id_); |
} |
-blink::WebGeolocationClient* RenderFrameImpl::geolocationClient() { |
- if (!geolocation_dispatcher_) |
- geolocation_dispatcher_ = new GeolocationDispatcher(this); |
- return geolocation_dispatcher_; |
-} |
- |
blink::WebPresentationClient* RenderFrameImpl::presentationClient() { |
if (!presentation_dispatcher_) |
presentation_dispatcher_ = new PresentationDispatcher(this); |
@@ -3868,6 +3880,10 @@ blink::WebUSBClient* RenderFrameImpl::usbClient() { |
return usb_client_.get(); |
} |
+mojo::ServiceProvider* RenderFrameImpl::serviceProvider() { |
+ return service_provider_.get(); |
+} |
+ |
#if defined(ENABLE_WEBVR) |
blink::WebVRClient* RenderFrameImpl::webVRClient() { |
if (!vr_dispatcher_) |