Index: mojo/service_manager/service_manager_unittest.cc |
diff --git a/mojo/service_manager/service_manager_unittest.cc b/mojo/service_manager/service_manager_unittest.cc |
index f485600541283c60a77092b43a426b4572f74135..d3b8af76be165dde3b666def8fde45f95529e5c3 100644 |
--- a/mojo/service_manager/service_manager_unittest.cc |
+++ b/mojo/service_manager/service_manager_unittest.cc |
@@ -44,8 +44,7 @@ class QuitMessageLoopErrorHandler : public ErrorHandler { |
class TestServiceImpl : public InterfaceImpl<TestService> { |
public: |
- explicit TestServiceImpl(ApplicationConnection* connection, |
- TestContext* context) : context_(context) { |
+ explicit TestServiceImpl(TestContext* context) : context_(context) { |
++context_->num_impls; |
} |
@@ -98,7 +97,8 @@ class TestClientImpl : public TestClient { |
}; |
class TestServiceLoader : public ServiceLoader, |
- public ApplicationDelegate { |
+ public ApplicationDelegate, |
+ public InterfaceFactory<TestService> { |
public: |
TestServiceLoader() |
: context_(NULL), |
@@ -129,10 +129,15 @@ class TestServiceLoader : public ServiceLoader, |
virtual bool ConfigureIncomingConnection( |
ApplicationConnection* connection) OVERRIDE { |
- connection->AddService<TestServiceImpl>(context_); |
+ connection->AddServiceFactory(this); |
return true; |
} |
+ virtual void Create(ApplicationConnection* connection, |
+ InterfaceRequest<TestService> request) OVERRIDE { |
+ mojo::BindToRequest(new TestServiceImpl(context_), &request); |
+ } |
+ |
scoped_ptr<ApplicationImpl> test_app_; |
TestContext* context_; |
int num_loads_; |
@@ -160,8 +165,7 @@ struct TesterContext { |
// Used to test that the requestor url will be correctly passed. |
class TestAImpl : public InterfaceImpl<TestA> { |
public: |
- explicit TestAImpl(ApplicationConnection* connection, |
- TesterContext* test_context) |
+ TestAImpl(ApplicationConnection* connection, TesterContext* test_context) |
: test_context_(test_context) { |
connection->ConnectToApplication(kTestBURLString)->ConnectToService(&b_); |
} |
@@ -187,8 +191,7 @@ class TestAImpl : public InterfaceImpl<TestA> { |
class TestBImpl : public InterfaceImpl<TestB> { |
public: |
- explicit TestBImpl(ApplicationConnection* connection, |
- TesterContext* test_context) |
+ TestBImpl(ApplicationConnection* connection, TesterContext* test_context) |
: test_context_(test_context) { |
connection->ConnectToService(&c_); |
} |
@@ -217,10 +220,8 @@ class TestBImpl : public InterfaceImpl<TestB> { |
class TestCImpl : public InterfaceImpl<TestC> { |
public: |
- explicit TestCImpl(ApplicationConnection* connection, |
- TesterContext* test_context) |
- : test_context_(test_context) { |
- } |
+ TestCImpl(ApplicationConnection* connection, TesterContext* test_context) |
+ : test_context_(test_context) {} |
virtual ~TestCImpl() { test_context_->num_c_deletes++; } |
@@ -232,7 +233,11 @@ class TestCImpl : public InterfaceImpl<TestC> { |
TesterContext* test_context_; |
}; |
-class Tester : public ApplicationDelegate, public ServiceLoader { |
+class Tester : public ApplicationDelegate, |
+ public ServiceLoader, |
+ public InterfaceFactory<TestA>, |
+ public InterfaceFactory<TestB>, |
+ public InterfaceFactory<TestC> { |
public: |
Tester(TesterContext* context, const std::string& requestor_url) |
: context_(context), |
@@ -260,9 +265,9 @@ class Tester : public ApplicationDelegate, public ServiceLoader { |
} |
// If we're coming from A, then add B, otherwise A. |
if (connection->GetRemoteApplicationURL() == kTestAURLString) |
- connection->AddService<TestBImpl>(context_); |
+ connection->AddServiceFactory<TestB>(this); |
else |
- connection->AddService<TestAImpl>(context_); |
+ connection->AddServiceFactory<TestA>(this); |
return true; |
} |
@@ -270,10 +275,25 @@ class Tester : public ApplicationDelegate, public ServiceLoader { |
ApplicationConnection* connection) OVERRIDE { |
// If we're connecting to B, then add C. |
if (connection->GetRemoteApplicationURL() == kTestBURLString) |
- connection->AddService<TestCImpl>(context_); |
+ connection->AddServiceFactory<TestC>(this); |
return true; |
} |
+ virtual void Create(ApplicationConnection* connection, |
+ InterfaceRequest<TestA> request) OVERRIDE { |
+ mojo::BindToRequest(new TestAImpl(connection, context_), &request); |
+ } |
+ |
+ virtual void Create(ApplicationConnection* connection, |
+ InterfaceRequest<TestB> request) OVERRIDE { |
+ mojo::BindToRequest(new TestBImpl(connection, context_), &request); |
+ } |
+ |
+ virtual void Create(ApplicationConnection* connection, |
+ InterfaceRequest<TestC> request) OVERRIDE { |
+ mojo::BindToRequest(new TestCImpl(connection, context_), &request); |
+ } |
+ |
TesterContext* context_; |
scoped_ptr<ApplicationImpl> app_; |
std::string requestor_url_; |