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 @@
#include "chrome/common/media_router/mojom/media_router.mojom.h"
#include "chrome/common/net_benchmarking.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 "components/autofill/content/common/mojom/autofill_driver.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() {
autofill::mojom::AutofillDriver,
autofill::mojom::PasswordManagerDriver,
chrome::mojom::OfflinePageAutoFetcher,
chrome::mojom::PrerenderCanceler,
#if defined(OS_CHROMEOS)
chromeos_camera::mojom::CameraAppHelper,
chromeos::crostini_installer::mojom::PageHandlerFactory,
......
......@@ -12,8 +12,10 @@
#include "chrome/browser/accessibility/accessibility_labels_service_factory.h"
#include "chrome/browser/content_settings/content_settings_manager_impl.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/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/common/mojom/distillability_service.mojom.h"
#include "content/public/browser/browser_context.h"
......@@ -72,7 +74,7 @@ void BindUnhandledTapWebContentsObserver(
// Forward image Annotator requests to the profile's AccessibilityLabelsService.
void BindImageAnnotator(
content::RenderFrameHost* const frame_host,
content::RenderFrameHost* frame_host,
mojo::PendingReceiver<image_annotation::mojom::Annotator> receiver) {
AccessibilityLabelsServiceFactory::GetForProfile(
Profile::FromBrowserContext(
......@@ -92,6 +94,16 @@ void BindDistillabilityService(
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)
template <typename Interface>
void ForwardToJavaWebContents(content::RenderFrameHost* frame_host,
......@@ -142,6 +154,9 @@ void PopulateChromeFrameBinders(
map->Add<dom_distiller::mojom::DistillabilityService>(
base::BindRepeating(&BindDistillabilityService));
map->Add<mojom::PrerenderCanceler>(
base::BindRepeating(&BindPrerenderCanceler));
#if defined(OS_ANDROID)
map->Add<blink::mojom::InstalledAppProvider>(base::BindRepeating(
&ForwardToJavaFrame<blink::mojom::InstalledAppProvider>));
......
......@@ -206,8 +206,6 @@ PrerenderContents::PrerenderContents(
}
DCHECK(prerender_manager);
registry_.AddInterface(base::Bind(
&PrerenderContents::OnPrerenderCancelerReceiver, base::Unretained(this)));
}
bool PrerenderContents::Init() {
......@@ -510,13 +508,6 @@ void PrerenderContents::RenderProcessGone(base::TerminationStatus status) {
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(
content::RenderFrameHost* render_frame_host) {
// When a new RenderFrame is created for a prerendering WebContents, tell the
......
......@@ -28,7 +28,6 @@
#include "content/public/common/referrer.h"
#include "mojo/public/cpp/bindings/pending_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 "url/origin.h"
......@@ -184,10 +183,6 @@ class PrerenderContents : public content::NotificationObserver,
content::NavigationHandle* navigation_handle) 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
void Observe(int type,
......@@ -238,6 +233,9 @@ class PrerenderContents : public content::NotificationObserver,
// Running byte count. Increased when each resource completes loading.
int64_t network_bytes() { return network_bytes_; }
void OnPrerenderCancelerReceiver(
mojo::PendingReceiver<chrome::mojom::PrerenderCanceler> receiver);
protected:
PrerenderContents(PrerenderManager* prerender_manager,
Profile* profile,
......@@ -299,9 +297,6 @@ class PrerenderContents : public content::NotificationObserver,
void CancelPrerenderForUnsupportedScheme(const GURL& url) override;
void CancelPrerenderForSyncDeferredRedirect() override;
void OnPrerenderCancelerReceiver(
mojo::PendingReceiver<chrome::mojom::PrerenderCanceler> receiver);
mojo::Receiver<chrome::mojom::PrerenderCanceler> prerender_canceler_receiver_{
this};
......@@ -364,8 +359,6 @@ class PrerenderContents : public content::NotificationObserver,
// transferred over the network for resources. Updated with AddNetworkBytes.
int64_t network_bytes_;
service_manager::BinderRegistry registry_;
base::WeakPtrFactory<PrerenderContents> weak_factory_{this};
DISALLOW_COPY_AND_ASSIGN(PrerenderContents);
......
......@@ -15,7 +15,7 @@
#include "content/public/renderer/render_frame.h"
#include "extensions/buildflags/buildflags.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_element.h"
#include "third_party/blink/public/web/web_local_frame.h"
......@@ -38,7 +38,7 @@ bool ChromePrintRenderFrameHelperDelegate::CancelPrerender(
return false;
mojo::Remote<chrome::mojom::PrerenderCanceler> canceler;
render_frame->GetRemoteInterfaces()->GetInterface(
render_frame->GetBrowserInterfaceBroker()->GetInterface(
canceler.BindNewPipeAndPassReceiver());
canceler->CancelPrerenderForPrinting();
return true;
......
......@@ -28,7 +28,7 @@
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_thread.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 "url/gurl.h"
......@@ -55,7 +55,7 @@ chrome::mojom::PrerenderCanceler* GetPrerenderCanceller(int render_frame_id) {
return nullptr;
auto* canceler = new mojo::Remote<chrome::mojom::PrerenderCanceler>;
render_frame->GetRemoteInterfaces()->GetInterface(
render_frame->GetBrowserInterfaceBroker()->GetInterface(
canceler->BindNewPipeAndPassReceiver());
base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, canceler);
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