Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(267)

Unified Diff: services/service_manager/public/cpp/lib/connector_impl.cc

Issue 2804373002: Eliminate Connector::Connect(), Connection, etc. (Closed)
Patch Set: . Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: services/service_manager/public/cpp/lib/connector_impl.cc
diff --git a/services/service_manager/public/cpp/lib/connector_impl.cc b/services/service_manager/public/cpp/lib/connector_impl.cc
index 3e7c841007835a56f32ceb89bde9d8d4d3d6bd49..0040a320e8d21d5ffff7f11f1103edabefa09505 100644
--- a/services/service_manager/public/cpp/lib/connector_impl.cc
+++ b/services/service_manager/public/cpp/lib/connector_impl.cc
@@ -6,14 +6,9 @@
#include "base/memory/ptr_util.h"
#include "services/service_manager/public/cpp/identity.h"
-#include "services/service_manager/public/cpp/lib/connection_impl.h"
namespace service_manager {
-namespace {
-void EmptyBindCallback(mojom::ConnectResult, const std::string&) {}
-}
-
ConnectorImpl::ConnectorImpl(mojom::ConnectorPtrInfo unbound_state)
: unbound_state_(std::move(unbound_state)), weak_factory_(this) {
thread_checker_.DetachFromThread();
@@ -32,6 +27,17 @@ void ConnectorImpl::OnConnectionError() {
connector_.reset();
}
+void ConnectorImpl::StartService(const Identity& identity) {
+ if (BindConnectorIfNecessary())
+ connector_->StartService(identity,
+ base::Bind(&ConnectorImpl::StartServiceCallback,
+ weak_factory_.GetWeakPtr()));
+}
+
+void ConnectorImpl::StartService(const std::string& name) {
+ StartService(Identity(name, mojom::kInheritUserID));
+}
+
void ConnectorImpl::StartService(
const Identity& identity,
mojom::ServicePtr service,
@@ -40,33 +46,11 @@ void ConnectorImpl::StartService(
return;
DCHECK(service.is_bound() && pid_receiver_request.is_pending());
- connector_->StartService(identity,
- service.PassInterface().PassHandle(),
- std::move(pid_receiver_request));
-}
-
-std::unique_ptr<Connection> ConnectorImpl::Connect(const std::string& name) {
- return Connect(Identity(name, mojom::kInheritUserID));
-}
-
-std::unique_ptr<Connection> ConnectorImpl::Connect(const Identity& target) {
- if (!BindConnectorIfNecessary())
- return nullptr;
-
- DCHECK(thread_checker_.CalledOnValidThread());
-
- mojom::InterfaceProviderPtr remote_interfaces;
- mojom::InterfaceProviderRequest remote_request(&remote_interfaces);
- std::unique_ptr<internal::ConnectionImpl> connection(
- new internal::ConnectionImpl(target, Connection::State::PENDING));
- std::unique_ptr<InterfaceProvider> remote_interface_provider(
- new InterfaceProvider);
- remote_interface_provider->Bind(std::move(remote_interfaces));
- connection->SetRemoteInterfaces(std::move(remote_interface_provider));
-
- connector_->Connect(target, std::move(remote_request),
- connection->GetConnectCallback());
- return std::move(connection);
+ connector_->StartServiceWithProcess(
+ identity, service.PassInterface().PassHandle(),
+ std::move(pid_receiver_request),
+ base::Bind(&ConnectorImpl::StartServiceCallback,
+ weak_factory_.GetWeakPtr()));
}
void ConnectorImpl::BindInterface(
@@ -86,7 +70,8 @@ void ConnectorImpl::BindInterface(
}
connector_->BindInterface(target, interface_name, std::move(interface_pipe),
- base::Bind(&EmptyBindCallback));
+ base::Bind(&ConnectorImpl::StartServiceCallback,
+ weak_factory_.GetWeakPtr()));
}
std::unique_ptr<Connector> ConnectorImpl::Clone() {
@@ -119,6 +104,15 @@ void ConnectorImpl::ClearBinderOverrides() {
local_binder_overrides_.clear();
}
+void ConnectorImpl::SetStartServiceCallback(
+ const Connector::StartServiceCallback& callback) {
+ start_service_callback_ = callback;
+}
+
+void ConnectorImpl::ResetStartServiceCallback() {
+ start_service_callback_.Reset();
+}
+
bool ConnectorImpl::BindConnectorIfNecessary() {
// Bind this object to the current thread the first time it is used to
// connect.
@@ -142,6 +136,12 @@ bool ConnectorImpl::BindConnectorIfNecessary() {
return true;
}
+void ConnectorImpl::StartServiceCallback(mojom::ConnectResult result,
+ const Identity& user_id) {
+ if (!start_service_callback_.is_null())
+ start_service_callback_.Run(result, user_id);
+}
+
std::unique_ptr<Connector> Connector::Create(mojom::ConnectorRequest* request) {
mojom::ConnectorPtr proxy;
*request = mojo::MakeRequest(&proxy);
« no previous file with comments | « services/service_manager/public/cpp/lib/connector_impl.h ('k') | services/service_manager/public/cpp/lib/identity.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698