Index: services/service_manager/tests/connect/connect_test_app.cc |
diff --git a/services/service_manager/tests/connect/connect_test_app.cc b/services/service_manager/tests/connect/connect_test_app.cc |
index ad0a26e621c870345a6e6fccf9fd0fc3c5653597..62034155c026b0e31a755c2b22697adf63019d50 100644 |
--- a/services/service_manager/tests/connect/connect_test_app.cc |
+++ b/services/service_manager/tests/connect/connect_test_app.cc |
@@ -11,9 +11,9 @@ |
#include "base/run_loop.h" |
#include "mojo/public/cpp/bindings/binding_set.h" |
#include "services/service_manager/public/c/main.h" |
+#include "services/service_manager/public/cpp/binder_registry.h" |
#include "services/service_manager/public/cpp/connector.h" |
#include "services/service_manager/public/cpp/interface_factory.h" |
-#include "services/service_manager/public/cpp/interface_registry.h" |
#include "services/service_manager/public/cpp/service.h" |
#include "services/service_manager/public/cpp/service_context.h" |
#include "services/service_manager/public/cpp/service_runner.h" |
@@ -24,8 +24,14 @@ namespace service_manager { |
namespace { |
-void QuitLoop(base::RunLoop* loop) { |
+void QuitLoop(base::RunLoop* loop, |
+ mojom::ConnectResult* out_result, |
+ Identity* out_resolved_identity, |
+ mojom::ConnectResult result, |
+ const Identity& resolved_identity) { |
loop->Quit(); |
+ *out_result = result; |
+ *out_resolved_identity = resolved_identity; |
} |
void ReceiveString(std::string* string, |
@@ -61,31 +67,30 @@ class ConnectTestApp : public Service, |
standalone_bindings_.set_connection_error_handler( |
base::Bind(&ConnectTestApp::OnConnectionError, |
base::Unretained(this))); |
+ registry_.AddInterface<test::mojom::ConnectTestService>(this); |
+ registry_.AddInterface<test::mojom::StandaloneApp>(this); |
+ registry_.AddInterface<test::mojom::BlockedInterface>(this); |
+ registry_.AddInterface<test::mojom::UserIdTest>(this); |
} |
- |
- bool OnConnect(const ServiceInfo& remote_info, |
- InterfaceRegistry* registry) override { |
- registry->AddInterface<test::mojom::ConnectTestService>(this); |
- registry->AddInterface<test::mojom::StandaloneApp>(this); |
- registry->AddInterface<test::mojom::BlockedInterface>(this); |
- registry->AddInterface<test::mojom::UserIdTest>(this); |
- |
- test::mojom::ConnectionStatePtr state(test::mojom::ConnectionState::New()); |
- state->connection_remote_name = remote_info.identity.name(); |
- state->connection_remote_userid = remote_info.identity.user_id(); |
- state->initialize_local_name = context()->identity().name(); |
- state->initialize_userid = context()->identity().user_id(); |
- |
- context()->connector()->BindInterface(remote_info.identity, &caller_); |
- caller_->ConnectionAccepted(std::move(state)); |
- |
- return true; |
+ void OnBindInterface(const ServiceInfo& source_info, |
+ const std::string& interface_name, |
+ mojo::ScopedMessagePipeHandle interface_pipe) override { |
+ registry_.BindInterface(source_info.identity, interface_name, |
+ std::move(interface_pipe)); |
} |
// InterfaceFactory<test::mojom::ConnectTestService>: |
void Create(const Identity& remote_identity, |
test::mojom::ConnectTestServiceRequest request) override { |
bindings_.AddBinding(this, std::move(request)); |
+ test::mojom::ConnectionStatePtr state(test::mojom::ConnectionState::New()); |
+ state->connection_remote_name = remote_identity.name(); |
+ state->connection_remote_userid = remote_identity.user_id(); |
+ state->initialize_local_name = context()->identity().name(); |
+ state->initialize_userid = context()->identity().user_id(); |
+ |
+ context()->connector()->BindInterface(remote_identity, &caller_); |
+ caller_->ConnectionAccepted(std::move(state)); |
} |
// InterfaceFactory<test::mojom::StandaloneApp>: |
@@ -118,13 +123,11 @@ class ConnectTestApp : public Service, |
void ConnectToAllowedAppInBlockedPackage( |
const ConnectToAllowedAppInBlockedPackageCallback& callback) override { |
base::RunLoop run_loop; |
- std::unique_ptr<Connection> connection = |
- context()->connector()->Connect("connect_test_a"); |
- connection->SetConnectionLostClosure( |
- base::Bind(&ConnectTestApp::OnConnectionBlocked, |
- base::Unretained(this), callback, &run_loop)); |
test::mojom::ConnectTestServicePtr test_service; |
- connection->GetInterface(&test_service); |
+ context()->connector()->BindInterface("connect_test_a", &test_service); |
+ test_service.set_connection_error_handler( |
+ base::Bind(&ConnectTestApp::OnConnectionBlocked, base::Unretained(this), |
+ callback, &run_loop)); |
test_service->GetTitle( |
base::Bind(&ConnectTestApp::OnGotTitle, base::Unretained(this), |
callback, &run_loop)); |
@@ -138,10 +141,9 @@ class ConnectTestApp : public Service, |
} |
void ConnectToClassInterface( |
const ConnectToClassInterfaceCallback& callback) override { |
- std::unique_ptr<Connection> connection = |
- context()->connector()->Connect("connect_test_class_app"); |
test::mojom::ClassInterfacePtr class_interface; |
- connection->GetInterface(&class_interface); |
+ context()->connector()->BindInterface("connect_test_class_app", |
+ &class_interface); |
std::string ping_response; |
{ |
base::RunLoop loop; |
@@ -151,7 +153,7 @@ class ConnectTestApp : public Service, |
loop.Run(); |
} |
test::mojom::ConnectTestServicePtr service; |
- connection->GetInterface(&service); |
+ context()->connector()->BindInterface("connect_test_class_app", &service); |
std::string title_response; |
{ |
base::RunLoop loop; |
@@ -172,17 +174,19 @@ class ConnectTestApp : public Service, |
void ConnectToClassAppAsDifferentUser( |
const service_manager::Identity& target, |
const ConnectToClassAppAsDifferentUserCallback& callback) override { |
- std::unique_ptr<Connection> connection = |
- context()->connector()->Connect(target); |
+ context()->connector()->StartService(target); |
+ mojom::ConnectResult result; |
+ Identity resolved_identity; |
{ |
base::RunLoop loop; |
- connection->AddConnectionCompletedClosure(base::Bind(&QuitLoop, &loop)); |
+ Connector::TestApi test_api(context()->connector()); |
+ test_api.SetStartServiceCallback( |
+ base::Bind(&QuitLoop, &loop, &result, &resolved_identity)); |
base::MessageLoop::ScopedNestableTaskAllower allow( |
base::MessageLoop::current()); |
loop.Run(); |
} |
- callback.Run(static_cast<int32_t>(connection->GetResult()), |
- connection->GetRemoteIdentity()); |
+ callback.Run(static_cast<int32_t>(result), resolved_identity); |
} |
void OnConnectionBlocked( |
@@ -205,6 +209,7 @@ class ConnectTestApp : public Service, |
base::MessageLoop::current()->QuitWhenIdle(); |
} |
+ BinderRegistry registry_; |
mojo::BindingSet<test::mojom::ConnectTestService> bindings_; |
mojo::BindingSet<test::mojom::StandaloneApp> standalone_bindings_; |
mojo::BindingSet<test::mojom::BlockedInterface> blocked_bindings_; |