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

Convert FeatureStateObserver to new Mojo types

This CL converts FeatureStateObserverPtr and
FeatureStateObserverRequest to new Mojo types
using PendingRemote, PendingReceiver, ReceiverSet,
RemoteSet, and Receiver.

It also updates AddFeatureStateObserver from
multidevice_setup.mojom.

Bug: 955171
Change-Id: I94c6d61500a7f142c58153ce20d225f27f4e3135
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1827259
Commit-Queue: Julie Kim <jkim@igalia.com>
Reviewed-by: default avatarRyan Hansberry <hansberry@chromium.org>
Reviewed-by: default avatarSam McNally <sammc@chromium.org>
Reviewed-by: default avatarOksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#701026}
parent df801314
......@@ -12,11 +12,11 @@ FakeFeatureStateObserver::FakeFeatureStateObserver() = default;
FakeFeatureStateObserver::~FakeFeatureStateObserver() = default;
mojom::FeatureStateObserverPtr
FakeFeatureStateObserver::GenerateInterfacePtr() {
mojom::FeatureStateObserverPtr interface_ptr;
bindings_.AddBinding(this, mojo::MakeRequest(&interface_ptr));
return interface_ptr;
mojo::PendingRemote<mojom::FeatureStateObserver>
FakeFeatureStateObserver::GenerateRemote() {
mojo::PendingRemote<mojom::FeatureStateObserver> remote;
receivers_.Add(this, remote.InitWithNewPipeAndPassReceiver());
return remote;
}
void FakeFeatureStateObserver::OnFeatureStatesChanged(
......
......@@ -9,7 +9,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 {
......@@ -21,7 +22,7 @@ class FakeFeatureStateObserver : public mojom::FeatureStateObserver {
FakeFeatureStateObserver();
~FakeFeatureStateObserver() override;
mojom::FeatureStateObserverPtr GenerateInterfacePtr();
mojo::PendingRemote<mojom::FeatureStateObserver> GenerateRemote();
const std::vector<base::flat_map<mojom::Feature, mojom::FeatureState>>&
feature_state_updates() {
......@@ -37,7 +38,7 @@ class FakeFeatureStateObserver : public mojom::FeatureStateObserver {
std::vector<base::flat_map<mojom::Feature, mojom::FeatureState>>
feature_state_updates_;
mojo::BindingSet<mojom::FeatureStateObserver> bindings_;
mojo::ReceiverSet<mojom::FeatureStateObserver> receivers_;
DISALLOW_COPY_AND_ASSIGN(FakeFeatureStateObserver);
};
......
......@@ -167,8 +167,8 @@ void MultiDeviceSetupImpl::AddHostStatusObserver(
}
void MultiDeviceSetupImpl::AddFeatureStateObserver(
mojom::FeatureStateObserverPtr observer) {
feature_state_observers_.AddPtr(std::move(observer));
mojo::PendingRemote<mojom::FeatureStateObserver> observer) {
feature_state_observers_.Add(std::move(observer));
}
void MultiDeviceSetupImpl::GetEligibleHostDevices(
......@@ -331,10 +331,8 @@ void MultiDeviceSetupImpl::OnHostStatusChange(
void MultiDeviceSetupImpl::OnFeatureStatesChange(
const FeatureStateManager::FeatureStatesMap& feature_states_map) {
feature_state_observers_.ForAllPtrs(
[&feature_states_map](mojom::FeatureStateObserver* observer) {
observer->OnFeatureStatesChanged(feature_states_map);
});
for (auto& observer : feature_state_observers_)
observer->OnFeatureStatesChanged(feature_states_map);
}
bool MultiDeviceSetupImpl::AttemptSetHost(const std::string& host_device_id) {
......
......@@ -12,8 +12,6 @@
#include "chromeos/services/multidevice_setup/host_status_provider.h"
#include "chromeos/services/multidevice_setup/multidevice_setup_base.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/interface_ptr_set.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/remote_set.h"
#include "url/gurl.h"
......@@ -87,7 +85,7 @@ class MultiDeviceSetupImpl : public MultiDeviceSetupBase,
void AddHostStatusObserver(
mojo::PendingRemote<mojom::HostStatusObserver> observer) override;
void AddFeatureStateObserver(
mojom::FeatureStateObserverPtr observer) override;
mojo::PendingRemote<mojom::FeatureStateObserver> observer) override;
void GetEligibleHostDevices(GetEligibleHostDevicesCallback callback) override;
void SetHostDevice(const std::string& host_device_id,
const std::string& auth_token,
......@@ -141,7 +139,7 @@ class MultiDeviceSetupImpl : public MultiDeviceSetupBase,
AuthTokenValidator* auth_token_validator_;
mojo::RemoteSet<mojom::HostStatusObserver> host_status_observers_;
mojo::InterfacePtrSet<mojom::FeatureStateObserver> feature_state_observers_;
mojo::RemoteSet<mojom::FeatureStateObserver> feature_state_observers_;
DISALLOW_COPY_AND_ASSIGN(MultiDeviceSetupImpl);
};
......
......@@ -947,8 +947,7 @@ TEST_F(MultiDeviceSetupImplTest, AccountStatusChangeDelegate) {
// because it never requires authentication for either enabling or disabling.
TEST_F(MultiDeviceSetupImplTest, FeatureStateChanges_NoAuthTokenRequired) {
auto observer = std::make_unique<FakeFeatureStateObserver>();
multidevice_setup()->AddFeatureStateObserver(
observer->GenerateInterfacePtr());
multidevice_setup()->AddFeatureStateObserver(observer->GenerateRemote());
EXPECT_EQ(mojom::FeatureState::kUnavailableNoVerifiedHost,
CallGetFeatureStates()[mojom::Feature::kInstantTethering]);
......@@ -981,8 +980,7 @@ TEST_F(MultiDeviceSetupImplTest, FeatureStateChanges_NoAuthTokenRequired) {
TEST_F(MultiDeviceSetupImplTest,
FeatureStateChanges_AuthTokenRequired_SmartLock) {
auto observer = std::make_unique<FakeFeatureStateObserver>();
multidevice_setup()->AddFeatureStateObserver(
observer->GenerateInterfacePtr());
multidevice_setup()->AddFeatureStateObserver(observer->GenerateRemote());
EXPECT_EQ(mojom::FeatureState::kUnavailableNoVerifiedHost,
CallGetFeatureStates()[mojom::Feature::kSmartLock]);
......@@ -1025,8 +1023,7 @@ TEST_F(MultiDeviceSetupImplTest,
TEST_F(MultiDeviceSetupImplTest,
FeatureStateChanges_AuthTokenRequired_BetterTogetherSuite) {
auto observer = std::make_unique<FakeFeatureStateObserver>();
multidevice_setup()->AddFeatureStateObserver(
observer->GenerateInterfacePtr());
multidevice_setup()->AddFeatureStateObserver(observer->GenerateRemote());
EXPECT_EQ(mojom::FeatureState::kUnavailableNoVerifiedHost,
CallGetFeatureStates()[mojom::Feature::kBetterTogetherSuite]);
......
......@@ -119,7 +119,7 @@ void MultiDeviceSetupInitializer::AddHostStatusObserver(
}
void MultiDeviceSetupInitializer::AddFeatureStateObserver(
mojom::FeatureStateObserverPtr observer) {
mojo::PendingRemote<mojom::FeatureStateObserver> observer) {
if (multidevice_setup_impl_) {
multidevice_setup_impl_->AddFeatureStateObserver(std::move(observer));
return;
......
......@@ -93,7 +93,7 @@ class MultiDeviceSetupInitializer
void AddHostStatusObserver(
mojo::PendingRemote<mojom::HostStatusObserver> observer) override;
void AddFeatureStateObserver(
mojom::FeatureStateObserverPtr observer) override;
mojo::PendingRemote<mojom::FeatureStateObserver> observer) override;
void GetEligibleHostDevices(GetEligibleHostDevicesCallback callback) override;
void SetHostDevice(const std::string& host_device_id,
const std::string& auth_token,
......@@ -137,7 +137,8 @@ class MultiDeviceSetupInitializer
mojo::PendingRemote<mojom::AccountStatusChangeDelegate> pending_delegate_;
std::vector<mojo::PendingRemote<mojom::HostStatusObserver>>
pending_host_status_observers_;
std::vector<mojom::FeatureStateObserverPtr> pending_feature_state_observers_;
std::vector<mojo::PendingRemote<mojom::FeatureStateObserver>>
pending_feature_state_observers_;
std::vector<GetEligibleHostDevicesCallback> pending_get_eligible_hosts_args_;
std::vector<GetHostStatusCallback> pending_get_host_args_;
std::vector<std::tuple<mojom::Feature,
......
......@@ -256,7 +256,7 @@ TEST_F(MultiDeviceSetupServiceTest, CallFunctionsBeforeInitialization) {
auto fake_feature_state_observer =
std::make_unique<FakeFeatureStateObserver>();
multidevice_setup_ptr()->AddFeatureStateObserver(
fake_feature_state_observer->GenerateInterfacePtr());
fake_feature_state_observer->GenerateRemote());
multidevice_setup_ptr().FlushForTesting();
// GetEligibleHostDevices().
......@@ -403,7 +403,7 @@ TEST_F(MultiDeviceSetupServiceTest, FinishInitializationFirst) {
auto fake_feature_state_observer =
std::make_unique<FakeFeatureStateObserver>();
multidevice_setup_ptr()->AddFeatureStateObserver(
fake_feature_state_observer->GenerateInterfacePtr());
fake_feature_state_observer->GenerateRemote());
multidevice_setup_ptr().FlushForTesting();
EXPECT_TRUE(fake_multidevice_setup()->HasAtLeastOneFeatureStateObserver());
......
......@@ -89,10 +89,8 @@ void FakeMultiDeviceSetup::NotifyHostStatusChanged(
void FakeMultiDeviceSetup::NotifyFeatureStateChanged(
const base::flat_map<mojom::Feature, mojom::FeatureState>&
feature_states_map) {
feature_state_observers_.ForAllPtrs(
[&feature_states_map](mojom::FeatureStateObserver* observer) {
observer->OnFeatureStatesChanged(feature_states_map);
});
for (auto& observer : feature_state_observers_)
observer->OnFeatureStatesChanged(feature_states_map);
}
void FakeMultiDeviceSetup::SetAccountStatusChangeDelegate(
......@@ -106,8 +104,8 @@ void FakeMultiDeviceSetup::AddHostStatusObserver(
}
void FakeMultiDeviceSetup::AddFeatureStateObserver(
mojom::FeatureStateObserverPtr observer) {
feature_state_observers_.AddPtr(std::move(observer));
mojo::PendingRemote<mojom::FeatureStateObserver> observer) {
feature_state_observers_.Add(std::move(observer));
}
void FakeMultiDeviceSetup::GetEligibleHostDevices(
......
......@@ -12,7 +12,6 @@
#include "chromeos/services/multidevice_setup/multidevice_setup_base.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/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"
......@@ -94,7 +93,7 @@ class FakeMultiDeviceSetup : public MultiDeviceSetupBase {
void AddHostStatusObserver(
mojo::PendingRemote<mojom::HostStatusObserver> observer) override;
void AddFeatureStateObserver(
mojom::FeatureStateObserverPtr observer) override;
mojo::PendingRemote<mojom::FeatureStateObserver> observer) override;
void GetEligibleHostDevices(GetEligibleHostDevicesCallback callback) override;
void SetHostDevice(const std::string& host_device_id,
const std::string& auth_token,
......@@ -119,7 +118,7 @@ class FakeMultiDeviceSetup : public MultiDeviceSetupBase {
mojo::Remote<mojom::AccountStatusChangeDelegate> delegate_;
mojo::RemoteSet<mojom::HostStatusObserver> host_status_observers_;
mojo::InterfacePtrSet<mojom::FeatureStateObserver> feature_state_observers_;
mojo::RemoteSet<mojom::FeatureStateObserver> feature_state_observers_;
std::vector<GetEligibleHostDevicesCallback> get_eligible_hosts_args_;
std::vector<std::tuple<std::string, std::string, SetHostDeviceCallback>>
......
......@@ -48,8 +48,7 @@ MultiDeviceSetupClientImpl::Factory::BuildInstance(
MultiDeviceSetupClientImpl::MultiDeviceSetupClientImpl(
service_manager::Connector* connector)
: feature_state_observer_binding_(this),
remote_device_cache_(
: remote_device_cache_(
multidevice::RemoteDeviceCache::Factory::Get()->BuildInstance()),
host_status_with_device_(GenerateDefaultHostStatusWithDevice()),
feature_states_map_(GenerateDefaultFeatureStatesMap()) {
......@@ -57,7 +56,7 @@ MultiDeviceSetupClientImpl::MultiDeviceSetupClientImpl(
multidevice_setup_ptr_->AddHostStatusObserver(
GenerateHostStatusObserverRemote());
multidevice_setup_ptr_->AddFeatureStateObserver(
GenerateFeatureStatesObserverInterfacePtr());
GenerateFeatureStatesObserverRemote());
multidevice_setup_ptr_->GetHostStatus(
base::BindOnce(&MultiDeviceSetupClientImpl::OnHostStatusChanged,
base::Unretained(this)));
......@@ -160,11 +159,9 @@ MultiDeviceSetupClientImpl::GenerateHostStatusObserverRemote() {
return host_status_observer_receiver_.BindNewPipeAndPassRemote();
}
mojom::FeatureStateObserverPtr
MultiDeviceSetupClientImpl::GenerateFeatureStatesObserverInterfacePtr() {
mojom::FeatureStateObserverPtr interface_ptr;
feature_state_observer_binding_.Bind(mojo::MakeRequest(&interface_ptr));
return interface_ptr;
mojo::PendingRemote<mojom::FeatureStateObserver>
MultiDeviceSetupClientImpl::GenerateFeatureStatesObserverRemote() {
return feature_state_observer_receiver_.BindNewPipeAndPassRemote();
}
void MultiDeviceSetupClientImpl::FlushForTesting() {
......
......@@ -16,7 +16,6 @@
#include "chromeos/components/multidevice/remote_device_ref.h"
#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"
......@@ -89,14 +88,16 @@ class MultiDeviceSetupClientImpl : public MultiDeviceSetupClient,
mojo::PendingRemote<mojom::HostStatusObserver>
GenerateHostStatusObserverRemote();
mojom::FeatureStateObserverPtr GenerateFeatureStatesObserverInterfacePtr();
mojo::PendingRemote<mojom::FeatureStateObserver>
GenerateFeatureStatesObserverRemote();
void FlushForTesting();
mojom::MultiDeviceSetupPtr multidevice_setup_ptr_;
mojo::Receiver<mojom::HostStatusObserver> host_status_observer_receiver_{
this};
mojo::Binding<mojom::FeatureStateObserver> feature_state_observer_binding_;
mojo::Receiver<mojom::FeatureStateObserver> feature_state_observer_receiver_{
this};
std::unique_ptr<multidevice::RemoteDeviceCache> remote_device_cache_;
HostStatusWithDevice host_status_with_device_;
......
......@@ -146,8 +146,8 @@ interface MultiDeviceSetup {
AddHostStatusObserver(pending_remote<HostStatusObserver> observer);
// Adds an observer of feature state changes. To stop observing, disconnect
// the FeatureStateObserverPtr passed here.
AddFeatureStateObserver(FeatureStateObserver observer);
// the pending_remote<FeatureStateObserver> passed here.
AddFeatureStateObserver(pending_remote<FeatureStateObserver> observer);
// Provides a list of all eligible host devices (i.e., those which can be
// passed to SetHostDevice()).
......
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