Commit 29485ee7 authored by Miyoung Shin's avatar Miyoung Shin Committed by Commit Bot

Convert PrerenderCanceler client to use BrowserInterfaceBroker

This change converts PrerenderCanceler mojom interface client in
components to use BrowserInterfaceBroker.
Since PrerenderContents is a WebContentsObserver, a static helper
function is used to register its binder.

Bug: 936482
Change-Id: I9e8e72a5802dce3cb4a3b88bfdcacdea6e10bf28
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1895108
Commit-Queue: Miyoung Shin <myid.shin@igalia.com>
Reviewed-by: default avatarTarun Bansal <tbansal@chromium.org>
Reviewed-by: default avatarLei Zhang <thestig@chromium.org>
Reviewed-by: default avatarAvi Drissman <avi@chromium.org>
Reviewed-by: default avatarSam McNally <sammc@chromium.org>
Reviewed-by: default avatarOksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#713322}
parent 97ccfb8e
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include "chrome/common/media_router/mojom/media_router.mojom.h" #include "chrome/common/media_router/mojom/media_router.mojom.h"
#include "chrome/common/net_benchmarking.mojom.h" #include "chrome/common/net_benchmarking.mojom.h"
#include "chrome/common/offline_page_auto_fetcher.mojom.h" #include "chrome/common/offline_page_auto_fetcher.mojom.h"
#include "chrome/common/prerender.mojom.h"
#include "chrome/test/data/webui/web_ui_test.mojom.h" #include "chrome/test/data/webui/web_ui_test.mojom.h"
#include "components/autofill/content/common/mojom/autofill_driver.mojom.h" #include "components/autofill/content/common/mojom/autofill_driver.mojom.h"
#include "components/contextual_search/content/common/mojom/contextual_search_js_api_service.mojom.h" #include "components/contextual_search/content/common/mojom/contextual_search_js_api_service.mojom.h"
...@@ -149,7 +148,6 @@ const service_manager::Manifest& GetChromeContentBrowserOverlayManifest() { ...@@ -149,7 +148,6 @@ const service_manager::Manifest& GetChromeContentBrowserOverlayManifest() {
autofill::mojom::AutofillDriver, autofill::mojom::AutofillDriver,
autofill::mojom::PasswordManagerDriver, autofill::mojom::PasswordManagerDriver,
chrome::mojom::OfflinePageAutoFetcher, chrome::mojom::OfflinePageAutoFetcher,
chrome::mojom::PrerenderCanceler,
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
chromeos_camera::mojom::CameraAppHelper, chromeos_camera::mojom::CameraAppHelper,
chromeos::crostini_installer::mojom::PageHandlerFactory, chromeos::crostini_installer::mojom::PageHandlerFactory,
......
...@@ -12,8 +12,10 @@ ...@@ -12,8 +12,10 @@
#include "chrome/browser/accessibility/accessibility_labels_service_factory.h" #include "chrome/browser/accessibility/accessibility_labels_service_factory.h"
#include "chrome/browser/content_settings/content_settings_manager_impl.h" #include "chrome/browser/content_settings/content_settings_manager_impl.h"
#include "chrome/browser/navigation_predictor/navigation_predictor.h" #include "chrome/browser/navigation_predictor/navigation_predictor.h"
#include "chrome/browser/prerender/prerender_contents.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ssl/insecure_sensitive_input_driver_factory.h" #include "chrome/browser/ssl/insecure_sensitive_input_driver_factory.h"
#include "chrome/common/prerender.mojom.h"
#include "components/dom_distiller/content/browser/distillability_driver.h" #include "components/dom_distiller/content/browser/distillability_driver.h"
#include "components/dom_distiller/content/common/mojom/distillability_service.mojom.h" #include "components/dom_distiller/content/common/mojom/distillability_service.mojom.h"
#include "content/public/browser/browser_context.h" #include "content/public/browser/browser_context.h"
...@@ -72,7 +74,7 @@ void BindUnhandledTapWebContentsObserver( ...@@ -72,7 +74,7 @@ void BindUnhandledTapWebContentsObserver(
// Forward image Annotator requests to the profile's AccessibilityLabelsService. // Forward image Annotator requests to the profile's AccessibilityLabelsService.
void BindImageAnnotator( void BindImageAnnotator(
content::RenderFrameHost* const frame_host, content::RenderFrameHost* frame_host,
mojo::PendingReceiver<image_annotation::mojom::Annotator> receiver) { mojo::PendingReceiver<image_annotation::mojom::Annotator> receiver) {
AccessibilityLabelsServiceFactory::GetForProfile( AccessibilityLabelsServiceFactory::GetForProfile(
Profile::FromBrowserContext( Profile::FromBrowserContext(
...@@ -92,6 +94,16 @@ void BindDistillabilityService( ...@@ -92,6 +94,16 @@ void BindDistillabilityService(
driver->CreateDistillabilityService(std::move(receiver)); driver->CreateDistillabilityService(std::move(receiver));
} }
void BindPrerenderCanceler(
content::RenderFrameHost* frame_host,
mojo::PendingReceiver<mojom::PrerenderCanceler> receiver) {
auto* prerender_contents = prerender::PrerenderContents::FromWebContents(
content::WebContents::FromRenderFrameHost(frame_host));
if (!prerender_contents)
return;
prerender_contents->OnPrerenderCancelerReceiver(std::move(receiver));
}
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
template <typename Interface> template <typename Interface>
void ForwardToJavaWebContents(content::RenderFrameHost* frame_host, void ForwardToJavaWebContents(content::RenderFrameHost* frame_host,
...@@ -142,6 +154,9 @@ void PopulateChromeFrameBinders( ...@@ -142,6 +154,9 @@ void PopulateChromeFrameBinders(
map->Add<dom_distiller::mojom::DistillabilityService>( map->Add<dom_distiller::mojom::DistillabilityService>(
base::BindRepeating(&BindDistillabilityService)); base::BindRepeating(&BindDistillabilityService));
map->Add<mojom::PrerenderCanceler>(
base::BindRepeating(&BindPrerenderCanceler));
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
map->Add<blink::mojom::InstalledAppProvider>(base::BindRepeating( map->Add<blink::mojom::InstalledAppProvider>(base::BindRepeating(
&ForwardToJavaFrame<blink::mojom::InstalledAppProvider>)); &ForwardToJavaFrame<blink::mojom::InstalledAppProvider>));
......
...@@ -206,8 +206,6 @@ PrerenderContents::PrerenderContents( ...@@ -206,8 +206,6 @@ PrerenderContents::PrerenderContents(
} }
DCHECK(prerender_manager); DCHECK(prerender_manager);
registry_.AddInterface(base::Bind(
&PrerenderContents::OnPrerenderCancelerReceiver, base::Unretained(this)));
} }
bool PrerenderContents::Init() { bool PrerenderContents::Init() {
...@@ -510,13 +508,6 @@ void PrerenderContents::RenderProcessGone(base::TerminationStatus status) { ...@@ -510,13 +508,6 @@ void PrerenderContents::RenderProcessGone(base::TerminationStatus status) {
Destroy(FINAL_STATUS_RENDERER_CRASHED); Destroy(FINAL_STATUS_RENDERER_CRASHED);
} }
void PrerenderContents::OnInterfaceRequestFromFrame(
content::RenderFrameHost* render_frame_host,
const std::string& interface_name,
mojo::ScopedMessagePipeHandle* interface_pipe) {
registry_.TryBindInterface(interface_name, interface_pipe);
}
void PrerenderContents::RenderFrameCreated( void PrerenderContents::RenderFrameCreated(
content::RenderFrameHost* render_frame_host) { content::RenderFrameHost* render_frame_host) {
// When a new RenderFrame is created for a prerendering WebContents, tell the // When a new RenderFrame is created for a prerendering WebContents, tell the
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include "content/public/common/referrer.h" #include "content/public/common/referrer.h"
#include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/receiver.h"
#include "services/service_manager/public/cpp/binder_registry.h"
#include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/rect.h"
#include "url/origin.h" #include "url/origin.h"
...@@ -184,10 +183,6 @@ class PrerenderContents : public content::NotificationObserver, ...@@ -184,10 +183,6 @@ class PrerenderContents : public content::NotificationObserver,
content::NavigationHandle* navigation_handle) override; content::NavigationHandle* navigation_handle) override;
void RenderProcessGone(base::TerminationStatus status) override; void RenderProcessGone(base::TerminationStatus status) override;
void OnInterfaceRequestFromFrame(
content::RenderFrameHost* render_frame_host,
const std::string& interface_name,
mojo::ScopedMessagePipeHandle* interface_pipe) override;
// content::NotificationObserver // content::NotificationObserver
void Observe(int type, void Observe(int type,
...@@ -238,6 +233,9 @@ class PrerenderContents : public content::NotificationObserver, ...@@ -238,6 +233,9 @@ class PrerenderContents : public content::NotificationObserver,
// Running byte count. Increased when each resource completes loading. // Running byte count. Increased when each resource completes loading.
int64_t network_bytes() { return network_bytes_; } int64_t network_bytes() { return network_bytes_; }
void OnPrerenderCancelerReceiver(
mojo::PendingReceiver<chrome::mojom::PrerenderCanceler> receiver);
protected: protected:
PrerenderContents(PrerenderManager* prerender_manager, PrerenderContents(PrerenderManager* prerender_manager,
Profile* profile, Profile* profile,
...@@ -299,9 +297,6 @@ class PrerenderContents : public content::NotificationObserver, ...@@ -299,9 +297,6 @@ class PrerenderContents : public content::NotificationObserver,
void CancelPrerenderForUnsupportedScheme(const GURL& url) override; void CancelPrerenderForUnsupportedScheme(const GURL& url) override;
void CancelPrerenderForSyncDeferredRedirect() override; void CancelPrerenderForSyncDeferredRedirect() override;
void OnPrerenderCancelerReceiver(
mojo::PendingReceiver<chrome::mojom::PrerenderCanceler> receiver);
mojo::Receiver<chrome::mojom::PrerenderCanceler> prerender_canceler_receiver_{ mojo::Receiver<chrome::mojom::PrerenderCanceler> prerender_canceler_receiver_{
this}; this};
...@@ -364,8 +359,6 @@ class PrerenderContents : public content::NotificationObserver, ...@@ -364,8 +359,6 @@ class PrerenderContents : public content::NotificationObserver,
// transferred over the network for resources. Updated with AddNetworkBytes. // transferred over the network for resources. Updated with AddNetworkBytes.
int64_t network_bytes_; int64_t network_bytes_;
service_manager::BinderRegistry registry_;
base::WeakPtrFactory<PrerenderContents> weak_factory_{this}; base::WeakPtrFactory<PrerenderContents> weak_factory_{this};
DISALLOW_COPY_AND_ASSIGN(PrerenderContents); DISALLOW_COPY_AND_ASSIGN(PrerenderContents);
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include "content/public/renderer/render_frame.h" #include "content/public/renderer/render_frame.h"
#include "extensions/buildflags/buildflags.h" #include "extensions/buildflags/buildflags.h"
#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/remote.h"
#include "services/service_manager/public/cpp/interface_provider.h" #include "third_party/blink/public/common/browser_interface_broker_proxy.h"
#include "third_party/blink/public/web/web_document.h" #include "third_party/blink/public/web/web_document.h"
#include "third_party/blink/public/web/web_element.h" #include "third_party/blink/public/web/web_element.h"
#include "third_party/blink/public/web/web_local_frame.h" #include "third_party/blink/public/web/web_local_frame.h"
...@@ -38,7 +38,7 @@ bool ChromePrintRenderFrameHelperDelegate::CancelPrerender( ...@@ -38,7 +38,7 @@ bool ChromePrintRenderFrameHelperDelegate::CancelPrerender(
return false; return false;
mojo::Remote<chrome::mojom::PrerenderCanceler> canceler; mojo::Remote<chrome::mojom::PrerenderCanceler> canceler;
render_frame->GetRemoteInterfaces()->GetInterface( render_frame->GetBrowserInterfaceBroker()->GetInterface(
canceler.BindNewPipeAndPassReceiver()); canceler.BindNewPipeAndPassReceiver());
canceler->CancelPrerenderForPrinting(); canceler->CancelPrerenderForPrinting();
return true; return true;
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#include "content/public/renderer/render_frame.h" #include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_thread.h" #include "content/public/renderer/render_thread.h"
#include "content/public/renderer/render_view.h" #include "content/public/renderer/render_view.h"
#include "services/service_manager/public/cpp/interface_provider.h" #include "third_party/blink/public/common/browser_interface_broker_proxy.h"
#include "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h" #include "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h"
#include "url/gurl.h" #include "url/gurl.h"
...@@ -55,7 +55,7 @@ chrome::mojom::PrerenderCanceler* GetPrerenderCanceller(int render_frame_id) { ...@@ -55,7 +55,7 @@ chrome::mojom::PrerenderCanceler* GetPrerenderCanceller(int render_frame_id) {
return nullptr; return nullptr;
auto* canceler = new mojo::Remote<chrome::mojom::PrerenderCanceler>; auto* canceler = new mojo::Remote<chrome::mojom::PrerenderCanceler>;
render_frame->GetRemoteInterfaces()->GetInterface( render_frame->GetBrowserInterfaceBroker()->GetInterface(
canceler->BindNewPipeAndPassReceiver()); canceler->BindNewPipeAndPassReceiver());
base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, canceler); base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, canceler);
return canceler->get(); return canceler->get();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment