Commit 9d90a6d6 authored by Julie Jeongeun Kim's avatar Julie Jeongeun Kim Committed by Commit Bot

Convert HostStatusObserver to new Mojo types

This CL converts HostStatusObserverPtr and
HostStatusObserverRequest to new Mojo types
using PendingRemote, Remote, RemoteSet,
and ReceiverSet.

It also update AddHostStatusObserver from
multidevice_setup.mojom.

Bug: 955171
Change-Id: Ifde21a3512beaf4d67f0bbd03a719ad148cd3ab0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1824725
Commit-Queue: Julie Kim <jkim@igalia.com>
Reviewed-by: default avatarRyan Hansberry <hansberry@chromium.org>
Reviewed-by: default avatarOksana Zhuravlova <oksamyt@chromium.org>
Reviewed-by: default avatarSam McNally <sammc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#700115}
parent ed503f03
......@@ -12,10 +12,11 @@ FakeHostStatusObserver::FakeHostStatusObserver() = default;
FakeHostStatusObserver::~FakeHostStatusObserver() = default;
mojom::HostStatusObserverPtr FakeHostStatusObserver::GenerateInterfacePtr() {
mojom::HostStatusObserverPtr interface_ptr;
bindings_.AddBinding(this, mojo::MakeRequest(&interface_ptr));
return interface_ptr;
mojo::PendingRemote<mojom::HostStatusObserver>
FakeHostStatusObserver::GenerateRemote() {
mojo::PendingRemote<mojom::HostStatusObserver> remote;
receivers_.Add(this, remote.InitWithNewPipeAndPassReceiver());
return remote;
}
void FakeHostStatusObserver::OnHostStatusChanged(
......
......@@ -8,7 +8,8 @@
#include "base/macros.h"
#include "base/optional.h"
#include "chromeos/services/multidevice_setup/public/mojom/multidevice_setup.mojom.h"
#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver_set.h"
namespace chromeos {
......@@ -20,7 +21,7 @@ class FakeHostStatusObserver : public mojom::HostStatusObserver {
FakeHostStatusObserver();
~FakeHostStatusObserver() override;
mojom::HostStatusObserverPtr GenerateInterfacePtr();
mojo::PendingRemote<mojom::HostStatusObserver> GenerateRemote();
const std::vector<
std::pair<mojom::HostStatus, base::Optional<multidevice::RemoteDevice>>>&
......@@ -38,7 +39,7 @@ class FakeHostStatusObserver : public mojom::HostStatusObserver {
std::pair<mojom::HostStatus, base::Optional<multidevice::RemoteDevice>>>
host_status_updates_;
mojo::BindingSet<mojom::HostStatusObserver> bindings_;
mojo::ReceiverSet<mojom::HostStatusObserver> receivers_;
DISALLOW_COPY_AND_ASSIGN(FakeHostStatusObserver);
};
......
......@@ -162,8 +162,8 @@ void MultiDeviceSetupImpl::SetAccountStatusChangeDelegate(
}
void MultiDeviceSetupImpl::AddHostStatusObserver(
mojom::HostStatusObserverPtr observer) {
host_status_observers_.AddPtr(std::move(observer));
mojo::PendingRemote<mojom::HostStatusObserver> observer) {
host_status_observers_.Add(std::move(observer));
}
void MultiDeviceSetupImpl::AddFeatureStateObserver(
......@@ -325,11 +325,8 @@ void MultiDeviceSetupImpl::OnHostStatusChange(
host_status_with_device.host_device()->GetRemoteDevice();
}
host_status_observers_.ForAllPtrs(
[&status_for_callback,
&device_for_callback](mojom::HostStatusObserver* observer) {
observer->OnHostStatusChanged(status_for_callback, device_for_callback);
});
for (auto& observer : host_status_observers_)
observer->OnHostStatusChanged(status_for_callback, device_for_callback);
}
void MultiDeviceSetupImpl::OnFeatureStatesChange(
......
......@@ -15,6 +15,7 @@
#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/interface_ptr_set.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/remote_set.h"
#include "url/gurl.h"
class PrefService;
......@@ -83,7 +84,8 @@ class MultiDeviceSetupImpl : public MultiDeviceSetupBase,
void SetAccountStatusChangeDelegate(
mojo::PendingRemote<mojom::AccountStatusChangeDelegate> delegate)
override;
void AddHostStatusObserver(mojom::HostStatusObserverPtr observer) override;
void AddHostStatusObserver(
mojo::PendingRemote<mojom::HostStatusObserver> observer) override;
void AddFeatureStateObserver(
mojom::FeatureStateObserverPtr observer) override;
void GetEligibleHostDevices(GetEligibleHostDevicesCallback callback) override;
......@@ -138,7 +140,7 @@ class MultiDeviceSetupImpl : public MultiDeviceSetupBase,
android_sms_app_installing_host_observer_;
AuthTokenValidator* auth_token_validator_;
mojo::InterfacePtrSet<mojom::HostStatusObserver> host_status_observers_;
mojo::RemoteSet<mojom::HostStatusObserver> host_status_observers_;
mojo::InterfacePtrSet<mojom::FeatureStateObserver> feature_state_observers_;
DISALLOW_COPY_AND_ASSIGN(MultiDeviceSetupImpl);
......
......@@ -1111,7 +1111,7 @@ TEST_F(MultiDeviceSetupImplTest, ComprehensiveHostTest) {
// Add a status observer.
auto observer = std::make_unique<FakeHostStatusObserver>();
multidevice_setup()->AddHostStatusObserver(observer->GenerateInterfacePtr());
multidevice_setup()->AddHostStatusObserver(observer->GenerateRemote());
// Simulate a sync occurring; now, all of the test devices are eligible hosts.
fake_eligible_host_devices_provider()->set_eligible_host_devices(
......@@ -1202,7 +1202,7 @@ TEST_F(MultiDeviceSetupImplTest, TestSetHostDevice_InvalidAuthToken) {
TEST_F(MultiDeviceSetupImplTest, TestSetHostDeviceWithoutAuthToken) {
// Add a status observer.
auto observer = std::make_unique<FakeHostStatusObserver>();
multidevice_setup()->AddHostStatusObserver(observer->GenerateInterfacePtr());
multidevice_setup()->AddHostStatusObserver(observer->GenerateRemote());
// Start valid eligible host devices.
fake_eligible_host_devices_provider()->set_eligible_host_devices(
......
......@@ -109,7 +109,7 @@ void MultiDeviceSetupInitializer::SetAccountStatusChangeDelegate(
}
void MultiDeviceSetupInitializer::AddHostStatusObserver(
mojom::HostStatusObserverPtr observer) {
mojo::PendingRemote<mojom::HostStatusObserver> observer) {
if (multidevice_setup_impl_) {
multidevice_setup_impl_->AddHostStatusObserver(std::move(observer));
return;
......
......@@ -90,7 +90,8 @@ class MultiDeviceSetupInitializer
void SetAccountStatusChangeDelegate(
mojo::PendingRemote<mojom::AccountStatusChangeDelegate> delegate)
override;
void AddHostStatusObserver(mojom::HostStatusObserverPtr observer) override;
void AddHostStatusObserver(
mojo::PendingRemote<mojom::HostStatusObserver> observer) override;
void AddFeatureStateObserver(
mojom::FeatureStateObserverPtr observer) override;
void GetEligibleHostDevices(GetEligibleHostDevicesCallback callback) override;
......@@ -134,7 +135,8 @@ class MultiDeviceSetupInitializer
// parameters are cached here. Once asynchronous initialization is complete,
// the parameters are passed to |multidevice_setup_impl_|.
mojo::PendingRemote<mojom::AccountStatusChangeDelegate> pending_delegate_;
std::vector<mojom::HostStatusObserverPtr> pending_host_status_observers_;
std::vector<mojo::PendingRemote<mojom::HostStatusObserver>>
pending_host_status_observers_;
std::vector<mojom::FeatureStateObserverPtr> pending_feature_state_observers_;
std::vector<GetEligibleHostDevicesCallback> pending_get_eligible_hosts_args_;
std::vector<GetHostStatusCallback> pending_get_host_args_;
......
......@@ -249,7 +249,7 @@ TEST_F(MultiDeviceSetupServiceTest, CallFunctionsBeforeInitialization) {
// AddHostStatusObserver().
auto fake_host_status_observer = std::make_unique<FakeHostStatusObserver>();
multidevice_setup_ptr()->AddHostStatusObserver(
fake_host_status_observer->GenerateInterfacePtr());
fake_host_status_observer->GenerateRemote());
multidevice_setup_ptr().FlushForTesting();
// AddFeatureStateObserver().
......@@ -395,7 +395,7 @@ TEST_F(MultiDeviceSetupServiceTest, FinishInitializationFirst) {
// AddHostStatusObserver().
auto fake_host_status_observer = std::make_unique<FakeHostStatusObserver>();
multidevice_setup_ptr()->AddHostStatusObserver(
fake_host_status_observer->GenerateInterfacePtr());
fake_host_status_observer->GenerateRemote());
multidevice_setup_ptr().FlushForTesting();
EXPECT_TRUE(fake_multidevice_setup()->HasAtLeastOneHostStatusObserver());
......
......@@ -82,10 +82,8 @@ bool FakeMultiDeviceSetup::HasAtLeastOneFeatureStateObserver() {
void FakeMultiDeviceSetup::NotifyHostStatusChanged(
mojom::HostStatus host_status,
const base::Optional<multidevice::RemoteDevice>& host_device) {
host_status_observers_.ForAllPtrs(
[&host_status, &host_device](mojom::HostStatusObserver* observer) {
observer->OnHostStatusChanged(host_status, host_device);
});
for (auto& observer : host_status_observers_)
observer->OnHostStatusChanged(host_status, host_device);
}
void FakeMultiDeviceSetup::NotifyFeatureStateChanged(
......@@ -103,8 +101,8 @@ void FakeMultiDeviceSetup::SetAccountStatusChangeDelegate(
}
void FakeMultiDeviceSetup::AddHostStatusObserver(
mojom::HostStatusObserverPtr observer) {
host_status_observers_.AddPtr(std::move(observer));
mojo::PendingRemote<mojom::HostStatusObserver> observer) {
host_status_observers_.Add(std::move(observer));
}
void FakeMultiDeviceSetup::AddFeatureStateObserver(
......
......@@ -15,6 +15,7 @@
#include "mojo/public/cpp/bindings/interface_ptr_set.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "mojo/public/cpp/bindings/remote_set.h"
namespace chromeos {
......@@ -90,7 +91,8 @@ class FakeMultiDeviceSetup : public MultiDeviceSetupBase {
void SetAccountStatusChangeDelegate(
mojo::PendingRemote<mojom::AccountStatusChangeDelegate> delegate)
override;
void AddHostStatusObserver(mojom::HostStatusObserverPtr observer) override;
void AddHostStatusObserver(
mojo::PendingRemote<mojom::HostStatusObserver> observer) override;
void AddFeatureStateObserver(
mojom::FeatureStateObserverPtr observer) override;
void GetEligibleHostDevices(GetEligibleHostDevicesCallback callback) override;
......@@ -116,7 +118,7 @@ class FakeMultiDeviceSetup : public MultiDeviceSetupBase {
override;
mojo::Remote<mojom::AccountStatusChangeDelegate> delegate_;
mojo::InterfacePtrSet<mojom::HostStatusObserver> host_status_observers_;
mojo::RemoteSet<mojom::HostStatusObserver> host_status_observers_;
mojo::InterfacePtrSet<mojom::FeatureStateObserver> feature_state_observers_;
std::vector<GetEligibleHostDevicesCallback> get_eligible_hosts_args_;
......
......@@ -48,15 +48,14 @@ MultiDeviceSetupClientImpl::Factory::BuildInstance(
MultiDeviceSetupClientImpl::MultiDeviceSetupClientImpl(
service_manager::Connector* connector)
: host_status_observer_binding_(this),
feature_state_observer_binding_(this),
: feature_state_observer_binding_(this),
remote_device_cache_(
multidevice::RemoteDeviceCache::Factory::Get()->BuildInstance()),
host_status_with_device_(GenerateDefaultHostStatusWithDevice()),
feature_states_map_(GenerateDefaultFeatureStatesMap()) {
connector->BindInterface(mojom::kServiceName, &multidevice_setup_ptr_);
multidevice_setup_ptr_->AddHostStatusObserver(
GenerateHostStatusObserverInterfacePtr());
GenerateHostStatusObserverRemote());
multidevice_setup_ptr_->AddFeatureStateObserver(
GenerateFeatureStatesObserverInterfacePtr());
multidevice_setup_ptr_->GetHostStatus(
......@@ -156,11 +155,9 @@ void MultiDeviceSetupClientImpl::OnGetEligibleHostDevicesCompleted(
std::move(callback).Run(eligible_host_device_refs);
}
mojom::HostStatusObserverPtr
MultiDeviceSetupClientImpl::GenerateHostStatusObserverInterfacePtr() {
mojom::HostStatusObserverPtr interface_ptr;
host_status_observer_binding_.Bind(mojo::MakeRequest(&interface_ptr));
return interface_ptr;
mojo::PendingRemote<mojom::HostStatusObserver>
MultiDeviceSetupClientImpl::GenerateHostStatusObserverRemote() {
return host_status_observer_receiver_.BindNewPipeAndPassRemote();
}
mojom::FeatureStateObserverPtr
......
......@@ -17,6 +17,8 @@
#include "chromeos/services/multidevice_setup/public/cpp/multidevice_setup_client.h"
#include "chromeos/services/multidevice_setup/public/mojom/multidevice_setup.mojom.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver.h"
namespace service_manager {
class Connector;
......@@ -85,13 +87,15 @@ class MultiDeviceSetupClientImpl : public MultiDeviceSetupClient,
GetEligibleHostDevicesCallback callback,
const multidevice::RemoteDeviceList& eligible_host_devices);
mojom::HostStatusObserverPtr GenerateHostStatusObserverInterfacePtr();
mojo::PendingRemote<mojom::HostStatusObserver>
GenerateHostStatusObserverRemote();
mojom::FeatureStateObserverPtr GenerateFeatureStatesObserverInterfacePtr();
void FlushForTesting();
mojom::MultiDeviceSetupPtr multidevice_setup_ptr_;
mojo::Binding<mojom::HostStatusObserver> host_status_observer_binding_;
mojo::Receiver<mojom::HostStatusObserver> host_status_observer_receiver_{
this};
mojo::Binding<mojom::FeatureStateObserver> feature_state_observer_binding_;
std::unique_ptr<multidevice::RemoteDeviceCache> remote_device_cache_;
......
......@@ -142,8 +142,8 @@ interface MultiDeviceSetup {
pending_remote<AccountStatusChangeDelegate> delegate);
// Adds an observer of host status changes. To stop observing, disconnect the
// HostStatusObserverPtr passed here.
AddHostStatusObserver(HostStatusObserver observer);
// pending_remote<HostStatusObserver> passed here.
AddHostStatusObserver(pending_remote<HostStatusObserver> observer);
// Adds an observer of feature state changes. To stop observing, disconnect
// the FeatureStateObserverPtr passed here.
......
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