diff --git a/shell/browser/electron_browser_client.cc b/shell/browser/electron_browser_client.cc index 6f2a2f9a8fc19..dfc0043bd25ae 100644 --- a/shell/browser/electron_browser_client.cc +++ b/shell/browser/electron_browser_client.cc @@ -1450,6 +1450,12 @@ bool ElectronBrowserClient::PreSpawnChild(sandbox::TargetPolicy* policy, } #endif // defined(OS_WIN) +void BindElectronBrowser( + mojo::PendingAssociatedReceiver receiver, + content::RenderFrameHost* frame_host) { + ElectronBrowserHandlerImpl::Create(frame_host, std::move(receiver)); +} + bool ElectronBrowserClient::BindAssociatedReceiverFromFrame( content::RenderFrameHost* render_frame_host, const std::string& interface_name, @@ -1461,6 +1467,13 @@ bool ElectronBrowserClient::BindAssociatedReceiverFromFrame( render_frame_host); return true; } + if (interface_name == electron::mojom::ElectronBrowser::Name_) { + BindElectronBrowser( + mojo::PendingAssociatedReceiver( + std::move(*handle)), + render_frame_host); + return true; + } #if BUILDFLAG(ENABLE_PRINTING) if (interface_name == printing::mojom::PrintManagerHost::Name_) { mojo::PendingAssociatedReceiver receiver( @@ -1522,12 +1535,6 @@ void ElectronBrowserClient::BindHostReceiverForRenderer( #endif } -void BindElectronBrowser( - content::RenderFrameHost* frame_host, - mojo::PendingReceiver receiver) { - ElectronBrowserHandlerImpl::Create(frame_host, std::move(receiver)); -} - #if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS) void BindMimeHandlerService( content::RenderFrameHost* frame_host, @@ -1576,8 +1583,6 @@ void ElectronBrowserClient::RegisterBrowserInterfaceBindersForFrame( base::BindRepeating(&BindNetworkHintsHandler)); map->Add( base::BindRepeating(&badging::BadgeManager::BindFrameReceiver)); - map->Add( - base::BindRepeating(&BindElectronBrowser)); map->Add(base::BindRepeating( &content::KeyboardLockServiceImpl::CreateMojoService)); #if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS) diff --git a/shell/browser/electron_browser_handler_impl.cc b/shell/browser/electron_browser_handler_impl.cc index 665d2b2897b3c..e66968b0cb132 100644 --- a/shell/browser/electron_browser_handler_impl.cc +++ b/shell/browser/electron_browser_handler_impl.cc @@ -15,7 +15,7 @@ namespace electron { ElectronBrowserHandlerImpl::ElectronBrowserHandlerImpl( content::RenderFrameHost* frame_host, - mojo::PendingReceiver receiver) + mojo::PendingAssociatedReceiver receiver) : render_process_id_(frame_host->GetProcess()->GetID()), render_frame_id_(frame_host->GetRoutingID()) { content::WebContents* web_contents = @@ -135,7 +135,7 @@ content::RenderFrameHost* ElectronBrowserHandlerImpl::GetRenderFrameHost() { // static void ElectronBrowserHandlerImpl::Create( content::RenderFrameHost* frame_host, - mojo::PendingReceiver receiver) { + mojo::PendingAssociatedReceiver receiver) { new ElectronBrowserHandlerImpl(frame_host, std::move(receiver)); } } // namespace electron diff --git a/shell/browser/electron_browser_handler_impl.h b/shell/browser/electron_browser_handler_impl.h index f37cd56b7cd81..fea3f11907d1d 100644 --- a/shell/browser/electron_browser_handler_impl.h +++ b/shell/browser/electron_browser_handler_impl.h @@ -23,10 +23,11 @@ class ElectronBrowserHandlerImpl : public mojom::ElectronBrowser, public: explicit ElectronBrowserHandlerImpl( content::RenderFrameHost* render_frame_host, - mojo::PendingReceiver receiver); + mojo::PendingAssociatedReceiver receiver); - static void Create(content::RenderFrameHost* frame_host, - mojo::PendingReceiver receiver); + static void Create( + content::RenderFrameHost* frame_host, + mojo::PendingAssociatedReceiver receiver); // disable copy ElectronBrowserHandlerImpl(const ElectronBrowserHandlerImpl&) = delete; @@ -75,7 +76,7 @@ class ElectronBrowserHandlerImpl : public mojom::ElectronBrowser, const int render_process_id_; const int render_frame_id_; - mojo::Receiver receiver_{this}; + mojo::AssociatedReceiver receiver_{this}; base::WeakPtrFactory weak_factory_{this}; }; diff --git a/shell/renderer/api/electron_api_ipc_renderer.cc b/shell/renderer/api/electron_api_ipc_renderer.cc index 74bf0e1dccc05..6b4f2698a968a 100644 --- a/shell/renderer/api/electron_api_ipc_renderer.cc +++ b/shell/renderer/api/electron_api_ipc_renderer.cc @@ -22,7 +22,7 @@ #include "shell/common/node_bindings.h" #include "shell/common/node_includes.h" #include "shell/common/v8_value_serializer.h" -#include "third_party/blink/public/common/browser_interface_broker_proxy.h" +#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" #include "third_party/blink/public/web/web_local_frame.h" #include "third_party/blink/public/web/web_message_port_converter.h" @@ -59,8 +59,8 @@ class IPCRenderer : public gin::Wrappable, v8::Global(isolate, isolate->GetCurrentContext()); weak_context_.SetWeak(); - render_frame->GetBrowserInterfaceBroker()->GetInterface( - electron_browser_remote_.BindNewPipeAndPassReceiver()); + render_frame->GetRemoteAssociatedInterfaces()->GetInterface( + &electron_browser_remote_); } void OnDestruct() override { electron_browser_remote_.reset(); } @@ -223,7 +223,8 @@ class IPCRenderer : public gin::Wrappable, } v8::Global weak_context_; - mojo::Remote electron_browser_remote_; + mojo::AssociatedRemote + electron_browser_remote_; }; gin::WrapperInfo IPCRenderer::kWrapperInfo = {gin::kEmbedderNativeGin}; diff --git a/shell/renderer/api/electron_api_web_frame.cc b/shell/renderer/api/electron_api_web_frame.cc index 14c0a7ac08276..25d2b5433b680 100644 --- a/shell/renderer/api/electron_api_web_frame.cc +++ b/shell/renderer/api/electron_api_web_frame.cc @@ -34,7 +34,7 @@ #include "shell/renderer/api/electron_api_context_bridge.h" #include "shell/renderer/api/electron_api_spell_check_client.h" #include "shell/renderer/renderer_client_base.h" -#include "third_party/blink/public/common/browser_interface_broker_proxy.h" +#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" #include "third_party/blink/public/common/page/page_zoom.h" #include "third_party/blink/public/common/web_cache/web_cache_resource_type_stats.h" #include "third_party/blink/public/common/web_preferences/web_preferences.h" @@ -453,9 +453,9 @@ class WebFrameRenderer : public gin::Wrappable, if (!MaybeGetRenderFrame(isolate, "setZoomLevel", &render_frame)) return; - mojo::Remote browser_remote; - render_frame->GetBrowserInterfaceBroker()->GetInterface( - browser_remote.BindNewPipeAndPassReceiver()); + mojo::AssociatedRemote browser_remote; + render_frame->GetRemoteAssociatedInterfaces()->GetInterface( + &browser_remote); browser_remote->SetTemporaryZoomLevel(level); } @@ -465,9 +465,9 @@ class WebFrameRenderer : public gin::Wrappable, if (!MaybeGetRenderFrame(isolate, "getZoomLevel", &render_frame)) return result; - mojo::Remote browser_remote; - render_frame->GetBrowserInterfaceBroker()->GetInterface( - browser_remote.BindNewPipeAndPassReceiver()); + mojo::AssociatedRemote browser_remote; + render_frame->GetRemoteAssociatedInterfaces()->GetInterface( + &browser_remote); browser_remote->DoGetZoomLevel(&result); return result; } diff --git a/shell/renderer/electron_render_frame_observer.cc b/shell/renderer/electron_render_frame_observer.cc index 4947ac06f6559..ba1a122868c64 100644 --- a/shell/renderer/electron_render_frame_observer.cc +++ b/shell/renderer/electron_render_frame_observer.cc @@ -22,7 +22,7 @@ #include "shell/common/options_switches.h" #include "shell/common/world_ids.h" #include "shell/renderer/renderer_client_base.h" -#include "third_party/blink/public/common/browser_interface_broker_proxy.h" +#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" #include "third_party/blink/public/common/web_preferences/web_preferences.h" #include "third_party/blink/public/platform/web_isolated_world_info.h" #include "third_party/blink/public/web/blink.h" @@ -149,9 +149,8 @@ void ElectronRenderFrameObserver::DraggableRegionsChanged() { regions.push_back(std::move(region)); } - mojo::Remote browser_remote; - render_frame_->GetBrowserInterfaceBroker()->GetInterface( - browser_remote.BindNewPipeAndPassReceiver()); + mojo::AssociatedRemote browser_remote; + render_frame_->GetRemoteAssociatedInterfaces()->GetInterface(&browser_remote); browser_remote->UpdateDraggableRegions(std::move(regions)); } @@ -169,9 +168,9 @@ void ElectronRenderFrameObserver::OnDestruct() { void ElectronRenderFrameObserver::DidMeaningfulLayout( blink::WebMeaningfulLayout layout_type) { if (layout_type == blink::WebMeaningfulLayout::kVisuallyNonEmpty) { - mojo::Remote browser_remote; - render_frame_->GetBrowserInterfaceBroker()->GetInterface( - browser_remote.BindNewPipeAndPassReceiver()); + mojo::AssociatedRemote browser_remote; + render_frame_->GetRemoteAssociatedInterfaces()->GetInterface( + &browser_remote); browser_remote->OnFirstNonEmptyLayout(); } }