Convert CookieChangeListener to new Mojo types
This CL converts CookieChangeListenerPtr and
CookieChangeListenerRequest to new Mojo types.
It updates AddChangeListener from
restricted_cookie_manager.mojom,
AddCookieChangeListener and AddGlobalChangeListener
from cookie_manager.mojom.
Bug: 955171, 978694
Change-Id: I315979060078f10b8b73827b9a42a3b705d0a45d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1753371
Commit-Queue: Julie Kim <jkim@igalia.com>
Reviewed-by: Cait Phillips <caitkp@chromium.org>
Reviewed-by: Wez <wez@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: Marc Treib <treib@chromium.org>
Reviewed-by: Ken Rockot <rockot@google.com>
Reviewed-by: Nate Fischer <ntfschr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#688557}
diff --git a/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.cc b/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.cc
index 09c76c5..8d3360f 100644
--- a/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.cc
+++ b/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.cc
@@ -9,7 +9,9 @@
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
-#include "mojo/public/cpp/bindings/strong_binding.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/remote.h"
+#include "mojo/public/cpp/bindings/self_owned_receiver.h"
namespace android_webview {
@@ -21,7 +23,7 @@
const GURL& site_for_cookies,
base::WeakPtr<AwProxyingRestrictedCookieManager>
aw_restricted_cookie_manager,
- network::mojom::CookieChangeListenerPtr client_listener)
+ mojo::PendingRemote<network::mojom::CookieChangeListener> client_listener)
: url_(url),
site_for_cookies_(site_for_cookies),
aw_restricted_cookie_manager_(aw_restricted_cookie_manager),
@@ -39,7 +41,7 @@
const GURL site_for_cookies_;
base::WeakPtr<AwProxyingRestrictedCookieManager>
aw_restricted_cookie_manager_;
- network::mojom::CookieChangeListenerPtr client_listener_;
+ mojo::Remote<network::mojom::CookieChangeListener> client_listener_;
};
// static
@@ -100,21 +102,23 @@
const GURL& url,
const GURL& site_for_cookies,
const url::Origin& top_frame_origin,
- network::mojom::CookieChangeListenerPtr listener,
+ mojo::PendingRemote<network::mojom::CookieChangeListener> listener,
AddChangeListenerCallback callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
- network::mojom::CookieChangeListenerPtr proxy_listener_ptr;
+ mojo::PendingRemote<network::mojom::CookieChangeListener>
+ proxy_listener_remote;
auto proxy_listener =
std::make_unique<AwProxyingRestrictedCookieManagerListener>(
url, site_for_cookies, weak_factory_.GetWeakPtr(),
std::move(listener));
- mojo::MakeStrongBinding(std::move(proxy_listener),
- mojo::MakeRequest(&proxy_listener_ptr));
+ mojo::MakeSelfOwnedReceiver(
+ std::move(proxy_listener),
+ proxy_listener_remote.InitWithNewPipeAndPassReceiver());
underlying_restricted_cookie_manager_->AddChangeListener(
- url, site_for_cookies, top_frame_origin, std::move(proxy_listener_ptr),
+ url, site_for_cookies, top_frame_origin, std::move(proxy_listener_remote),
std::move(callback));
}
diff --git a/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.h b/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.h
index 86e20f6..384e75d 100644
--- a/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.h
+++ b/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.h
@@ -43,11 +43,12 @@
const GURL& site_for_cookies,
const url::Origin& top_frame_origin,
SetCanonicalCookieCallback callback) override;
- void AddChangeListener(const GURL& url,
- const GURL& site_for_cookies,
- const url::Origin& top_frame_origin,
- network::mojom::CookieChangeListenerPtr listener,
- AddChangeListenerCallback callback) override;
+ void AddChangeListener(
+ const GURL& url,
+ const GURL& site_for_cookies,
+ const url::Origin& top_frame_origin,
+ mojo::PendingRemote<network::mojom::CookieChangeListener> listener,
+ AddChangeListenerCallback callback) override;
void SetCookieFromString(const GURL& url,
const GURL& site_for_cookies,
diff --git a/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.cc b/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.cc
index 8c63069..31c3ab8a 100644
--- a/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.cc
+++ b/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.cc
@@ -30,9 +30,7 @@
AndroidSmsPairingStateTrackerImpl::AndroidSmsPairingStateTrackerImpl(
Profile* profile,
AndroidSmsAppManager* android_sms_app_manager)
- : profile_(profile),
- android_sms_app_manager_(android_sms_app_manager),
- cookie_listener_binding_(this) {
+ : profile_(profile), android_sms_app_manager_(android_sms_app_manager) {
android_sms_app_manager_->AddObserver(this);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE,
@@ -90,7 +88,7 @@
void AndroidSmsPairingStateTrackerImpl::OnInstalledAppUrlChanged() {
// If the app URL changed, stop any ongoing cookie monitoring and attempt to
// add a new change listener.
- cookie_listener_binding_.Close();
+ cookie_listener_receiver_.reset();
AddCookieChangeListener();
}
@@ -113,11 +111,9 @@
void AndroidSmsPairingStateTrackerImpl::AddCookieChangeListener() {
// Trigger the first fetch of the sms cookie and start listening for changes.
AttemptFetchMessagesPairingState();
- network::mojom::CookieChangeListenerPtr listener_ptr;
- cookie_listener_binding_.Bind(mojo::MakeRequest(&listener_ptr));
-
GetCookieManager()->AddCookieChangeListener(
- GetPairingUrl(), kMessagesPairStateCookieName, std::move(listener_ptr));
+ GetPairingUrl(), kMessagesPairStateCookieName,
+ cookie_listener_receiver_.BindNewPipeAndPassRemote());
}
} // namespace android_sms
diff --git a/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.h b/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.h
index 59dfd3fb..8df16e3c 100644
--- a/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.h
+++ b/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.h
@@ -10,7 +10,7 @@
#include "base/memory/weak_ptr.h"
#include "chrome/browser/chromeos/android_sms/android_sms_app_manager.h"
#include "chromeos/services/multidevice_setup/public/cpp/android_sms_pairing_state_tracker.h"
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/receiver.h"
#include "services/network/public/mojom/cookie_manager.mojom.h"
#include "url/gurl.h"
@@ -54,7 +54,8 @@
Profile* profile_;
AndroidSmsAppManager* android_sms_app_manager_;
- mojo::Binding<network::mojom::CookieChangeListener> cookie_listener_binding_;
+ mojo::Receiver<network::mojom::CookieChangeListener>
+ cookie_listener_receiver_{this};
bool was_paired_on_last_update_ = false;
base::WeakPtrFactory<AndroidSmsPairingStateTrackerImpl> weak_ptr_factory_{
this};
diff --git a/chrome/browser/extensions/api/cookies/cookies_api.cc b/chrome/browser/extensions/api/cookies/cookies_api.cc
index 9a1e196..584fb6f 100644
--- a/chrome/browser/extensions/api/cookies/cookies_api.cc
+++ b/chrome/browser/extensions/api/cookies/cookies_api.cc
@@ -182,14 +182,14 @@
? original_profile->GetOffTheRecordProfile()
: nullptr;
- if (!binding_)
- BindToCookieManager(&binding_, original_profile);
- if (!otr_binding_.is_bound() && otr_profile)
- BindToCookieManager(&otr_binding_, otr_profile);
+ if (!receiver_.is_bound())
+ BindToCookieManager(&receiver_, original_profile);
+ if (!otr_receiver_.is_bound() && otr_profile)
+ BindToCookieManager(&otr_receiver_, otr_profile);
}
void CookiesEventRouter::BindToCookieManager(
- mojo::Binding<network::mojom::CookieChangeListener>* binding,
+ mojo::Receiver<network::mojom::CookieChangeListener>* receiver,
Profile* profile) {
network::mojom::CookieManager* cookie_manager =
content::BrowserContext::GetDefaultStoragePartition(profile)
@@ -197,19 +197,17 @@
if (!cookie_manager)
return;
- network::mojom::CookieChangeListenerPtr listener_ptr;
- binding->Bind(mojo::MakeRequest(&listener_ptr));
- binding->set_connection_error_handler(base::BindOnce(
- &CookiesEventRouter::OnConnectionError, base::Unretained(this), binding));
-
- cookie_manager->AddGlobalChangeListener(std::move(listener_ptr));
+ cookie_manager->AddGlobalChangeListener(receiver->BindNewPipeAndPassRemote());
+ receiver->set_disconnect_handler(
+ base::BindOnce(&CookiesEventRouter::OnConnectionError,
+ base::Unretained(this), receiver));
}
void CookiesEventRouter::OnConnectionError(
- mojo::Binding<network::mojom::CookieChangeListener>* binding) {
+ mojo::Receiver<network::mojom::CookieChangeListener>* receiver) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- binding->Close();
+ receiver->reset();
MaybeStartListening();
}
diff --git a/chrome/browser/extensions/api/cookies/cookies_api.h b/chrome/browser/extensions/api/cookies/cookies_api.h
index 1ac9de5..4741c1c 100644
--- a/chrome/browser/extensions/api/cookies/cookies_api.h
+++ b/chrome/browser/extensions/api/cookies/cookies_api.h
@@ -19,7 +19,7 @@
#include "chrome/common/extensions/api/cookies.h"
#include "extensions/browser/browser_context_keyed_api_factory.h"
#include "extensions/browser/event_router.h"
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/receiver.h"
#include "net/cookies/canonical_cookie.h"
#include "services/network/public/mojom/cookie_manager.mojom.h"
#include "url/gurl.h"
@@ -60,10 +60,10 @@
void MaybeStartListening();
void BindToCookieManager(
- mojo::Binding<network::mojom::CookieChangeListener>* binding,
+ mojo::Receiver<network::mojom::CookieChangeListener>* receiver,
Profile* profile);
void OnConnectionError(
- mojo::Binding<network::mojom::CookieChangeListener>* binding);
+ mojo::Receiver<network::mojom::CookieChangeListener>* receiver);
void OnCookieChange(bool otr,
const net::CanonicalCookie& canonical_cookie,
network::mojom::CookieChangeCause cause);
@@ -81,10 +81,10 @@
// profiles, we need a pair of bindings, as well as a pair of
// CookieChangeListener instances.
CookieChangeListener listener_{this, false};
- mojo::Binding<network::mojom::CookieChangeListener> binding_{&listener_};
+ mojo::Receiver<network::mojom::CookieChangeListener> receiver_{&listener_};
CookieChangeListener otr_listener_{this, true};
- mojo::Binding<network::mojom::CookieChangeListener> otr_binding_{
+ mojo::Receiver<network::mojom::CookieChangeListener> otr_receiver_{
&otr_listener_};
DISALLOW_COPY_AND_ASSIGN(CookiesEventRouter);
diff --git a/chrome/browser/signin/consistency_cookie_browsertest.cc b/chrome/browser/signin/consistency_cookie_browsertest.cc
index ebaabc4..f465e02 100644
--- a/chrome/browser/signin/consistency_cookie_browsertest.cc
+++ b/chrome/browser/signin/consistency_cookie_browsertest.cc
@@ -21,8 +21,7 @@
#include "content/public/test/browser_test_utils.h"
#include "google_apis/gaia/gaia_switches.h"
#include "google_apis/gaia/gaia_urls.h"
-#include "mojo/public/cpp/bindings/binding.h"
-#include "mojo/public/cpp/bindings/interface_request.h"
+#include "mojo/public/cpp/bindings/receiver.h"
#include "net/cookies/canonical_cookie.h"
#include "net/test/embedded_test_server/default_handlers.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
@@ -42,13 +41,10 @@
public:
TestConsistencyCookieManager(SigninClient* client,
AccountReconcilor* reconcilor)
- : signin::ConsistencyCookieManagerBase(client, reconcilor),
- cookie_listener_binding_(this) {
+ : signin::ConsistencyCookieManagerBase(client, reconcilor) {
// Listen to cookie changes.
- network::mojom::CookieChangeListenerPtr listener_ptr;
- cookie_listener_binding_.Bind(mojo::MakeRequest(&listener_ptr));
client->GetCookieManager()->AddGlobalChangeListener(
- std::move(listener_ptr));
+ cookie_listener_receiver_.BindNewPipeAndPassRemote());
// Subclasses have to call UpdateCookie() in the constructor.
UpdateCookie();
// Wait for the initial cookie to be set.
@@ -83,7 +79,8 @@
std::string CalculateCookieValue() override { return value_; }
std::string value_ = "initial_value";
- mojo::Binding<network::mojom::CookieChangeListener> cookie_listener_binding_;
+ mojo::Receiver<network::mojom::CookieChangeListener>
+ cookie_listener_receiver_{this};
base::OnceClosure run_loop_quit_closure_;
};
diff --git a/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc b/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc
index 1769d271..48ace0c 100644
--- a/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc
+++ b/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc
@@ -444,7 +444,6 @@
fetcher_backoff_(&kBackoffPolicy),
fetcher_retries_(0),
listAccountsUnexpectedServerResponseRetried_(false),
- cookie_listener_binding_(this),
external_cc_result_fetched_(false),
list_accounts_stale_(true) {
std::string gaia_cookie_last_list_accounts_data =
@@ -475,27 +474,24 @@
}
void GaiaCookieManagerService::InitCookieListener() {
- DCHECK(!cookie_listener_binding_);
+ DCHECK(!cookie_listener_receiver_.is_bound());
network::mojom::CookieManager* cookie_manager =
signin_client_->GetCookieManager();
// NOTE: |cookie_manager| can be nullptr when TestSigninClient is used in
// testing contexts.
if (cookie_manager) {
- network::mojom::CookieChangeListenerPtr listener_ptr;
- cookie_listener_binding_.Bind(mojo::MakeRequest(&listener_ptr));
- cookie_listener_binding_.set_connection_error_handler(base::BindOnce(
- &GaiaCookieManagerService::OnCookieListenerConnectionError,
- base::Unretained(this)));
-
cookie_manager->AddCookieChangeListener(
GaiaUrls::GetInstance()->google_url(), kGaiaCookieName,
- std::move(listener_ptr));
+ cookie_listener_receiver_.BindNewPipeAndPassRemote());
+ cookie_listener_receiver_.set_disconnect_handler(base::BindOnce(
+ &GaiaCookieManagerService::OnCookieListenerConnectionError,
+ base::Unretained(this)));
}
}
void GaiaCookieManagerService::Shutdown() {
- cookie_listener_binding_.Close();
+ cookie_listener_receiver_.reset();
}
void GaiaCookieManagerService::SetAccountsInCookie(
@@ -716,7 +712,7 @@
void GaiaCookieManagerService::OnCookieListenerConnectionError() {
// A connection error from the CookieManager likely means that the network
// service process has crashed. Try again to set up a listener.
- cookie_listener_binding_.Close();
+ cookie_listener_receiver_.reset();
InitCookieListener();
}
diff --git a/components/signin/internal/identity_manager/gaia_cookie_manager_service.h b/components/signin/internal/identity_manager/gaia_cookie_manager_service.h
index e46fd9d..2958f05b 100644
--- a/components/signin/internal/identity_manager/gaia_cookie_manager_service.h
+++ b/components/signin/internal/identity_manager/gaia_cookie_manager_service.h
@@ -24,7 +24,7 @@
#include "google_apis/gaia/gaia_auth_consumer.h"
#include "google_apis/gaia/gaia_auth_fetcher.h"
#include "google_apis/gaia/gaia_auth_util.h"
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/receiver.h"
#include "net/base/backoff_entry.h"
#include "services/network/public/mojom/cookie_manager.mojom.h"
@@ -382,7 +382,8 @@
std::string access_token_;
// Connection to the CookieManager that signals when the GAIA cookies change.
- mojo::Binding<network::mojom::CookieChangeListener> cookie_listener_binding_;
+ mojo::Receiver<network::mojom::CookieChangeListener>
+ cookie_listener_receiver_{this};
// A worklist for this class. Stores any pending requests that couldn't be
// executed right away, since this class only permits one request to be
diff --git a/content/browser/cookie_store/cookie_store_manager.cc b/content/browser/cookie_store/cookie_store_manager.cc
index 8e9cd15..f91fccf 100644
--- a/content/browser/cookie_store/cookie_store_manager.cc
+++ b/content/browser/cookie_store/cookie_store_manager.cc
@@ -46,7 +46,6 @@
CookieStoreManager::CookieStoreManager(
scoped_refptr<ServiceWorkerContextWrapper> service_worker_context)
: service_worker_context_(std::move(service_worker_context)),
- cookie_change_listener_binding_(this),
registration_user_data_key_(kSubscriptionsUserKey) {
service_worker_context_->AddObserver(this);
}
@@ -85,13 +84,10 @@
DCHECK(!cookie_manager_) << __func__ << " already called";
cookie_manager_ = std::move(cookie_manager);
- DCHECK(!cookie_change_listener_binding_.is_bound());
- ::network::mojom::CookieChangeListenerPtr cookie_change_listener;
- cookie_change_listener_binding_.Bind(
- mojo::MakeRequest(&cookie_change_listener));
-
+ DCHECK(!cookie_change_listener_receiver_.is_bound());
// TODO(pwnall): Switch to an API with subscription confirmation.
- cookie_manager_->AddGlobalChangeListener(std::move(cookie_change_listener));
+ cookie_manager_->AddGlobalChangeListener(
+ cookie_change_listener_receiver_.BindNewPipeAndPassRemote());
std::move(callback).Run(true);
}
diff --git a/content/browser/cookie_store/cookie_store_manager.h b/content/browser/cookie_store/cookie_store_manager.h
index e29565e..0943ebb 100644
--- a/content/browser/cookie_store/cookie_store_manager.h
+++ b/content/browser/cookie_store/cookie_store_manager.h
@@ -187,8 +187,8 @@
// Used to receive cookie changes from the network service.
::network::mojom::CookieManagerPtr cookie_manager_;
- mojo::Binding<::network::mojom::CookieChangeListener>
- cookie_change_listener_binding_;
+ mojo::Receiver<::network::mojom::CookieChangeListener>
+ cookie_change_listener_receiver_{this};
// The service worker registration user data key for subscription data.
//
diff --git a/fuchsia/engine/browser/cookie_manager_impl.cc b/fuchsia/engine/browser/cookie_manager_impl.cc
index c7bcb3043..50f16c5 100644
--- a/fuchsia/engine/browser/cookie_manager_impl.cc
+++ b/fuchsia/engine/browser/cookie_manager_impl.cc
@@ -7,7 +7,8 @@
#include <lib/fidl/cpp/binding.h>
#include "base/fuchsia/fuchsia_logging.h"
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/receiver.h"
#include "net/cookies/canonical_cookie.h"
#include "services/network/public/mojom/network_context.mojom.h"
#include "url/gurl.h"
@@ -45,11 +46,11 @@
public:
// |this| will delete itself when |mojo_request| or |changes| disconnect.
CookiesIteratorImpl(
- mojo::InterfaceRequest<network::mojom::CookieChangeListener> mojo_request,
+ mojo::PendingReceiver<network::mojom::CookieChangeListener> mojo_receiver,
fidl::InterfaceRequest<fuchsia::web::CookiesIterator> changes)
: CookiesIteratorImpl(std::move(changes)) {
- mojo_binding_.Bind(std::move(mojo_request));
- mojo_binding_.set_connection_error_handler(base::BindOnce(
+ mojo_receiver_.Bind(std::move(mojo_receiver));
+ mojo_receiver_.set_disconnect_handler(base::BindOnce(
&CookiesIteratorImpl::OnMojoError, base::Unretained(this)));
}
// |this| will delete itself when |iterator| disconnects, or if a GetNext()
@@ -75,7 +76,7 @@
private:
explicit CookiesIteratorImpl(
fidl::InterfaceRequest<fuchsia::web::CookiesIterator> iterator)
- : mojo_binding_(this), fidl_binding_(this) {
+ : mojo_receiver_(this), fidl_binding_(this) {
fidl_binding_.Bind(std::move(iterator));
fidl_binding_.set_error_handler([this](zx_status_t status) {
ZX_LOG_IF(ERROR, status != ZX_ERR_PEER_CLOSED, status)
@@ -97,7 +98,7 @@
if (!get_next_callback_)
return;
- if (mojo_binding_.is_bound() && queued_cookies_.empty())
+ if (mojo_receiver_.is_bound() && queued_cookies_.empty())
return;
// Build a vector of Cookies to return to the caller.
@@ -113,7 +114,7 @@
// If this is a one-off CookieIterator then tear down once |queued_cookies_|
// is empty.
- if (queued_cookies_.empty() && !mojo_binding_.is_bound())
+ if (queued_cookies_.empty() && !mojo_receiver_.is_bound())
delete this;
}
@@ -124,7 +125,7 @@
MaybeSendQueuedCookies();
}
- mojo::Binding<network::mojom::CookieChangeListener> mojo_binding_;
+ mojo::Receiver<network::mojom::CookieChangeListener> mojo_receiver_;
fidl::Binding<fuchsia::web::CookiesIterator> fidl_binding_;
GetNextCallback get_next_callback_;
@@ -168,8 +169,8 @@
fidl::InterfaceRequest<fuchsia::web::CookiesIterator> changes) {
EnsureCookieManager();
- network::mojom::CookieChangeListenerPtr mojo_listener;
- new CookiesIteratorImpl(mojo::MakeRequest(&mojo_listener),
+ mojo::PendingRemote<network::mojom::CookieChangeListener> mojo_listener;
+ new CookiesIteratorImpl(mojo_listener.InitWithNewPipeAndPassReceiver(),
std::move(changes));
if (url) {
diff --git a/services/network/cookie_manager.cc b/services/network/cookie_manager.cc
index fc0bc14..37c9a89 100644
--- a/services/network/cookie_manager.cc
+++ b/services/network/cookie_manager.cc
@@ -120,9 +120,9 @@
void CookieManager::AddCookieChangeListener(
const GURL& url,
const base::Optional<std::string>& name,
- mojom::CookieChangeListenerPtr listener) {
+ mojo::PendingRemote<mojom::CookieChangeListener> listener) {
auto listener_registration = std::make_unique<ListenerRegistration>();
- listener_registration->listener = std::move(listener);
+ listener_registration->listener.Bind(std::move(listener));
auto cookie_change_callback = base::BindRepeating(
&CookieManager::ListenerRegistration::DispatchCookieStoreChange,
@@ -141,7 +141,7 @@
url, std::move(cookie_change_callback));
}
- listener_registration->listener.set_connection_error_handler(
+ listener_registration->listener.set_disconnect_handler(
base::BindOnce(&CookieManager::RemoveChangeListener,
// base::Unretained is safe as destruction of the
// CookieManager will also destroy the
@@ -158,9 +158,9 @@
}
void CookieManager::AddGlobalChangeListener(
- mojom::CookieChangeListenerPtr listener) {
+ mojo::PendingRemote<mojom::CookieChangeListener> listener) {
auto listener_registration = std::make_unique<ListenerRegistration>();
- listener_registration->listener = std::move(listener);
+ listener_registration->listener.Bind(std::move(listener));
listener_registration->subscription =
cookie_store_->GetChangeDispatcher().AddCallbackForAllChanges(
@@ -171,7 +171,7 @@
// CookieChangedSubscription, unregistering the callback.
base::Unretained(listener_registration.get())));
- listener_registration->listener.set_connection_error_handler(
+ listener_registration->listener.set_disconnect_handler(
base::BindOnce(&CookieManager::RemoveChangeListener,
// base::Unretained is safe as destruction of the
// CookieManager will also destroy the
diff --git a/services/network/cookie_manager.h b/services/network/cookie_manager.h
index c5667882..4213330 100644
--- a/services/network/cookie_manager.h
+++ b/services/network/cookie_manager.h
@@ -13,6 +13,7 @@
#include "base/macros.h"
#include "components/content_settings/core/common/content_settings.h"
#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/remote.h"
#include "net/cookies/cookie_change_dispatcher.h"
#include "net/cookies/cookie_deletion_info.h"
#include "services/network/cookie_settings.h"
@@ -70,9 +71,9 @@
void AddCookieChangeListener(
const GURL& url,
const base::Optional<std::string>& name,
- mojom::CookieChangeListenerPtr listener) override;
+ mojo::PendingRemote<mojom::CookieChangeListener> listener) override;
void AddGlobalChangeListener(
- mojom::CookieChangeListenerPtr listener) override;
+ mojo::PendingRemote<mojom::CookieChangeListener> listener) override;
void CloneInterface(mojom::CookieManagerRequest new_interface) override;
size_t GetClientsBoundForTesting() const { return bindings_.size(); }
@@ -112,7 +113,7 @@
std::unique_ptr<net::CookieChangeSubscription> subscription;
// The observer receiving change notifications.
- mojom::CookieChangeListenerPtr listener;
+ mojo::Remote<mojom::CookieChangeListener> listener;
DISALLOW_COPY_AND_ASSIGN(ListenerRegistration);
};
diff --git a/services/network/cookie_manager_unittest.cc b/services/network/cookie_manager_unittest.cc
index cf42d91..ea88a239 100644
--- a/services/network/cookie_manager_unittest.cc
+++ b/services/network/cookie_manager_unittest.cc
@@ -1684,8 +1684,9 @@
mojom::CookieChangeCause cause;
};
- CookieChangeListener(mojom::CookieChangeListenerRequest request)
- : run_loop_(nullptr), binding_(this, std::move(request)) {}
+ CookieChangeListener(
+ mojo::PendingReceiver<mojom::CookieChangeListener> receiver)
+ : run_loop_(nullptr), receiver_(this, std::move(receiver)) {}
// Blocks until the listener observes a cookie change.
void WaitForChange() {
@@ -1717,7 +1718,7 @@
// Loop to signal on receiving a notification if not null.
base::RunLoop* run_loop_;
- mojo::Binding<mojom::CookieChangeListener> binding_;
+ mojo::Receiver<mojom::CookieChangeListener> receiver_;
};
TEST_F(CookieManagerTest, AddCookieChangeListener) {
@@ -1727,13 +1728,12 @@
const std::string listener_cookie_name("Cookie_Name");
ASSERT_EQ(listener_url.host(), listener_url_host);
- mojom::CookieChangeListenerPtr listener_ptr;
- mojom::CookieChangeListenerRequest request(mojo::MakeRequest(&listener_ptr));
-
- CookieChangeListener listener(std::move(request));
+ mojo::PendingRemote<mojom::CookieChangeListener> listener_remote;
+ CookieChangeListener listener(
+ listener_remote.InitWithNewPipeAndPassReceiver());
cookie_service_client()->AddCookieChangeListener(
- listener_url, listener_cookie_name, std::move(listener_ptr));
+ listener_url, listener_cookie_name, std::move(listener_remote));
EXPECT_EQ(0u, listener.observed_changes().size());
@@ -1809,12 +1809,11 @@
const std::string kThisETLDP1 = "this.com";
const std::string kThatHost = "www.that.com";
- mojom::CookieChangeListenerPtr listener_ptr;
- mojom::CookieChangeListenerRequest request(mojo::MakeRequest(&listener_ptr));
+ mojo::PendingRemote<mojom::CookieChangeListener> listener_remote;
+ CookieChangeListener listener(
+ listener_remote.InitWithNewPipeAndPassReceiver());
- CookieChangeListener listener(std::move(request));
-
- cookie_service_client()->AddGlobalChangeListener(std::move(listener_ptr));
+ cookie_service_client()->AddGlobalChangeListener(std::move(listener_remote));
EXPECT_EQ(0u, listener.observed_changes().size());
@@ -1893,19 +1892,17 @@
ASSERT_EQ(listener_url.host(), listener_url_host);
const std::string listener_cookie_name("Cookie_Name");
- mojom::CookieChangeListenerPtr listener1_ptr;
- mojom::CookieChangeListenerRequest request1(
- mojo::MakeRequest(&listener1_ptr));
- auto listener1 = std::make_unique<CookieChangeListener>(std::move(request1));
+ mojo::PendingRemote<mojom::CookieChangeListener> listener1_remote;
+ auto listener1 = std::make_unique<CookieChangeListener>(
+ listener1_remote.InitWithNewPipeAndPassReceiver());
cookie_service_client()->AddCookieChangeListener(
- listener_url, listener_cookie_name, std::move(listener1_ptr));
+ listener_url, listener_cookie_name, std::move(listener1_remote));
- mojom::CookieChangeListenerPtr listener2_ptr;
- mojom::CookieChangeListenerRequest request2(
- mojo::MakeRequest(&listener2_ptr));
- auto listener2 = std::make_unique<CookieChangeListener>(std::move(request2));
+ mojo::PendingRemote<mojom::CookieChangeListener> listener2_remote;
+ auto listener2 = std::make_unique<CookieChangeListener>(
+ listener2_remote.InitWithNewPipeAndPassReceiver());
cookie_service_client()->AddCookieChangeListener(
- listener_url, listener_cookie_name, std::move(listener2_ptr));
+ listener_url, listener_cookie_name, std::move(listener2_remote));
// Add a cookie and receive a notification on both interfaces.
service_wrapper()->SetCanonicalCookie(
diff --git a/services/network/public/mojom/cookie_manager.mojom b/services/network/public/mojom/cookie_manager.mojom
index 2860f779d..b4589404 100644
--- a/services/network/public/mojom/cookie_manager.mojom
+++ b/services/network/public/mojom/cookie_manager.mojom
@@ -271,7 +271,7 @@
AddCookieChangeListener(
url.mojom.Url url,
string? name,
- CookieChangeListener listener);
+ pending_remote<CookieChangeListener> listener);
// Subscribes the given listener to changes to this CookieManager's cookies.
//
@@ -279,7 +279,8 @@
//
// TODO(rdsmith): Should this have a filter to register for a lot of
// notifications at once? Maybe combine with the deletion filter?
- AddGlobalChangeListener(CookieChangeListener notification_pointer);
+ AddGlobalChangeListener(
+ pending_remote<CookieChangeListener> notification_pointer);
// Clone the interface for use somewhere else. After this call,
// requests to the same implementation may be posted to the other side
diff --git a/services/network/public/mojom/restricted_cookie_manager.mojom b/services/network/public/mojom/restricted_cookie_manager.mojom
index 8f487f1..2aee77a 100644
--- a/services/network/public/mojom/restricted_cookie_manager.mojom
+++ b/services/network/public/mojom/restricted_cookie_manager.mojom
@@ -77,7 +77,7 @@
// The subscription is canceled by closing the pipe.
AddChangeListener(url.mojom.Url url, url.mojom.Url site_for_cookies,
url.mojom.Origin top_frame_origin,
- CookieChangeListener listener) => ();
+ pending_remote<CookieChangeListener> listener) => ();
// Sets a cookie. If setting of this cookie is not permitted either by web
// platform rules, or user preferences, the attempt will be silently ignored.
diff --git a/services/network/restricted_cookie_manager.cc b/services/network/restricted_cookie_manager.cc
index 29aafcdc..9e623ba 100644
--- a/services/network/restricted_cookie_manager.cc
+++ b/services/network/restricted_cookie_manager.cc
@@ -17,6 +17,7 @@
#include "base/strings/string_util.h"
#include "base/threading/sequenced_task_runner_handle.h"
#include "mojo/public/cpp/bindings/message.h"
+#include "mojo/public/cpp/bindings/remote.h"
#include "net/cookies/cookie_constants.h"
#include "net/cookies/cookie_options.h"
#include "net/cookies/cookie_store.h"
@@ -81,7 +82,7 @@
const GURL& site_for_cookies,
const url::Origin& top_frame_origin,
net::CookieOptions options,
- mojom::CookieChangeListenerPtr mojo_listener)
+ mojo::PendingRemote<mojom::CookieChangeListener> mojo_listener)
: restricted_cookie_manager_(restricted_cookie_manager),
url_(url),
site_for_cookies_(site_for_cookies),
@@ -103,7 +104,7 @@
~Listener() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); }
- mojom::CookieChangeListenerPtr& mojo_listener() {
+ mojo::Remote<mojom::CookieChangeListener>& mojo_listener() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
return mojo_listener_;
}
@@ -148,7 +149,7 @@
// CanonicalCookie::IncludeForRequestURL options for this listener's interest.
const net::CookieOptions options_;
- mojom::CookieChangeListenerPtr mojo_listener_;
+ mojo::Remote<mojom::CookieChangeListener> mojo_listener_;
SEQUENCE_CHECKER(sequence_checker_);
@@ -388,7 +389,7 @@
const GURL& url,
const GURL& site_for_cookies,
const url::Origin& top_frame_origin,
- mojom::CookieChangeListenerPtr mojo_listener,
+ mojo::PendingRemote<mojom::CookieChangeListener> mojo_listener,
AddChangeListenerCallback callback) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
if (!ValidateAccessToCookiesAt(url)) {
@@ -402,7 +403,7 @@
cookie_store_, this, url, site_for_cookies, top_frame_origin, net_options,
std::move(mojo_listener));
- listener->mojo_listener().set_connection_error_handler(
+ listener->mojo_listener().set_disconnect_handler(
base::BindOnce(&RestrictedCookieManager::RemoveChangeListener,
weak_ptr_factory_.GetWeakPtr(),
// Safe because this owns the listener, so the listener is
diff --git a/services/network/restricted_cookie_manager.h b/services/network/restricted_cookie_manager.h
index 0eb1cc7..3d7d8358 100644
--- a/services/network/restricted_cookie_manager.h
+++ b/services/network/restricted_cookie_manager.h
@@ -13,7 +13,6 @@
#include "base/memory/weak_ptr.h"
#include "base/sequence_checker.h"
#include "base/threading/sequenced_task_runner_handle.h"
-#include "mojo/public/cpp/bindings/binding.h"
#include "net/cookies/canonical_cookie.h"
#include "net/cookies/cookie_change_dispatcher.h"
#include "net/cookies/cookie_store.h"
@@ -70,11 +69,12 @@
const url::Origin& top_frame_origin,
SetCanonicalCookieCallback callback) override;
- void AddChangeListener(const GURL& url,
- const GURL& site_for_cookies,
- const url::Origin& top_frame_origin,
- mojom::CookieChangeListenerPtr listener,
- AddChangeListenerCallback callback) override;
+ void AddChangeListener(
+ const GURL& url,
+ const GURL& site_for_cookies,
+ const url::Origin& top_frame_origin,
+ mojo::PendingRemote<mojom::CookieChangeListener> listener,
+ AddChangeListenerCallback callback) override;
void SetCookieFromString(const GURL& url,
const GURL& site_for_cookies,
diff --git a/services/network/restricted_cookie_manager_unittest.cc b/services/network/restricted_cookie_manager_unittest.cc
index 105b05c..164f25f 100644
--- a/services/network/restricted_cookie_manager_unittest.cc
+++ b/services/network/restricted_cookie_manager_unittest.cc
@@ -13,6 +13,8 @@
#include "base/test/scoped_task_environment.h"
#include "base/time/time.h"
#include "mojo/core/embedder/embedder.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/receiver.h"
#include "net/base/features.h"
#include "net/cookies/canonical_cookie_test_helpers.h"
#include "net/cookies/cookie_constants.h"
@@ -138,9 +140,10 @@
return result;
}
- void AddChangeListener(const GURL& url,
- const GURL& site_for_cookies,
- mojom::CookieChangeListenerPtr listener) {
+ void AddChangeListener(
+ const GURL& url,
+ const GURL& site_for_cookies,
+ mojo::PendingRemote<mojom::CookieChangeListener> listener) {
base::RunLoop run_loop;
cookie_service_->AddChangeListener(
url, site_for_cookies, url::Origin::Create(site_for_cookies),
@@ -725,8 +728,9 @@
network::mojom::CookieChangeCause change_cause;
};
- TestCookieChangeListener(network::mojom::CookieChangeListenerRequest request)
- : binding_(this, std::move(request)) {}
+ TestCookieChangeListener(
+ mojo::PendingReceiver<network::mojom::CookieChangeListener> receiver)
+ : receiver_(this, std::move(receiver)) {}
~TestCookieChangeListener() override = default;
// Spin in a run loop until a change is received.
@@ -753,7 +757,7 @@
private:
std::vector<Change> observed_changes_;
- mojo::Binding<network::mojom::CookieChangeListener> binding_;
+ mojo::Receiver<network::mojom::CookieChangeListener> receiver_;
// If not null, will be stopped when a cookie change notification is received.
base::RunLoop* run_loop_ = nullptr;
@@ -762,13 +766,13 @@
} // anonymous namespace
TEST_P(RestrictedCookieManagerTest, ChangeDispatch) {
- network::mojom::CookieChangeListenerPtr listener_ptr;
- network::mojom::CookieChangeListenerRequest request =
- mojo::MakeRequest(&listener_ptr);
+ mojo::PendingRemote<network::mojom::CookieChangeListener> listener_remote;
+ mojo::PendingReceiver<network::mojom::CookieChangeListener> receiver =
+ listener_remote.InitWithNewPipeAndPassReceiver();
sync_service_->AddChangeListener(GURL("http://example.com/test/"),
GURL("http://example.com"),
- std::move(listener_ptr));
- TestCookieChangeListener listener(std::move(request));
+ std::move(listener_remote));
+ TestCookieChangeListener listener(std::move(receiver));
ASSERT_THAT(listener.observed_changes(), testing::SizeIs(0));
@@ -783,13 +787,13 @@
}
TEST_P(RestrictedCookieManagerTest, ChangeSettings) {
- network::mojom::CookieChangeListenerPtr listener_ptr;
- network::mojom::CookieChangeListenerRequest request =
- mojo::MakeRequest(&listener_ptr);
+ mojo::PendingRemote<network::mojom::CookieChangeListener> listener_remote;
+ mojo::PendingReceiver<network::mojom::CookieChangeListener> receiver =
+ listener_remote.InitWithNewPipeAndPassReceiver();
sync_service_->AddChangeListener(GURL("http://example.com/test/"),
GURL("http://notexample.com"),
- std::move(listener_ptr));
- TestCookieChangeListener listener(std::move(request));
+ std::move(listener_remote));
+ TestCookieChangeListener listener(std::move(receiver));
ASSERT_THAT(listener.observed_changes(), testing::SizeIs(0));
@@ -800,23 +804,24 @@
}
TEST_P(RestrictedCookieManagerTest, AddChangeListenerFromWrongOrigin) {
- network::mojom::CookieChangeListenerPtr bad_listener_ptr;
- network::mojom::CookieChangeListenerRequest bad_request =
- mojo::MakeRequest(&bad_listener_ptr);
+ mojo::PendingRemote<network::mojom::CookieChangeListener> bad_listener_remote;
+ mojo::PendingReceiver<network::mojom::CookieChangeListener> bad_receiver =
+ bad_listener_remote.InitWithNewPipeAndPassReceiver();
ExpectBadMessage();
sync_service_->AddChangeListener(GURL("http://not-example.com/test/"),
GURL("http://not-example.com"),
- std::move(bad_listener_ptr));
+ std::move(bad_listener_remote));
EXPECT_TRUE(received_bad_message());
- TestCookieChangeListener bad_listener(std::move(bad_request));
+ TestCookieChangeListener bad_listener(std::move(bad_receiver));
- network::mojom::CookieChangeListenerPtr good_listener_ptr;
- network::mojom::CookieChangeListenerRequest good_request =
- mojo::MakeRequest(&good_listener_ptr);
+ mojo::PendingRemote<network::mojom::CookieChangeListener>
+ good_listener_remote;
+ mojo::PendingReceiver<network::mojom::CookieChangeListener> good_receiver =
+ good_listener_remote.InitWithNewPipeAndPassReceiver();
sync_service_->AddChangeListener(GURL("http://example.com/test/"),
GURL("http://example.com"),
- std::move(good_listener_ptr));
- TestCookieChangeListener good_listener(std::move(good_request));
+ std::move(good_listener_remote));
+ TestCookieChangeListener good_listener(std::move(good_receiver));
ASSERT_THAT(bad_listener.observed_changes(), testing::SizeIs(0));
ASSERT_THAT(good_listener.observed_changes(), testing::SizeIs(0));
diff --git a/services/network/test/test_cookie_manager.cc b/services/network/test/test_cookie_manager.cc
index c4edc07..ac231fe 100644
--- a/services/network/test/test_cookie_manager.cc
+++ b/services/network/test/test_cookie_manager.cc
@@ -29,8 +29,10 @@
void TestCookieManager::AddCookieChangeListener(
const GURL& url,
const base::Optional<std::string>& name,
- network::mojom::CookieChangeListenerPtr listener) {
- cookie_change_listeners_.push_back(std::move(listener));
+ mojo::PendingRemote<network::mojom::CookieChangeListener> listener) {
+ mojo::Remote<network::mojom::CookieChangeListener> listener_remote(
+ std::move(listener));
+ cookie_change_listeners_.push_back(std::move(listener_remote));
}
void TestCookieManager::DispatchCookieChange(
diff --git a/services/network/test/test_cookie_manager.h b/services/network/test/test_cookie_manager.h
index 1a9569bd..655dc70b 100644
--- a/services/network/test/test_cookie_manager.h
+++ b/services/network/test/test_cookie_manager.h
@@ -10,6 +10,7 @@
#include "base/callback_forward.h"
#include "base/macros.h"
+#include "mojo/public/cpp/bindings/remote.h"
#include "services/network/public/mojom/cookie_manager.mojom.h"
namespace network {
@@ -36,9 +37,11 @@
void AddCookieChangeListener(
const GURL& url,
const base::Optional<std::string>& name,
- network::mojom::CookieChangeListenerPtr listener) override;
+ mojo::PendingRemote<network::mojom::CookieChangeListener> listener)
+ override;
void AddGlobalChangeListener(
- network::mojom::CookieChangeListenerPtr notification_pointer) override {}
+ mojo::PendingRemote<network::mojom::CookieChangeListener>
+ notification_pointer) override {}
void CloneInterface(
network::mojom::CookieManagerRequest new_interface) override {}
void FlushCookieStore(FlushCookieStoreCallback callback) override {}
@@ -57,7 +60,8 @@
private:
// List of observers receiving cookie change notifications.
- std::vector<network::mojom::CookieChangeListenerPtr> cookie_change_listeners_;
+ std::vector<mojo::Remote<network::mojom::CookieChangeListener>>
+ cookie_change_listeners_;
};
} // namespace network
diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_store.cc b/third_party/blink/renderer/modules/cookie_store/cookie_store.cc
index 3be8761..47a43c3c 100644
--- a/third_party/blink/renderer/modules/cookie_store/cookie_store.cc
+++ b/third_party/blink/renderer/modules/cookie_store/cookie_store.cc
@@ -461,7 +461,6 @@
: ContextLifecycleObserver(execution_context),
backend_(std::move(backend)),
subscription_backend_(std::move(subscription_backend)),
- change_listener_binding_(this),
default_cookie_url_(DefaultCookieURL(execution_context)),
default_site_for_cookies_(DefaultSiteForCookies(execution_context)),
default_top_frame_origin_(DefaultTopFrameOrigin(execution_context)) {
@@ -617,24 +616,21 @@
}
void CookieStore::StartObserving() {
- if (change_listener_binding_ || !backend_)
+ if (change_listener_receiver_.is_bound() || !backend_)
return;
// See https://bit.ly/2S0zRAS for task types.
auto task_runner =
GetExecutionContext()->GetTaskRunner(TaskType::kMiscPlatformAPI);
- network::mojom::blink::CookieChangeListenerPtr change_listener;
- change_listener_binding_.Bind(
- mojo::MakeRequest(&change_listener, task_runner), task_runner);
- backend_->AddChangeListener(default_cookie_url_, default_site_for_cookies_,
- default_top_frame_origin_,
- std::move(change_listener), {});
+ backend_->AddChangeListener(
+ default_cookie_url_, default_site_for_cookies_, default_top_frame_origin_,
+ change_listener_receiver_.BindNewPipeAndPassRemote(task_runner), {});
}
void CookieStore::StopObserving() {
- if (!change_listener_binding_.is_bound())
+ if (!change_listener_receiver_.is_bound())
return;
- change_listener_binding_.Close();
+ change_listener_receiver_.reset();
}
} // namespace blink
diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_store.h b/third_party/blink/renderer/modules/cookie_store/cookie_store.h
index 7d468b4c..606218e 100644
--- a/third_party/blink/renderer/modules/cookie_store/cookie_store.h
+++ b/third_party/blink/renderer/modules/cookie_store/cookie_store.h
@@ -5,7 +5,7 @@
#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_COOKIE_STORE_COOKIE_STORE_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_COOKIE_STORE_COOKIE_STORE_H_
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/network/public/mojom/restricted_cookie_manager.mojom-blink.h"
#include "third_party/blink/public/mojom/cookie_store/cookie_store.mojom-blink.h"
@@ -156,11 +156,11 @@
// Wraps a Mojo pipe used to receive cookie change notifications.
//
- // This binding is set up on-demand, when the cookie store has at least one
- // change event listener. If all the listeners are unregistered, the binding
+ // This receiver is set up on-demand, when the cookie store has at least one
+ // change event listener. If all the listeners are unregistered, the receiver
// is torn down.
- mojo::Binding<network::mojom::blink::CookieChangeListener>
- change_listener_binding_;
+ mojo::Receiver<network::mojom::blink::CookieChangeListener>
+ change_listener_receiver_{this};
// Default for cookie_url in CookieStoreGetOptions.
//