OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/message_loop/message_loop.h" | 5 #include "base/message_loop/message_loop.h" |
6 #include "mojo/public/cpp/application/application.h" | 6 #include "mojo/public/cpp/application/application.h" |
7 #include "mojo/public/cpp/environment/environment.h" | 7 #include "mojo/public/cpp/environment/environment.h" |
8 #include "mojo/public/interfaces/service_provider/service_provider.mojom.h" | 8 #include "mojo/public/interfaces/service_provider/service_provider.mojom.h" |
9 #include "mojo/service_manager/service_loader.h" | 9 #include "mojo/service_manager/service_loader.h" |
10 #include "mojo/service_manager/service_manager.h" | 10 #include "mojo/service_manager/service_manager.h" |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 } | 101 } |
102 | 102 |
103 virtual void OnServiceError(ServiceManager* manager, | 103 virtual void OnServiceError(ServiceManager* manager, |
104 const GURL& url) OVERRIDE { | 104 const GURL& url) OVERRIDE { |
105 if (quit_after_error_) { | 105 if (quit_after_error_) { |
106 base::MessageLoop::current()->PostTask(FROM_HERE, | 106 base::MessageLoop::current()->PostTask(FROM_HERE, |
107 base::MessageLoop::QuitClosure()); | 107 base::MessageLoop::QuitClosure()); |
108 } | 108 } |
109 } | 109 } |
110 | 110 |
111 | |
112 scoped_ptr<Application> test_app_; | 111 scoped_ptr<Application> test_app_; |
113 TestContext* context_; | 112 TestContext* context_; |
114 int num_loads_; | 113 int num_loads_; |
115 bool quit_after_error_; | 114 bool quit_after_error_; |
116 DISALLOW_COPY_AND_ASSIGN(TestServiceLoader); | 115 DISALLOW_COPY_AND_ASSIGN(TestServiceLoader); |
117 }; | 116 }; |
118 | 117 |
119 class TestServiceInterceptor : public ServiceManager::Interceptor { | 118 class TestServiceInterceptor : public ServiceManager::Interceptor { |
120 public: | 119 public: |
121 TestServiceInterceptor() : call_count_(0) {} | 120 TestServiceInterceptor() : call_count_(0) {} |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 MessagePipe pipe; | 157 MessagePipe pipe; |
159 TestServicePtr service_proxy = MakeProxy<TestService>(pipe.handle0.Pass()); | 158 TestServicePtr service_proxy = MakeProxy<TestService>(pipe.handle0.Pass()); |
160 test_client_.reset(new TestClientImpl(service_proxy.Pass())); | 159 test_client_.reset(new TestClientImpl(service_proxy.Pass())); |
161 | 160 |
162 TestServiceLoader* default_loader = new TestServiceLoader; | 161 TestServiceLoader* default_loader = new TestServiceLoader; |
163 default_loader->set_context(&context_); | 162 default_loader->set_context(&context_); |
164 default_loader->set_quit_after_error(true); | 163 default_loader->set_quit_after_error(true); |
165 service_manager_->set_default_loader( | 164 service_manager_->set_default_loader( |
166 scoped_ptr<ServiceLoader>(default_loader)); | 165 scoped_ptr<ServiceLoader>(default_loader)); |
167 | 166 |
168 service_manager_->ConnectToService(test_url, pipe.handle1.Pass()); | 167 service_manager_->ConnectToService( |
| 168 test_url, TestService::Name_, pipe.handle1.Pass()); |
169 } | 169 } |
170 | 170 |
171 virtual void TearDown() OVERRIDE { | 171 virtual void TearDown() OVERRIDE { |
172 test_client_.reset(NULL); | 172 test_client_.reset(NULL); |
173 service_manager_.reset(NULL); | 173 service_manager_.reset(NULL); |
174 } | 174 } |
175 | 175 |
176 bool HasFactoryForTestURL() { | 176 bool HasFactoryForTestURL() { |
177 ServiceManager::TestAPI manager_test_api(service_manager_.get()); | 177 ServiceManager::TestAPI manager_test_api(service_manager_.get()); |
178 return manager_test_api.HasFactoryForURL(GURL(kTestURLString)); | 178 return manager_test_api.HasFactoryForURL(GURL(kTestURLString)); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 ServiceManager sm; | 233 ServiceManager sm; |
234 TestServiceLoader* default_loader = new TestServiceLoader; | 234 TestServiceLoader* default_loader = new TestServiceLoader; |
235 TestServiceLoader* url_loader = new TestServiceLoader; | 235 TestServiceLoader* url_loader = new TestServiceLoader; |
236 TestServiceLoader* scheme_loader = new TestServiceLoader; | 236 TestServiceLoader* scheme_loader = new TestServiceLoader; |
237 sm.set_default_loader(scoped_ptr<ServiceLoader>(default_loader)); | 237 sm.set_default_loader(scoped_ptr<ServiceLoader>(default_loader)); |
238 sm.SetLoaderForURL(scoped_ptr<ServiceLoader>(url_loader), GURL("test:test1")); | 238 sm.SetLoaderForURL(scoped_ptr<ServiceLoader>(url_loader), GURL("test:test1")); |
239 sm.SetLoaderForScheme(scoped_ptr<ServiceLoader>(scheme_loader), "test"); | 239 sm.SetLoaderForScheme(scoped_ptr<ServiceLoader>(scheme_loader), "test"); |
240 | 240 |
241 // test::test1 should go to url_loader. | 241 // test::test1 should go to url_loader. |
242 MessagePipe pipe1; | 242 MessagePipe pipe1; |
243 sm.ConnectToService(GURL("test:test1"), pipe1.handle0.Pass()); | 243 sm.ConnectToService( |
| 244 GURL("test:test1"), TestService::Name_, pipe1.handle0.Pass()); |
244 EXPECT_EQ(1, url_loader->num_loads()); | 245 EXPECT_EQ(1, url_loader->num_loads()); |
245 EXPECT_EQ(0, scheme_loader->num_loads()); | 246 EXPECT_EQ(0, scheme_loader->num_loads()); |
246 EXPECT_EQ(0, default_loader->num_loads()); | 247 EXPECT_EQ(0, default_loader->num_loads()); |
247 | 248 |
248 // test::test2 should go to scheme loader. | 249 // test::test2 should go to scheme loader. |
249 MessagePipe pipe2; | 250 MessagePipe pipe2; |
250 sm.ConnectToService(GURL("test:test2"), pipe2.handle0.Pass()); | 251 sm.ConnectToService( |
| 252 GURL("test:test2"), TestService::Name_, pipe2.handle0.Pass()); |
251 EXPECT_EQ(1, url_loader->num_loads()); | 253 EXPECT_EQ(1, url_loader->num_loads()); |
252 EXPECT_EQ(1, scheme_loader->num_loads()); | 254 EXPECT_EQ(1, scheme_loader->num_loads()); |
253 EXPECT_EQ(0, default_loader->num_loads()); | 255 EXPECT_EQ(0, default_loader->num_loads()); |
254 | 256 |
255 // http::test1 should go to default loader. | 257 // http::test1 should go to default loader. |
256 MessagePipe pipe3; | 258 MessagePipe pipe3; |
257 sm.ConnectToService(GURL("http:test1"), pipe3.handle0.Pass()); | 259 sm.ConnectToService( |
| 260 GURL("http:test1"), TestService::Name_, pipe3.handle0.Pass()); |
258 EXPECT_EQ(1, url_loader->num_loads()); | 261 EXPECT_EQ(1, url_loader->num_loads()); |
259 EXPECT_EQ(1, scheme_loader->num_loads()); | 262 EXPECT_EQ(1, scheme_loader->num_loads()); |
260 EXPECT_EQ(1, default_loader->num_loads()); | 263 EXPECT_EQ(1, default_loader->num_loads()); |
261 } | 264 } |
262 | 265 |
263 TEST_F(ServiceManagerTest, Interceptor) { | 266 TEST_F(ServiceManagerTest, Interceptor) { |
264 ServiceManager sm; | 267 ServiceManager sm; |
265 TestServiceInterceptor interceptor; | 268 TestServiceInterceptor interceptor; |
266 TestServiceLoader* default_loader = new TestServiceLoader; | 269 TestServiceLoader* default_loader = new TestServiceLoader; |
267 sm.set_default_loader(scoped_ptr<ServiceLoader>(default_loader)); | 270 sm.set_default_loader(scoped_ptr<ServiceLoader>(default_loader)); |
268 sm.SetInterceptor(&interceptor); | 271 sm.SetInterceptor(&interceptor); |
269 | 272 |
270 std::string url("test:test3"); | 273 std::string url("test:test3"); |
271 MessagePipe pipe1; | 274 MessagePipe pipe1; |
272 sm.ConnectToService(GURL(url), pipe1.handle0.Pass()); | 275 sm.ConnectToService(GURL(url), TestService::Name_, pipe1.handle0.Pass()); |
273 EXPECT_EQ(1, interceptor.call_count()); | 276 EXPECT_EQ(1, interceptor.call_count()); |
274 EXPECT_EQ(url, interceptor.url_spec()); | 277 EXPECT_EQ(url, interceptor.url_spec()); |
275 EXPECT_EQ(1, default_loader->num_loads()); | 278 EXPECT_EQ(1, default_loader->num_loads()); |
276 } | 279 } |
277 | 280 |
278 } // namespace mojo | 281 } // namespace mojo |
OLD | NEW |