Commit e740b36f authored by Julie Jeongeun Kim's avatar Julie Jeongeun Kim Committed by Commit Bot

Convert OfflinePageAutoFetcher to new Mojo types

This CL converts OfflinePageAutoFetcher to new mojo types
using Remote, PendingRemote, ReceiverSet, and PendingReceiver.

Bug: 955171
Change-Id: I1747f4bd5830a1a077fba86466e372807171f939
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1828757Reviewed-by: default avatarCathy Li <chili@chromium.org>
Reviewed-by: default avatarKen Rockot <rockot@google.com>
Commit-Queue: Julie Kim <jkim@igalia.com>
Cr-Commit-Position: refs/heads/master@{#700931}
parent 8969de2a
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h" #include "content/public/browser/render_process_host.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "mojo/public/cpp/bindings/strong_binding.h" #include "mojo/public/cpp/bindings/self_owned_receiver.h"
#include "url/gurl.h" #include "url/gurl.h"
namespace offline_pages { namespace offline_pages {
...@@ -72,13 +72,13 @@ void OfflinePageAutoFetcher::CancelSchedule() { ...@@ -72,13 +72,13 @@ void OfflinePageAutoFetcher::CancelSchedule() {
// static // static
void OfflinePageAutoFetcher::Create( void OfflinePageAutoFetcher::Create(
chrome::mojom::OfflinePageAutoFetcherRequest request, mojo::PendingReceiver<chrome::mojom::OfflinePageAutoFetcher> receiver,
content::RenderFrameHost* render_frame_host) { content::RenderFrameHost* render_frame_host) {
// Lifetime of the strong binding can exceed the render frame host, so // Lifetime of the self owned receiver can exceed the render frame host, so
// OfflinePageAutoFetcher does not retain a reference. // OfflinePageAutoFetcher does not retain a reference.
mojo::MakeStrongBinding( mojo::MakeSelfOwnedReceiver(
std::make_unique<OfflinePageAutoFetcher>(render_frame_host), std::make_unique<OfflinePageAutoFetcher>(render_frame_host),
std::move(request)); std::move(receiver));
} }
} // namespace offline_pages } // namespace offline_pages
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "chrome/common/offline_page_auto_fetcher.mojom.h" #include "chrome/common/offline_page_auto_fetcher.mojom.h"
#include "components/offline_pages/core/background/request_queue_results.h" #include "components/offline_pages/core/background/request_queue_results.h"
#include "components/offline_pages/core/background/save_page_request.h" #include "components/offline_pages/core/background/save_page_request.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
namespace content { namespace content {
class RenderFrameHost; class RenderFrameHost;
...@@ -29,8 +30,9 @@ class OfflinePageAutoFetcher : public chrome::mojom::OfflinePageAutoFetcher { ...@@ -29,8 +30,9 @@ class OfflinePageAutoFetcher : public chrome::mojom::OfflinePageAutoFetcher {
void TrySchedule(bool user_requested, TryScheduleCallback callback) override; void TrySchedule(bool user_requested, TryScheduleCallback callback) override;
void CancelSchedule() override; void CancelSchedule() override;
static void Create(chrome::mojom::OfflinePageAutoFetcherRequest request, static void Create(
content::RenderFrameHost* render_frame_host); mojo::PendingReceiver<chrome::mojom::OfflinePageAutoFetcher> receiver,
content::RenderFrameHost* render_frame_host);
private: private:
OfflinePageAutoFetcherService* GetService(); OfflinePageAutoFetcherService* GetService();
......
...@@ -36,8 +36,8 @@ ...@@ -36,8 +36,8 @@
#include "content/public/common/service_names.mojom.h" #include "content/public/common/service_names.mojom.h"
#include "content/public/common/url_constants.h" #include "content/public/common/url_constants.h"
#include "content/public/test/mock_render_thread.h" #include "content/public/test/mock_render_thread.h"
#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver_set.h" #include "mojo/public/cpp/bindings/receiver_set.h"
#include "net/base/net_errors.h" #include "net/base/net_errors.h"
#include "testing/gmock/include/gmock/gmock.h" #include "testing/gmock/include/gmock/gmock.h"
...@@ -2683,8 +2683,9 @@ class FakeOfflinePageAutoFetcher ...@@ -2683,8 +2683,9 @@ class FakeOfflinePageAutoFetcher
void CancelSchedule() override { cancel_calls_++; } void CancelSchedule() override { cancel_calls_++; }
void AddBinding(chrome::mojom::OfflinePageAutoFetcherRequest request) { void AddReceiver(
bindings_.AddBinding(this, std::move(request)); mojo::PendingReceiver<chrome::mojom::OfflinePageAutoFetcher> receiver) {
receivers_.Add(this, std::move(receiver));
} }
int cancel_calls() const { return cancel_calls_; } int cancel_calls() const { return cancel_calls_; }
...@@ -2695,7 +2696,7 @@ class FakeOfflinePageAutoFetcher ...@@ -2695,7 +2696,7 @@ class FakeOfflinePageAutoFetcher
} }
private: private:
mojo::BindingSet<chrome::mojom::OfflinePageAutoFetcher> bindings_; mojo::ReceiverSet<chrome::mojom::OfflinePageAutoFetcher> receivers_;
int cancel_calls_ = 0; int cancel_calls_ = 0;
std::vector<TryScheduleParameters> try_schedule_calls_; std::vector<TryScheduleParameters> try_schedule_calls_;
...@@ -2706,17 +2707,19 @@ class FakeOfflinePageAutoFetcher ...@@ -2706,17 +2707,19 @@ class FakeOfflinePageAutoFetcher
class TestPageAutoFetcherHelper : public PageAutoFetcherHelper { class TestPageAutoFetcherHelper : public PageAutoFetcherHelper {
public: public:
explicit TestPageAutoFetcherHelper( explicit TestPageAutoFetcherHelper(
base::RepeatingCallback<chrome::mojom::OfflinePageAutoFetcherPtr()> base::RepeatingCallback<
binder) mojo::PendingRemote<chrome::mojom::OfflinePageAutoFetcher>()> binder)
: PageAutoFetcherHelper(nullptr), binder_(binder) {} : PageAutoFetcherHelper(nullptr), binder_(binder) {}
bool Bind() override { bool Bind() override {
if (!fetcher_) if (!fetcher_)
fetcher_ = binder_.Run(); fetcher_.Bind(binder_.Run());
return true; return true;
} }
private: private:
base::RepeatingCallback<chrome::mojom::OfflinePageAutoFetcherPtr()> binder_; base::RepeatingCallback<
mojo::PendingRemote<chrome::mojom::OfflinePageAutoFetcher>()>
binder_;
}; };
// Provides set up for testing the 'auto fetch on dino' feature. // Provides set up for testing the 'auto fetch on dino' feature.
...@@ -2725,9 +2728,10 @@ class NetErrorHelperCoreAutoFetchTest : public NetErrorHelperCoreTest { ...@@ -2725,9 +2728,10 @@ class NetErrorHelperCoreAutoFetchTest : public NetErrorHelperCoreTest {
void SetUp() override { void SetUp() override {
NetErrorHelperCoreTest::SetUp(); NetErrorHelperCoreTest::SetUp();
auto binder = base::BindLambdaForTesting([&]() { auto binder = base::BindLambdaForTesting([&]() {
chrome::mojom::OfflinePageAutoFetcherPtr fetcher_ptr; mojo::PendingRemote<chrome::mojom::OfflinePageAutoFetcher> fetcher_remote;
fake_fetcher_.AddBinding(mojo::MakeRequest(&fetcher_ptr)); fake_fetcher_.AddReceiver(
return fetcher_ptr; fetcher_remote.InitWithNewPipeAndPassReceiver());
return fetcher_remote;
}); });
core()->SetPageAutoFetcherHelperForTesting( core()->SetPageAutoFetcherHelperForTesting(
......
...@@ -54,6 +54,6 @@ bool PageAutoFetcherHelper::Bind() { ...@@ -54,6 +54,6 @@ bool PageAutoFetcherHelper::Bind() {
if (fetcher_) if (fetcher_)
return true; return true;
render_frame_->GetRemoteInterfaces()->GetInterface( render_frame_->GetRemoteInterfaces()->GetInterface(
mojo::MakeRequest(&fetcher_)); fetcher_.BindNewPipeAndPassReceiver());
return fetcher_.is_bound(); return fetcher_.is_bound();
} }
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "chrome/common/offline_page_auto_fetcher.mojom.h" #include "chrome/common/offline_page_auto_fetcher.mojom.h"
#include "mojo/public/cpp/bindings/remote.h"
namespace content { namespace content {
class RenderFrame; class RenderFrame;
...@@ -39,7 +40,7 @@ class PageAutoFetcherHelper { ...@@ -39,7 +40,7 @@ class PageAutoFetcherHelper {
virtual bool Bind(); virtual bool Bind();
content::RenderFrame* render_frame_; content::RenderFrame* render_frame_;
chrome::mojom::OfflinePageAutoFetcherPtr fetcher_; mojo::Remote<chrome::mojom::OfflinePageAutoFetcher> fetcher_;
base::WeakPtrFactory<PageAutoFetcherHelper> weak_ptr_factory_{this}; base::WeakPtrFactory<PageAutoFetcherHelper> weak_ptr_factory_{this};
......
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