| Index: content/browser/frame_host/render_frame_host_impl.cc
|
| diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
|
| index 47c7660a80a3e962a61b5f7a8d5b5311177b4c45..66f50c8b96add2620f5c375c2cc5305fedd940bb 100644
|
| --- a/content/browser/frame_host/render_frame_host_impl.cc
|
| +++ b/content/browser/frame_host/render_frame_host_impl.cc
|
| @@ -81,6 +81,7 @@
|
| #include "content/public/common/url_constants.h"
|
| #include "content/public/common/url_utils.h"
|
| #include "device/vibration/vibration_manager_impl.h"
|
| +#include "services/shell/public/cpp/interface_provider.h"
|
| #include "ui/accessibility/ax_tree.h"
|
| #include "ui/accessibility/ax_tree_update.h"
|
| #include "ui/gfx/geometry/quad_f.h"
|
| @@ -471,8 +472,12 @@ RenderViewHost* RenderFrameHostImpl::GetRenderViewHost() {
|
| return render_view_host_;
|
| }
|
|
|
| -ServiceRegistry* RenderFrameHostImpl::GetServiceRegistry() {
|
| - return service_registry_.get();
|
| +shell::InterfaceRegistry* RenderFrameHostImpl::GetInterfaceRegistry() {
|
| + return interface_registry_.get();
|
| +}
|
| +
|
| +shell::InterfaceProvider* RenderFrameHostImpl::GetRemoteInterfaces() {
|
| + return remote_interfaces_.get();
|
| }
|
|
|
| blink::WebPageVisibilityState RenderFrameHostImpl::GetVisibilityState() {
|
| @@ -1992,7 +1997,7 @@ void RenderFrameHostImpl::OnHidePopup() {
|
| }
|
| #endif
|
|
|
| -void RenderFrameHostImpl::RegisterMojoServices() {
|
| +void RenderFrameHostImpl::RegisterMojoInterfaces() {
|
| GeolocationServiceContext* geolocation_service_context =
|
| delegate_ ? delegate_->GetGeolocationServiceContext() : NULL;
|
| if (geolocation_service_context) {
|
| @@ -2005,7 +2010,7 @@ void RenderFrameHostImpl::RegisterMojoServices() {
|
| // latter is triggered by receiving a message that the pipe was closed from
|
| // the renderer side. Hence, supply the reference to this object as a weak
|
| // pointer.
|
| - GetServiceRegistry()->AddService(
|
| + GetInterfaceRegistry()->AddInterface(
|
| base::Bind(&GeolocationServiceContext::CreateService,
|
| base::Unretained(geolocation_service_context),
|
| base::Bind(&RenderFrameHostImpl::DidUseGeolocationPermission,
|
| @@ -2018,7 +2023,7 @@ void RenderFrameHostImpl::RegisterMojoServices() {
|
| // WakeLockServiceContext is owned by WebContentsImpl so it will outlive
|
| // this RenderFrameHostImpl, hence a raw pointer can be bound to service
|
| // factory callback.
|
| - GetServiceRegistry()->AddService<blink::mojom::WakeLockService>(
|
| + GetInterfaceRegistry()->AddInterface<blink::mojom::WakeLockService>(
|
| base::Bind(&WakeLockServiceContext::CreateService,
|
| base::Unretained(wake_lock_service_context),
|
| GetProcess()->GetID(), GetRoutingID()));
|
| @@ -2027,15 +2032,15 @@ void RenderFrameHostImpl::RegisterMojoServices() {
|
| if (!permission_service_context_)
|
| permission_service_context_.reset(new PermissionServiceContext(this));
|
|
|
| - GetServiceRegistry()->AddService(
|
| + GetInterfaceRegistry()->AddInterface(
|
| base::Bind(&PermissionServiceContext::CreateService,
|
| base::Unretained(permission_service_context_.get())));
|
|
|
| - GetServiceRegistry()->AddService(base::Bind(
|
| + GetInterfaceRegistry()->AddInterface(base::Bind(
|
| &PresentationServiceImpl::CreateMojoService, base::Unretained(this)));
|
|
|
| #if !defined(OS_ANDROID)
|
| - GetServiceRegistry()->AddService(
|
| + GetInterfaceRegistry()->AddInterface(
|
| base::Bind(&device::VibrationManagerImpl::Create));
|
| #endif
|
|
|
| @@ -2046,7 +2051,7 @@ void RenderFrameHostImpl::RegisterMojoServices() {
|
| #endif
|
|
|
| if (enable_web_bluetooth) {
|
| - GetServiceRegistry()->AddService(
|
| + GetInterfaceRegistry()->AddInterface(
|
| base::Bind(&RenderFrameHostImpl::CreateWebBluetoothService,
|
| base::Unretained(this)));
|
| }
|
| @@ -2054,7 +2059,7 @@ void RenderFrameHostImpl::RegisterMojoServices() {
|
| if (!frame_mojo_shell_)
|
| frame_mojo_shell_.reset(new FrameMojoShell(this));
|
|
|
| - GetServiceRegistry()->AddService<shell::mojom::Connector>(base::Bind(
|
| + GetInterfaceRegistry()->AddInterface<shell::mojom::Connector>(base::Bind(
|
| &FrameMojoShell::BindRequest, base::Unretained(frame_mojo_shell_.get())));
|
|
|
| #if defined(ENABLE_WEBVR)
|
| @@ -2062,13 +2067,13 @@ void RenderFrameHostImpl::RegisterMojoServices() {
|
| *base::CommandLine::ForCurrentProcess();
|
|
|
| if (browser_command_line.HasSwitch(switches::kEnableWebVR)) {
|
| - GetServiceRegistry()->AddService<device::VRService>(
|
| + GetInterfaceRegistry()->AddInterface<device::VRService>(
|
| base::Bind(&device::VRDeviceManager::BindRequest));
|
| }
|
| #endif
|
|
|
| - GetContentClient()->browser()->RegisterRenderFrameMojoServices(
|
| - GetServiceRegistry(), this);
|
| + GetContentClient()->browser()->RegisterRenderFrameMojoInterfaces(
|
| + GetInterfaceRegistry(), this);
|
| }
|
|
|
| void RenderFrameHostImpl::ResetWaitingState() {
|
| @@ -2384,25 +2389,33 @@ void RenderFrameHostImpl::FailedNavigation(
|
| }
|
|
|
| void RenderFrameHostImpl::SetUpMojoIfNeeded() {
|
| - if (service_registry_.get())
|
| + if (interface_registry_.get())
|
| return;
|
|
|
| - service_registry_.reset(new ServiceRegistryImpl());
|
| + interface_registry_.reset(new shell::InterfaceRegistry(nullptr));
|
| if (!GetProcess()->GetServiceRegistry())
|
| return;
|
|
|
| - RegisterMojoServices();
|
| + RegisterMojoInterfaces();
|
| mojom::FrameFactoryPtr frame_factory;
|
| GetProcess()->GetServiceRegistry()->ConnectToRemoteService(
|
| mojo::GetProxy(&frame_factory));
|
|
|
| frame_factory->CreateFrame(routing_id_, GetProxy(&frame_),
|
| frame_host_binding_.CreateInterfacePtrAndBind());
|
| - frame_->GetInterfaceProvider(service_registry_->TakeRemoteRequest());
|
| +
|
| +
|
| + shell::mojom::InterfaceProviderPtr remote_interfaces;
|
| + shell::mojom::InterfaceProviderRequest remote_interfaces_request =
|
| + GetProxy(&remote_interfaces);
|
| + remote_interfaces_.reset(
|
| + new shell::InterfaceProvider(std::move(remote_interfaces)));
|
| + frame_->GetInterfaceProvider(std::move(remote_interfaces_request));
|
|
|
| #if defined(OS_ANDROID)
|
| service_registry_android_ =
|
| - ServiceRegistryAndroid::Create(service_registry_.get());
|
| + ServiceRegistryAndroid::Create(interface_registry_.get(),
|
| + remote_interfaces_.get());
|
| ServiceRegistrarAndroid::RegisterFrameHostServices(
|
| service_registry_android_.get());
|
| #endif
|
| @@ -2415,7 +2428,7 @@ void RenderFrameHostImpl::InvalidateMojoConnection() {
|
| service_registry_android_.reset();
|
| #endif
|
|
|
| - service_registry_.reset();
|
| + interface_registry_.reset();
|
| frame_.reset();
|
| frame_host_binding_.Close();
|
|
|
| @@ -2523,10 +2536,8 @@ void RenderFrameHostImpl::ClearAllWebUI() {
|
|
|
| const content::mojom::ImageDownloaderPtr&
|
| RenderFrameHostImpl::GetMojoImageDownloader() {
|
| - if (!mojo_image_downloader_.get() && GetServiceRegistry()) {
|
| - GetServiceRegistry()->ConnectToRemoteService(
|
| - mojo::GetProxy(&mojo_image_downloader_));
|
| - }
|
| + if (!mojo_image_downloader_.get() && GetRemoteInterfaces())
|
| + GetRemoteInterfaces()->GetInterface(&mojo_image_downloader_);
|
| return mojo_image_downloader_;
|
| }
|
|
|
| @@ -2682,7 +2693,7 @@ void RenderFrameHostImpl::FilesSelectedInChooser(
|
|
|
| void RenderFrameHostImpl::GetInterfaceProvider(
|
| shell::mojom::InterfaceProviderRequest interfaces) {
|
| - service_registry_->Bind(std::move(interfaces));
|
| + interface_registry_->Bind(std::move(interfaces));
|
| }
|
|
|
| #if defined(USE_EXTERNAL_POPUP_MENU)
|
|
|