Commit ddcb7d8d authored by Miyoung Shin's avatar Miyoung Shin Committed by Commit Bot

Convert PreviewsResourceLoadingHintsReceiver to new Mojo types

This CL converts PreviewsResourceLoadingHintsReceiver{AssociatedPtr,
Ptr, AssociatedRequest, Request} in content to the new Mojo types.

Bug: 955171, 978694
Change-Id: I9a2634259b9a737d775922bd0c8202914ea171e6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1783686
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: default avatarOksana Zhuravlova <oksamyt@chromium.org>
Reviewed-by: default avatarDave Tapuska <dtapuska@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarDoug Arnett <dougarnett@chromium.org>
Cr-Commit-Position: refs/heads/master@{#693892}
parent ff458d8a
......@@ -20,6 +20,7 @@
#include "content/public/browser/navigation_handle.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/metrics/public/cpp/ukm_source_id.h"
#include "services/service_manager/public/cpp/interface_provider.h"
#include "third_party/blink/public/common/features.h"
......@@ -108,14 +109,15 @@ void ResourceLoadingHintsWebContentsObserver::SendResourceLoadingHints(
bool is_redirect = previews_user_data->is_redirect();
blink::mojom::PreviewsResourceLoadingHintsReceiverPtr hints_receiver_ptr;
mojo::Remote<blink::mojom::PreviewsResourceLoadingHintsReceiver>
hints_receiver;
if (!base::FeatureList::IsEnabled(
blink::features::kSendPreviewsLoadingHintsBeforeCommit)) {
// Hints should be sent only after the renderer frame has committed.
DCHECK(navigation_handle->HasCommitted());
web_contents()->GetMainFrame()->GetRemoteInterfaces()->GetInterface(
&hints_receiver_ptr);
hints_receiver.BindNewPipeAndPassReceiver());
}
blink::mojom::PreviewsResourceLoadingHintsPtr hints_ptr =
blink::mojom::PreviewsResourceLoadingHints::New();
......@@ -142,13 +144,11 @@ void ResourceLoadingHintsWebContentsObserver::SendResourceLoadingHints(
if (!base::FeatureList::IsEnabled(
blink::features::kSendPreviewsLoadingHintsBeforeCommit)) {
hints_receiver_ptr->SetResourceLoadingHints(std::move(hints_ptr));
hints_receiver->SetResourceLoadingHints(std::move(hints_ptr));
} else {
blink::mojom::PreviewsResourceLoadingHintsReceiverAssociatedPtr
hints_receiver_associated_ptr =
GetResourceLoadingHintsReceiver(navigation_handle);
hints_receiver_associated_ptr->SetResourceLoadingHints(
std::move(hints_ptr));
auto hints_receiver_associated =
GetResourceLoadingHintsReceiver(navigation_handle);
hints_receiver_associated->SetResourceLoadingHints(std::move(hints_ptr));
}
}
......@@ -166,10 +166,10 @@ const std::vector<std::string> ResourceLoadingHintsWebContentsObserver::
document_gurl);
}
blink::mojom::PreviewsResourceLoadingHintsReceiverAssociatedPtr
mojo::AssociatedRemote<blink::mojom::PreviewsResourceLoadingHintsReceiver>
ResourceLoadingHintsWebContentsObserver::GetResourceLoadingHintsReceiver(
content::NavigationHandle* navigation_handle) {
blink::mojom::PreviewsResourceLoadingHintsReceiverAssociatedPtr
mojo::AssociatedRemote<blink::mojom::PreviewsResourceLoadingHintsReceiver>
loading_hints_agent;
if (navigation_handle->GetRenderFrameHost()
......
......@@ -11,6 +11,7 @@
#include "base/macros.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
#include "mojo/public/cpp/bindings/associated_remote.h"
#include "services/service_manager/public/cpp/interface_provider.h"
#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
#include "third_party/blink/public/mojom/loader/previews_resource_loading_hints.mojom.h"
......@@ -70,7 +71,7 @@ class ResourceLoadingHintsWebContentsObserver
// Set in constructor.
Profile* profile_ = nullptr;
blink::mojom::PreviewsResourceLoadingHintsReceiverAssociatedPtr
mojo::AssociatedRemote<blink::mojom::PreviewsResourceLoadingHintsReceiver>
GetResourceLoadingHintsReceiver(content::NavigationHandle* navigation_handle);
WEB_CONTENTS_USER_DATA_KEY_DECL();
......
......@@ -34,12 +34,12 @@ const blink::WebVector<blink::WebString> convert_to_web_vector(
ResourceLoadingHintsAgent::ResourceLoadingHintsAgent(
blink::AssociatedInterfaceRegistry* associated_interfaces,
content::RenderFrame* render_frame)
: content::RenderFrameObserver(render_frame), binding_(this) {
: content::RenderFrameObserver(render_frame) {
DCHECK(render_frame);
DCHECK(IsMainFrame());
associated_interfaces->AddInterface(base::BindRepeating(
&ResourceLoadingHintsAgent::SetBinding, base::Unretained(this)));
&ResourceLoadingHintsAgent::SetReceiver, base::Unretained(this)));
}
GURL ResourceLoadingHintsAgent::GetDocumentURL() const {
......@@ -74,10 +74,10 @@ void ResourceLoadingHintsAgent::OnDestruct() {
ResourceLoadingHintsAgent::~ResourceLoadingHintsAgent() = default;
void ResourceLoadingHintsAgent::SetBinding(
blink::mojom::PreviewsResourceLoadingHintsReceiverAssociatedRequest
request) {
binding_.Bind(std::move(request));
void ResourceLoadingHintsAgent::SetReceiver(
mojo::PendingAssociatedReceiver<
blink::mojom::PreviewsResourceLoadingHintsReceiver> receiver) {
receiver_.Bind(std::move(receiver));
}
bool ResourceLoadingHintsAgent::IsMainFrame() const {
......
......@@ -12,8 +12,8 @@
#include "base/macros.h"
#include "base/optional.h"
#include "content/public/renderer/render_frame_observer.h"
#include "mojo/public/cpp/bindings/associated_binding.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/associated_receiver.h"
#include "mojo/public/cpp/bindings/pending_associated_receiver.h"
#include "services/service_manager/public/cpp/interface_provider.h"
#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
#include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
......@@ -47,17 +47,17 @@ class ResourceLoadingHintsAgent
void SetResourceLoadingHints(blink::mojom::PreviewsResourceLoadingHintsPtr
resource_loading_hints) override;
void SetBinding(
blink::mojom::PreviewsResourceLoadingHintsReceiverAssociatedRequest
request);
void SetReceiver(
mojo::PendingAssociatedReceiver<
blink::mojom::PreviewsResourceLoadingHintsReceiver> receiver);
bool IsMainFrame() const;
std::vector<std::string> subresource_patterns_to_block_;
base::Optional<int64_t> ukm_source_id_;
mojo::AssociatedBinding<blink::mojom::PreviewsResourceLoadingHintsReceiver>
binding_;
mojo::AssociatedReceiver<blink::mojom::PreviewsResourceLoadingHintsReceiver>
receiver_{this};
DISALLOW_COPY_AND_ASSIGN(ResourceLoadingHintsAgent);
};
......
......@@ -197,9 +197,9 @@ void BlinkInitializer::InitLocalFrame(LocalFrame& frame) const {
&LocalFrame::PauseSubresourceLoading, WrapWeakPersistent(&frame)));
if (!base::FeatureList::IsEnabled(
blink::features::kSendPreviewsLoadingHintsBeforeCommit)) {
frame.GetInterfaceRegistry()->AddInterface(
WTF::BindRepeating(&LocalFrame::BindPreviewsResourceLoadingHintsRequest,
WrapWeakPersistent(&frame)));
frame.GetInterfaceRegistry()->AddInterface(WTF::BindRepeating(
&LocalFrame::BindPreviewsResourceLoadingHintsReceiver,
WrapWeakPersistent(&frame)));
}
ModulesInitializer::InitLocalFrame(frame);
}
......
......@@ -1512,12 +1512,13 @@ void LocalFrame::AnimateSnapFling(base::TimeTicks monotonic_time) {
GetEventHandler().AnimateSnapFling(monotonic_time);
}
void LocalFrame::BindPreviewsResourceLoadingHintsRequest(
blink::mojom::blink::PreviewsResourceLoadingHintsReceiverRequest request) {
void LocalFrame::BindPreviewsResourceLoadingHintsReceiver(
mojo::PendingReceiver<
blink::mojom::blink::PreviewsResourceLoadingHintsReceiver> receiver) {
DCHECK(!previews_resource_loading_hints_receiver_);
previews_resource_loading_hints_receiver_ =
std::make_unique<PreviewsResourceLoadingHintsReceiverImpl>(
std::move(request), GetDocument());
std::move(receiver), GetDocument());
}
SmoothScrollSequencer& LocalFrame::GetSmoothScrollSequencer() {
......
......@@ -407,8 +407,9 @@ class CORE_EXPORT LocalFrame final : public Frame,
return client_hints_preferences_;
}
void BindPreviewsResourceLoadingHintsRequest(
blink::mojom::blink::PreviewsResourceLoadingHintsReceiverRequest request);
void BindPreviewsResourceLoadingHintsReceiver(
mojo::PendingReceiver<
blink::mojom::blink::PreviewsResourceLoadingHintsReceiver> receiver);
SmoothScrollSequencer& GetSmoothScrollSequencer();
......
......@@ -14,9 +14,10 @@ namespace blink {
PreviewsResourceLoadingHintsReceiverImpl::
PreviewsResourceLoadingHintsReceiverImpl(
mojom::blink::PreviewsResourceLoadingHintsReceiverRequest request,
mojo::PendingReceiver<
mojom::blink::PreviewsResourceLoadingHintsReceiver> receiver,
Document* document)
: binding_(this, std::move(request)), document_(document) {
: receiver_(this, std::move(receiver)), document_(document) {
DCHECK(!base::FeatureList::IsEnabled(
blink::features::kSendPreviewsLoadingHintsBeforeCommit));
}
......
......@@ -5,21 +5,23 @@
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LOADER_PREVIEWS_RESOURCE_LOADING_HINTS_RECEIVER_IMPL_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_LOADER_PREVIEWS_RESOURCE_LOADING_HINTS_RECEIVER_IMPL_H_
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "third_party/blink/public/mojom/loader/previews_resource_loading_hints.mojom-blink.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/platform/heap/persistent.h"
namespace blink {
// Created and attached to a LocalFrame when
// PreviewsResourceLoadingHintsReceiverRequest is received by the frame from the
// browser process.
// Created and attached to a LocalFrame when the frame receives a
// PreviewsResourceLoadingHintsReceiver interface receiver from the browser
// process.
class PreviewsResourceLoadingHintsReceiverImpl
: public mojom::blink::PreviewsResourceLoadingHintsReceiver {
public:
PreviewsResourceLoadingHintsReceiverImpl(
mojom::blink::PreviewsResourceLoadingHintsReceiverRequest request,
mojo::PendingReceiver<mojom::blink::PreviewsResourceLoadingHintsReceiver>
receiver,
Document* document);
~PreviewsResourceLoadingHintsReceiverImpl() override;
......@@ -28,7 +30,7 @@ class PreviewsResourceLoadingHintsReceiverImpl
resource_loading_hints) override;
// TODO(tbansal): https://crbug.com/800641. Consider using a RevocableBinding.
mojo::Binding<mojom::blink::PreviewsResourceLoadingHintsReceiver> binding_;
mojo::Receiver<mojom::blink::PreviewsResourceLoadingHintsReceiver> receiver_;
WeakPersistent<Document> document_;
......
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