Commit 03ba455c authored by Abhijeet Kandalkar's avatar Abhijeet Kandalkar Committed by Commit Bot

Use new mojo types for service_manager.mojom

This CL converts ServiceManagerListener{Ptr, Request} and
ServiceManagerPtr and port depending files to adapt to new
mojo types.

Bug: 955171, 978694
Change-Id: Ic3cda1b527d3f164caf717c982dbb04b09595c48
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1865218
Commit-Queue: Abhijeet Kandalkar <abhijeet@igalia.com>
Reviewed-by: default avatarKen Rockot <rockot@google.com>
Reviewed-by: default avatarAvi Drissman <avi@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#707782}
parent c340174a
...@@ -7,22 +7,25 @@ ...@@ -7,22 +7,25 @@
#include "base/run_loop.h" #include "base/run_loop.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/browser/system_connector.h" #include "content/public/browser/system_connector.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/service_manager/public/cpp/connector.h" #include "services/service_manager/public/cpp/connector.h"
TestServiceManagerListener::TestServiceManagerListener() : binding_(this) {} TestServiceManagerListener::TestServiceManagerListener() : receiver_(this) {}
TestServiceManagerListener::~TestServiceManagerListener() {} TestServiceManagerListener::~TestServiceManagerListener() {}
void TestServiceManagerListener::Init() { void TestServiceManagerListener::Init() {
DCHECK(!binding_.is_bound()); DCHECK(!receiver_.is_bound());
// Register a listener on the ServiceManager to track when services are // Register a listener on the ServiceManager to track when services are
// started. // started.
mojo::InterfacePtr<service_manager::mojom::ServiceManager> service_manager; mojo::Remote<service_manager::mojom::ServiceManager> service_manager;
content::GetSystemConnector()->BindInterface( content::GetSystemConnector()->Connect(
service_manager::mojom::kServiceName, &service_manager); service_manager::mojom::kServiceName,
service_manager::mojom::ServiceManagerListenerPtr listener_ptr; service_manager.BindNewPipeAndPassReceiver());
binding_.Bind(mojo::MakeRequest(&listener_ptr)); mojo::PendingRemote<service_manager::mojom::ServiceManagerListener>
service_manager->AddListener(std::move(listener_ptr)); listener_remote;
receiver_.Bind(listener_remote.InitWithNewPipeAndPassReceiver());
service_manager->AddListener(std::move(listener_remote));
} }
void TestServiceManagerListener::WaitUntilServiceStarted( void TestServiceManagerListener::WaitUntilServiceStarted(
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
#include "base/callback_forward.h" #include "base/callback_forward.h"
#include "base/macros.h" #include "base/macros.h"
#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/receiver.h"
#include "services/service_manager/public/mojom/service_manager.mojom.h" #include "services/service_manager/public/mojom/service_manager.mojom.h"
namespace service_manager { namespace service_manager {
...@@ -51,7 +51,7 @@ class TestServiceManagerListener ...@@ -51,7 +51,7 @@ class TestServiceManagerListener
std::string service_name_; std::string service_name_;
std::map<std::string, uint32_t> service_start_counters_; std::map<std::string, uint32_t> service_start_counters_;
mojo::Binding<service_manager::mojom::ServiceManagerListener> binding_; mojo::Receiver<service_manager::mojom::ServiceManagerListener> receiver_;
DISALLOW_COPY_AND_ASSIGN(TestServiceManagerListener); DISALLOW_COPY_AND_ASSIGN(TestServiceManagerListener);
}; };
......
...@@ -88,21 +88,20 @@ void AudioServiceListener::Metrics::LogServiceStartStatus( ...@@ -88,21 +88,20 @@ void AudioServiceListener::Metrics::LogServiceStartStatus(
AudioServiceListener::AudioServiceListener( AudioServiceListener::AudioServiceListener(
std::unique_ptr<service_manager::Connector> connector) std::unique_ptr<service_manager::Connector> connector)
: binding_(this), : connector_(std::move(connector)),
connector_(std::move(connector)),
metrics_(base::DefaultTickClock::GetInstance()) { metrics_(base::DefaultTickClock::GetInstance()) {
DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_); DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_);
if (!connector_) if (!connector_)
return; // Happens in unittests. return; // Happens in unittests.
service_manager::mojom::ServiceManagerPtr service_manager; mojo::Remote<service_manager::mojom::ServiceManager> service_manager;
connector_->BindInterface(service_manager::mojom::kServiceName, connector_->Connect(service_manager::mojom::kServiceName,
&service_manager); service_manager.BindNewPipeAndPassReceiver());
service_manager::mojom::ServiceManagerListenerPtr listener; mojo::PendingRemote<service_manager::mojom::ServiceManagerListener> listener;
service_manager::mojom::ServiceManagerListenerRequest request( mojo::PendingReceiver<service_manager::mojom::ServiceManagerListener> request(
mojo::MakeRequest(&listener)); listener.InitWithNewPipeAndPassReceiver());
service_manager->AddListener(std::move(listener)); service_manager->AddListener(std::move(listener));
binding_.Bind(std::move(request)); receiver_.Bind(std::move(request));
} }
AudioServiceListener::~AudioServiceListener() { AudioServiceListener::~AudioServiceListener() {
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
#include "base/process/process_handle.h" #include "base/process/process_handle.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "content/common/content_export.h" #include "content/common/content_export.h"
#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/receiver.h"
#include "services/service_manager/public/cpp/connector.h" #include "services/service_manager/public/cpp/connector.h"
#include "services/service_manager/public/cpp/identity.h" #include "services/service_manager/public/cpp/identity.h"
#include "services/service_manager/public/mojom/service_manager.mojom.h" #include "services/service_manager/public/mojom/service_manager.mojom.h"
...@@ -90,7 +90,8 @@ class CONTENT_EXPORT AudioServiceListener ...@@ -90,7 +90,8 @@ class CONTENT_EXPORT AudioServiceListener
void MaybeSetLogFactory(); void MaybeSetLogFactory();
mojo::Binding<service_manager::mojom::ServiceManagerListener> binding_; mojo::Receiver<service_manager::mojom::ServiceManagerListener> receiver_{
this};
std::unique_ptr<service_manager::Connector> connector_; std::unique_ptr<service_manager::Connector> connector_;
base::Optional<service_manager::Identity> current_instance_identity_; base::Optional<service_manager::Identity> current_instance_identity_;
base::Optional<service_manager::mojom::InstanceState> current_instance_state_; base::Optional<service_manager::mojom::InstanceState> current_instance_state_;
......
...@@ -83,17 +83,19 @@ using ServiceManagerContextBrowserTest = ContentBrowserTest; ...@@ -83,17 +83,19 @@ using ServiceManagerContextBrowserTest = ContentBrowserTest;
IN_PROC_BROWSER_TEST_F(ServiceManagerContextBrowserTest, IN_PROC_BROWSER_TEST_F(ServiceManagerContextBrowserTest,
ServiceProcessReportsPID) { ServiceProcessReportsPID) {
service_manager::mojom::ServiceManagerListenerPtr listener_proxy; mojo::Remote<service_manager::mojom::ServiceManager> service_manager;
ServiceInstanceListener listener(mojo::MakeRequest(&listener_proxy)); GetSystemConnector()->Connect(service_manager::mojom::kServiceName,
service_manager.BindNewPipeAndPassReceiver());
mojo::PendingRemote<service_manager::mojom::ServiceManagerListener>
listener_proxy;
ServiceInstanceListener listener(
listener_proxy.InitWithNewPipeAndPassReceiver());
auto* connector = GetSystemConnector();
service_manager::mojom::ServiceManagerPtr service_manager;
connector->BindInterface(service_manager::mojom::kServiceName,
&service_manager);
service_manager->AddListener(std::move(listener_proxy)); service_manager->AddListener(std::move(listener_proxy));
listener.WaitForInit(); listener.WaitForInit();
connector->WarmService(service_manager::ServiceFilter::ByName( GetSystemConnector()->WarmService(service_manager::ServiceFilter::ByName(
data_decoder::mojom::kServiceName)); data_decoder::mojom::kServiceName));
// PID should be non-zero, confirming that it was indeed properly reported to // PID should be non-zero, confirming that it was indeed properly reported to
......
...@@ -32,9 +32,10 @@ class ServiceLifetimeTestTemplate : public TestBase { ...@@ -32,9 +32,10 @@ class ServiceLifetimeTestTemplate : public TestBase {
service_manager::mojom::kServiceName, service_manager::mojom::kServiceName,
service_manager.BindNewPipeAndPassReceiver()); service_manager.BindNewPipeAndPassReceiver());
service_manager::mojom::ServiceManagerListenerPtr listener; mojo::PendingRemote<service_manager::mojom::ServiceManagerListener>
listener;
service_observer_ = std::make_unique<ServiceObserverMock>( service_observer_ = std::make_unique<ServiceObserverMock>(
mojom::kServiceName, mojo::MakeRequest(&listener)); mojom::kServiceName, listener.InitWithNewPipeAndPassReceiver());
base::RunLoop wait_loop; base::RunLoop wait_loop;
EXPECT_CALL(*service_observer_, Initialized()) EXPECT_CALL(*service_observer_, Initialized())
......
...@@ -81,5 +81,5 @@ interface ServiceManagerListener { ...@@ -81,5 +81,5 @@ interface ServiceManagerListener {
interface ServiceManager { interface ServiceManager {
// The listener is removed when the |listener| pipe is closed. // The listener is removed when the |listener| pipe is closed.
AddListener(ServiceManagerListener listener); AddListener(pending_remote<ServiceManagerListener> listener);
}; };
...@@ -588,7 +588,8 @@ void ServiceInstance::RequestQuit() { ...@@ -588,7 +588,8 @@ void ServiceInstance::RequestQuit() {
OnServiceDisconnected(); OnServiceDisconnected();
} }
void ServiceInstance::AddListener(mojom::ServiceManagerListenerPtr listener) { void ServiceInstance::AddListener(
mojo::PendingRemote<mojom::ServiceManagerListener> listener) {
service_manager_->AddListener(std::move(listener)); service_manager_->AddListener(std::move(listener));
} }
......
...@@ -152,7 +152,8 @@ class ServiceInstance : public mojom::Connector, ...@@ -152,7 +152,8 @@ class ServiceInstance : public mojom::Connector,
void RequestQuit() override; void RequestQuit() override;
// mojom::ServiceManager: // mojom::ServiceManager:
void AddListener(mojom::ServiceManagerListenerPtr listener) override; void AddListener(
mojo::PendingRemote<mojom::ServiceManagerListener> listener) override;
// Always owns |this|. // Always owns |this|.
service_manager::ServiceManager* const service_manager_; service_manager::ServiceManager* const service_manager_;
......
...@@ -401,9 +401,10 @@ void ServiceManager::DestroyInstance(ServiceInstance* instance) { ...@@ -401,9 +401,10 @@ void ServiceManager::DestroyInstance(ServiceInstance* instance) {
} }
void ServiceManager::OnInstanceStopped(const Identity& identity) { void ServiceManager::OnInstanceStopped(const Identity& identity) {
listeners_.ForAllPtrs([&identity](mojom::ServiceManagerListener* listener) { for (auto& listener : listeners_) {
listener->OnServiceStopped(identity); listener->OnServiceStopped(identity);
}); }
if (!instance_quit_callback_.is_null()) if (!instance_quit_callback_.is_null())
std::move(instance_quit_callback_).Run(identity); std::move(instance_quit_callback_).Run(identity);
} }
...@@ -416,31 +417,29 @@ ServiceInstance* ServiceManager::GetExistingInstance( ...@@ -416,31 +417,29 @@ ServiceInstance* ServiceManager::GetExistingInstance(
void ServiceManager::NotifyServiceCreated(const ServiceInstance& instance) { void ServiceManager::NotifyServiceCreated(const ServiceInstance& instance) {
mojom::RunningServiceInfoPtr info = instance.CreateRunningServiceInfo(); mojom::RunningServiceInfoPtr info = instance.CreateRunningServiceInfo();
listeners_.ForAllPtrs([&info](mojom::ServiceManagerListener* listener) { for (auto& listener : listeners_) {
listener->OnServiceCreated(info.Clone()); listener->OnServiceCreated(info.Clone());
}); }
} }
void ServiceManager::NotifyServiceStarted(const Identity& identity, void ServiceManager::NotifyServiceStarted(const Identity& identity,
base::ProcessId pid) { base::ProcessId pid) {
listeners_.ForAllPtrs( for (auto& listener : listeners_) {
[&identity, pid](mojom::ServiceManagerListener* listener) { listener->OnServiceStarted(identity, pid);
listener->OnServiceStarted(identity, pid); }
});
} }
void ServiceManager::NotifyServiceFailedToStart(const Identity& identity) { void ServiceManager::NotifyServiceFailedToStart(const Identity& identity) {
listeners_.ForAllPtrs([&identity](mojom::ServiceManagerListener* listener) { for (auto& listener : listeners_) {
listener->OnServiceFailedToStart(identity); listener->OnServiceFailedToStart(identity);
}); }
} }
void ServiceManager::NotifyServicePIDReceived(const Identity& identity, void ServiceManager::NotifyServicePIDReceived(const Identity& identity,
base::ProcessId pid) { base::ProcessId pid) {
listeners_.ForAllPtrs( for (auto& listener : listeners_) {
[&identity, pid](mojom::ServiceManagerListener* listener) { listener->OnServicePIDReceived(identity, pid);
listener->OnServicePIDReceived(identity, pid); }
});
} }
ServiceInstance* ServiceManager::CreateServiceInstance( ServiceInstance* ServiceManager::CreateServiceInstance(
...@@ -461,13 +460,16 @@ ServiceInstance* ServiceManager::CreateServiceInstance( ...@@ -461,13 +460,16 @@ ServiceInstance* ServiceManager::CreateServiceInstance(
return raw_instance; return raw_instance;
} }
void ServiceManager::AddListener(mojom::ServiceManagerListenerPtr listener) { void ServiceManager::AddListener(
mojo::PendingRemote<mojom::ServiceManagerListener> listener) {
std::vector<mojom::RunningServiceInfoPtr> infos; std::vector<mojom::RunningServiceInfoPtr> infos;
for (auto& instance : instances_) for (auto& instance : instances_)
infos.push_back(instance->CreateRunningServiceInfo()); infos.push_back(instance->CreateRunningServiceInfo());
listener->OnInit(std::move(infos)); mojo::Remote<mojom::ServiceManagerListener> listener_remote;
listeners_.AddPtr(std::move(listener)); listener_remote.Bind(std::move(listener));
listener_remote->OnInit(std::move(infos));
listeners_.Add(std::move(listener_remote));
} }
void ServiceManager::OnBindInterface( void ServiceManager::OnBindInterface(
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "mojo/public/cpp/bindings/interface_ptr_set.h" #include "mojo/public/cpp/bindings/interface_ptr_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/pending_remote.h"
#include "mojo/public/cpp/bindings/remote_set.h"
#include "services/service_manager/catalog.h" #include "services/service_manager/catalog.h"
#include "services/service_manager/public/cpp/identity.h" #include "services/service_manager/public/cpp/identity.h"
#include "services/service_manager/public/cpp/manifest.h" #include "services/service_manager/public/cpp/manifest.h"
...@@ -184,7 +185,7 @@ class ServiceManager : public Service { ...@@ -184,7 +185,7 @@ class ServiceManager : public Service {
const Manifest& manifest); const Manifest& manifest);
// Called from the instance implementing mojom::ServiceManager. // Called from the instance implementing mojom::ServiceManager.
void AddListener(mojom::ServiceManagerListenerPtr listener); void AddListener(mojo::PendingRemote<mojom::ServiceManagerListener> listener);
// Service: // Service:
void OnBindInterface(const BindSourceInfo& source_info, void OnBindInterface(const BindSourceInfo& source_info,
...@@ -210,7 +211,7 @@ class ServiceManager : public Service { ...@@ -210,7 +211,7 @@ class ServiceManager : public Service {
// ServiceInstance still has an entry in |instances_|. // ServiceInstance still has an entry in |instances_|.
ServiceInstance* service_manager_instance_; ServiceInstance* service_manager_instance_;
mojo::InterfacePtrSet<mojom::ServiceManagerListener> listeners_; mojo::RemoteSet<mojom::ServiceManagerListener> listeners_;
base::OnceCallback<void(const Identity&)> instance_quit_callback_; base::OnceCallback<void(const Identity&)> instance_quit_callback_;
DISALLOW_COPY_AND_ASSIGN(ServiceManager); DISALLOW_COPY_AND_ASSIGN(ServiceManager);
......
...@@ -246,10 +246,10 @@ class LifecycleTest : public testing::Test { ...@@ -246,10 +246,10 @@ class LifecycleTest : public testing::Test {
mojom::ServiceManagerPtr service_manager; mojom::ServiceManagerPtr service_manager;
connector()->BindInterface(service_manager::mojom::kServiceName, connector()->BindInterface(service_manager::mojom::kServiceName,
&service_manager); &service_manager);
mojom::ServiceManagerListenerPtr listener; mojo::PendingRemote<mojom::ServiceManagerListener> listener;
base::RunLoop loop; base::RunLoop loop;
InstanceState* state = InstanceState* state = new InstanceState(
new InstanceState(MakeRequest(&listener), loop.QuitClosure()); listener.InitWithNewPipeAndPassReceiver(), loop.QuitClosure());
service_manager->AddListener(std::move(listener)); service_manager->AddListener(std::move(listener));
loop.Run(); loop.Run();
return base::WrapUnique(state); return base::WrapUnique(state);
......
...@@ -117,9 +117,9 @@ class ServiceManagerListenerTest : public testing::Test, public Service { ...@@ -117,9 +117,9 @@ class ServiceManagerListenerTest : public testing::Test, public Service {
mojom::ServiceManagerPtr service_manager; mojom::ServiceManagerPtr service_manager;
connector()->BindInterface(mojom::kServiceName, &service_manager); connector()->BindInterface(mojom::kServiceName, &service_manager);
mojom::ServiceManagerListenerPtr listener_proxy; mojo::PendingRemote<mojom::ServiceManagerListener> listener_proxy;
listener_ = listener_ = std::make_unique<TestListener>(
std::make_unique<TestListener>(mojo::MakeRequest(&listener_proxy)); listener_proxy.InitWithNewPipeAndPassReceiver());
service_manager->AddListener(std::move(listener_proxy)); service_manager->AddListener(std::move(listener_proxy));
listener_->WaitForInit(); listener_->WaitForInit();
} }
......
...@@ -173,8 +173,8 @@ class ServiceManagerTest : public testing::Test, ...@@ -173,8 +173,8 @@ class ServiceManagerTest : public testing::Test,
connector()->BindInterface(service_manager::mojom::kServiceName, connector()->BindInterface(service_manager::mojom::kServiceName,
&service_manager); &service_manager);
mojom::ServiceManagerListenerPtr listener; mojo::PendingRemote<mojom::ServiceManagerListener> listener;
binding_.Bind(mojo::MakeRequest(&listener)); binding_.Bind(listener.InitWithNewPipeAndPassReceiver());
service_manager->AddListener(std::move(listener)); service_manager->AddListener(std::move(listener));
wait_for_instances_loop_ = std::make_unique<base::RunLoop>(); wait_for_instances_loop_ = std::make_unique<base::RunLoop>();
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
#include "base/bind.h" #include "base/bind.h"
#include "base/stl_util.h" #include "base/stl_util.h"
#include "base/timer/timer.h" #include "base/timer/timer.h"
#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/receiver.h"
#include "services/service_manager/public/mojom/service_manager.mojom.h" #include "services/service_manager/public/mojom/service_manager.mojom.h"
#include "services/tracing/agent_registry.h" #include "services/tracing/agent_registry.h"
#include "services/tracing/coordinator.h" #include "services/tracing/coordinator.h"
...@@ -34,14 +34,15 @@ class ServiceListener : public service_manager::mojom::ServiceManagerListener { ...@@ -34,14 +34,15 @@ class ServiceListener : public service_manager::mojom::ServiceManagerListener {
: connector_(connector), : connector_(connector),
agent_registry_(agent_registry), agent_registry_(agent_registry),
coordinator_(coordinator) { coordinator_(coordinator) {
service_manager::mojom::ServiceManagerPtr service_manager; mojo::Remote<service_manager::mojom::ServiceManager> service_manager;
connector_->BindInterface(service_manager::mojom::kServiceName, connector_->Connect(service_manager::mojom::kServiceName,
&service_manager); service_manager.BindNewPipeAndPassReceiver());
service_manager::mojom::ServiceManagerListenerPtr listener; mojo::PendingRemote<service_manager::mojom::ServiceManagerListener>
service_manager::mojom::ServiceManagerListenerRequest request( listener;
mojo::MakeRequest(&listener)); mojo::PendingReceiver<service_manager::mojom::ServiceManagerListener>
request(listener.InitWithNewPipeAndPassReceiver());
service_manager->AddListener(std::move(listener)); service_manager->AddListener(std::move(listener));
binding_.Bind(std::move(request)); receiver_.Bind(std::move(request));
} }
size_t CountServicesWithPID(uint32_t pid) { size_t CountServicesWithPID(uint32_t pid) {
...@@ -158,7 +159,8 @@ class ServiceListener : public service_manager::mojom::ServiceManagerListener { ...@@ -158,7 +159,8 @@ class ServiceListener : public service_manager::mojom::ServiceManagerListener {
agent_registry_->BindAgentRegistryReceiver(std::move(registry_receiver)); agent_registry_->BindAgentRegistryReceiver(std::move(registry_receiver));
} }
mojo::Binding<service_manager::mojom::ServiceManagerListener> binding_{this}; mojo::Receiver<service_manager::mojom::ServiceManagerListener> receiver_{
this};
service_manager::Connector* const connector_; service_manager::Connector* const connector_;
AgentRegistry* const agent_registry_; AgentRegistry* const agent_registry_;
Coordinator* const coordinator_; Coordinator* const coordinator_;
......
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