| 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/at_exit.h" | 5 #include "base/at_exit.h" |
| 6 #include "base/bind.h" | 6 #include "base/bind.h" |
| 7 #include "base/macros.h" |
| 7 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 8 #include "mojo/application_manager/application_loader.h" | 9 #include "mojo/application_manager/application_loader.h" |
| 9 #include "mojo/application_manager/application_manager.h" | 10 #include "mojo/application_manager/application_manager.h" |
| 10 #include "mojo/application_manager/background_shell_application_loader.h" | 11 #include "mojo/application_manager/background_shell_application_loader.h" |
| 11 #include "mojo/application_manager/test.mojom.h" | 12 #include "mojo/application_manager/test.mojom.h" |
| 12 #include "mojo/public/cpp/application/application_connection.h" | 13 #include "mojo/public/cpp/application/application_connection.h" |
| 13 #include "mojo/public/cpp/application/application_delegate.h" | 14 #include "mojo/public/cpp/application/application_delegate.h" |
| 14 #include "mojo/public/cpp/application/application_impl.h" | 15 #include "mojo/public/cpp/application/application_impl.h" |
| 15 #include "mojo/public/cpp/application/interface_factory.h" | 16 #include "mojo/public/cpp/application/interface_factory.h" |
| 16 #include "mojo/public/interfaces/application/service_provider.mojom.h" | 17 #include "mojo/public/interfaces/application/service_provider.mojom.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 29 int num_impls; | 30 int num_impls; |
| 30 int num_loader_deletes; | 31 int num_loader_deletes; |
| 31 }; | 32 }; |
| 32 | 33 |
| 33 class QuitMessageLoopErrorHandler : public ErrorHandler { | 34 class QuitMessageLoopErrorHandler : public ErrorHandler { |
| 34 public: | 35 public: |
| 35 QuitMessageLoopErrorHandler() {} | 36 QuitMessageLoopErrorHandler() {} |
| 36 virtual ~QuitMessageLoopErrorHandler() {} | 37 virtual ~QuitMessageLoopErrorHandler() {} |
| 37 | 38 |
| 38 // |ErrorHandler| implementation: | 39 // |ErrorHandler| implementation: |
| 39 virtual void OnConnectionError() OVERRIDE { | 40 virtual void OnConnectionError() override { |
| 40 base::MessageLoop::current()->QuitWhenIdle(); | 41 base::MessageLoop::current()->QuitWhenIdle(); |
| 41 } | 42 } |
| 42 | 43 |
| 43 private: | 44 private: |
| 44 DISALLOW_COPY_AND_ASSIGN(QuitMessageLoopErrorHandler); | 45 DISALLOW_COPY_AND_ASSIGN(QuitMessageLoopErrorHandler); |
| 45 }; | 46 }; |
| 46 | 47 |
| 47 class TestServiceImpl : public InterfaceImpl<TestService> { | 48 class TestServiceImpl : public InterfaceImpl<TestService> { |
| 48 public: | 49 public: |
| 49 explicit TestServiceImpl(TestContext* context) : context_(context) { | 50 explicit TestServiceImpl(TestContext* context) : context_(context) { |
| 50 ++context_->num_impls; | 51 ++context_->num_impls; |
| 51 } | 52 } |
| 52 | 53 |
| 53 virtual ~TestServiceImpl() { --context_->num_impls; } | 54 virtual ~TestServiceImpl() { --context_->num_impls; } |
| 54 | 55 |
| 55 virtual void OnConnectionError() OVERRIDE { | 56 virtual void OnConnectionError() override { |
| 56 if (!base::MessageLoop::current()->is_running()) | 57 if (!base::MessageLoop::current()->is_running()) |
| 57 return; | 58 return; |
| 58 base::MessageLoop::current()->Quit(); | 59 base::MessageLoop::current()->Quit(); |
| 59 } | 60 } |
| 60 | 61 |
| 61 // TestService implementation: | 62 // TestService implementation: |
| 62 virtual void Test(const String& test_string) OVERRIDE { | 63 virtual void Test(const String& test_string) override { |
| 63 context_->last_test_string = test_string; | 64 context_->last_test_string = test_string; |
| 64 client()->AckTest(); | 65 client()->AckTest(); |
| 65 } | 66 } |
| 66 | 67 |
| 67 private: | 68 private: |
| 68 TestContext* context_; | 69 TestContext* context_; |
| 69 }; | 70 }; |
| 70 | 71 |
| 71 class TestClientImpl : public TestClient { | 72 class TestClientImpl : public TestClient { |
| 72 public: | 73 public: |
| 73 explicit TestClientImpl(TestServicePtr service) | 74 explicit TestClientImpl(TestServicePtr service) |
| 74 : service_(service.Pass()), quit_after_ack_(false) { | 75 : service_(service.Pass()), quit_after_ack_(false) { |
| 75 service_.set_client(this); | 76 service_.set_client(this); |
| 76 } | 77 } |
| 77 | 78 |
| 78 virtual ~TestClientImpl() { service_.reset(); } | 79 virtual ~TestClientImpl() { service_.reset(); } |
| 79 | 80 |
| 80 virtual void AckTest() OVERRIDE { | 81 virtual void AckTest() override { |
| 81 if (quit_after_ack_) | 82 if (quit_after_ack_) |
| 82 base::MessageLoop::current()->Quit(); | 83 base::MessageLoop::current()->Quit(); |
| 83 } | 84 } |
| 84 | 85 |
| 85 void Test(std::string test_string) { | 86 void Test(std::string test_string) { |
| 86 quit_after_ack_ = true; | 87 quit_after_ack_ = true; |
| 87 service_->Test(test_string); | 88 service_->Test(test_string); |
| 88 } | 89 } |
| 89 | 90 |
| 90 private: | 91 private: |
| (...skipping 17 matching lines...) Expand all Loading... |
| 108 void set_context(TestContext* context) { context_ = context; } | 109 void set_context(TestContext* context) { context_ = context; } |
| 109 int num_loads() const { return num_loads_; } | 110 int num_loads() const { return num_loads_; } |
| 110 std::vector<std::string> GetArgs() { | 111 std::vector<std::string> GetArgs() { |
| 111 return test_app_->args().To<std::vector<std::string> >(); | 112 return test_app_->args().To<std::vector<std::string> >(); |
| 112 } | 113 } |
| 113 | 114 |
| 114 private: | 115 private: |
| 115 // ApplicationLoader implementation. | 116 // ApplicationLoader implementation. |
| 116 virtual void Load(ApplicationManager* manager, | 117 virtual void Load(ApplicationManager* manager, |
| 117 const GURL& url, | 118 const GURL& url, |
| 118 scoped_refptr<LoadCallbacks> callbacks) OVERRIDE { | 119 scoped_refptr<LoadCallbacks> callbacks) override { |
| 119 ++num_loads_; | 120 ++num_loads_; |
| 120 test_app_.reset( | 121 test_app_.reset( |
| 121 new ApplicationImpl(this, callbacks->RegisterApplication().Pass())); | 122 new ApplicationImpl(this, callbacks->RegisterApplication().Pass())); |
| 122 } | 123 } |
| 123 | 124 |
| 124 virtual void OnApplicationError(ApplicationManager* manager, | 125 virtual void OnApplicationError(ApplicationManager* manager, |
| 125 const GURL& url) OVERRIDE {} | 126 const GURL& url) override {} |
| 126 | 127 |
| 127 // ApplicationDelegate implementation. | 128 // ApplicationDelegate implementation. |
| 128 virtual bool ConfigureIncomingConnection( | 129 virtual bool ConfigureIncomingConnection( |
| 129 ApplicationConnection* connection) OVERRIDE { | 130 ApplicationConnection* connection) override { |
| 130 connection->AddService(this); | 131 connection->AddService(this); |
| 131 return true; | 132 return true; |
| 132 } | 133 } |
| 133 | 134 |
| 134 // InterfaceFactory implementation. | 135 // InterfaceFactory implementation. |
| 135 virtual void Create(ApplicationConnection* connection, | 136 virtual void Create(ApplicationConnection* connection, |
| 136 InterfaceRequest<TestService> request) OVERRIDE { | 137 InterfaceRequest<TestService> request) override { |
| 137 BindToRequest(new TestServiceImpl(context_), &request); | 138 BindToRequest(new TestServiceImpl(context_), &request); |
| 138 } | 139 } |
| 139 | 140 |
| 140 scoped_ptr<ApplicationImpl> test_app_; | 141 scoped_ptr<ApplicationImpl> test_app_; |
| 141 TestContext* context_; | 142 TestContext* context_; |
| 142 int num_loads_; | 143 int num_loads_; |
| 143 DISALLOW_COPY_AND_ASSIGN(TestApplicationLoader); | 144 DISALLOW_COPY_AND_ASSIGN(TestApplicationLoader); |
| 144 }; | 145 }; |
| 145 | 146 |
| 146 class TesterContext { | 147 class TesterContext { |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 : test_context_(test_context) { | 246 : test_context_(test_context) { |
| 246 connection->ConnectToApplication(kTestBURLString)->ConnectToService(&b_); | 247 connection->ConnectToApplication(kTestBURLString)->ConnectToService(&b_); |
| 247 } | 248 } |
| 248 virtual ~TestAImpl() { | 249 virtual ~TestAImpl() { |
| 249 test_context_->IncrementNumADeletes(); | 250 test_context_->IncrementNumADeletes(); |
| 250 if (base::MessageLoop::current()->is_running()) | 251 if (base::MessageLoop::current()->is_running()) |
| 251 Quit(); | 252 Quit(); |
| 252 } | 253 } |
| 253 | 254 |
| 254 private: | 255 private: |
| 255 virtual void CallB() OVERRIDE { | 256 virtual void CallB() override { |
| 256 b_->B(base::Bind(&TestAImpl::Quit, base::Unretained(this))); | 257 b_->B(base::Bind(&TestAImpl::Quit, base::Unretained(this))); |
| 257 } | 258 } |
| 258 | 259 |
| 259 virtual void CallCFromB() OVERRIDE { | 260 virtual void CallCFromB() override { |
| 260 b_->CallC(base::Bind(&TestAImpl::Quit, base::Unretained(this))); | 261 b_->CallC(base::Bind(&TestAImpl::Quit, base::Unretained(this))); |
| 261 } | 262 } |
| 262 | 263 |
| 263 void Quit() { | 264 void Quit() { |
| 264 base::MessageLoop::current()->Quit(); | 265 base::MessageLoop::current()->Quit(); |
| 265 test_context_->set_a_called_quit(); | 266 test_context_->set_a_called_quit(); |
| 266 test_context_->QuitSoon(); | 267 test_context_->QuitSoon(); |
| 267 } | 268 } |
| 268 | 269 |
| 269 TesterContext* test_context_; | 270 TesterContext* test_context_; |
| 270 TestBPtr b_; | 271 TestBPtr b_; |
| 271 }; | 272 }; |
| 272 | 273 |
| 273 class TestBImpl : public InterfaceImpl<TestB> { | 274 class TestBImpl : public InterfaceImpl<TestB> { |
| 274 public: | 275 public: |
| 275 TestBImpl(ApplicationConnection* connection, TesterContext* test_context) | 276 TestBImpl(ApplicationConnection* connection, TesterContext* test_context) |
| 276 : test_context_(test_context) { | 277 : test_context_(test_context) { |
| 277 connection->ConnectToService(&c_); | 278 connection->ConnectToService(&c_); |
| 278 } | 279 } |
| 279 | 280 |
| 280 virtual ~TestBImpl() { | 281 virtual ~TestBImpl() { |
| 281 test_context_->IncrementNumBDeletes(); | 282 test_context_->IncrementNumBDeletes(); |
| 282 if (base::MessageLoop::current()->is_running()) | 283 if (base::MessageLoop::current()->is_running()) |
| 283 base::MessageLoop::current()->Quit(); | 284 base::MessageLoop::current()->Quit(); |
| 284 test_context_->QuitSoon(); | 285 test_context_->QuitSoon(); |
| 285 } | 286 } |
| 286 | 287 |
| 287 private: | 288 private: |
| 288 virtual void B(const mojo::Callback<void()>& callback) OVERRIDE { | 289 virtual void B(const mojo::Callback<void()>& callback) override { |
| 289 test_context_->IncrementNumBCalls(); | 290 test_context_->IncrementNumBCalls(); |
| 290 callback.Run(); | 291 callback.Run(); |
| 291 } | 292 } |
| 292 | 293 |
| 293 virtual void CallC(const mojo::Callback<void()>& callback) OVERRIDE { | 294 virtual void CallC(const mojo::Callback<void()>& callback) override { |
| 294 test_context_->IncrementNumBCalls(); | 295 test_context_->IncrementNumBCalls(); |
| 295 c_->C(callback); | 296 c_->C(callback); |
| 296 } | 297 } |
| 297 | 298 |
| 298 TesterContext* test_context_; | 299 TesterContext* test_context_; |
| 299 TestCPtr c_; | 300 TestCPtr c_; |
| 300 }; | 301 }; |
| 301 | 302 |
| 302 class TestCImpl : public InterfaceImpl<TestC> { | 303 class TestCImpl : public InterfaceImpl<TestC> { |
| 303 public: | 304 public: |
| 304 TestCImpl(ApplicationConnection* connection, TesterContext* test_context) | 305 TestCImpl(ApplicationConnection* connection, TesterContext* test_context) |
| 305 : test_context_(test_context) {} | 306 : test_context_(test_context) {} |
| 306 | 307 |
| 307 virtual ~TestCImpl() { test_context_->IncrementNumCDeletes(); } | 308 virtual ~TestCImpl() { test_context_->IncrementNumCDeletes(); } |
| 308 | 309 |
| 309 private: | 310 private: |
| 310 virtual void C(const mojo::Callback<void()>& callback) OVERRIDE { | 311 virtual void C(const mojo::Callback<void()>& callback) override { |
| 311 test_context_->IncrementNumCCalls(); | 312 test_context_->IncrementNumCCalls(); |
| 312 callback.Run(); | 313 callback.Run(); |
| 313 } | 314 } |
| 314 TesterContext* test_context_; | 315 TesterContext* test_context_; |
| 315 }; | 316 }; |
| 316 | 317 |
| 317 class Tester : public ApplicationDelegate, | 318 class Tester : public ApplicationDelegate, |
| 318 public ApplicationLoader, | 319 public ApplicationLoader, |
| 319 public InterfaceFactory<TestA>, | 320 public InterfaceFactory<TestA>, |
| 320 public InterfaceFactory<TestB>, | 321 public InterfaceFactory<TestB>, |
| 321 public InterfaceFactory<TestC> { | 322 public InterfaceFactory<TestC> { |
| 322 public: | 323 public: |
| 323 Tester(TesterContext* context, const std::string& requestor_url) | 324 Tester(TesterContext* context, const std::string& requestor_url) |
| 324 : context_(context), requestor_url_(requestor_url) {} | 325 : context_(context), requestor_url_(requestor_url) {} |
| 325 virtual ~Tester() {} | 326 virtual ~Tester() {} |
| 326 | 327 |
| 327 private: | 328 private: |
| 328 virtual void Load(ApplicationManager* manager, | 329 virtual void Load(ApplicationManager* manager, |
| 329 const GURL& url, | 330 const GURL& url, |
| 330 scoped_refptr<LoadCallbacks> callbacks) OVERRIDE { | 331 scoped_refptr<LoadCallbacks> callbacks) override { |
| 331 app_.reset( | 332 app_.reset( |
| 332 new ApplicationImpl(this, callbacks->RegisterApplication().Pass())); | 333 new ApplicationImpl(this, callbacks->RegisterApplication().Pass())); |
| 333 } | 334 } |
| 334 | 335 |
| 335 virtual void OnApplicationError(ApplicationManager* manager, | 336 virtual void OnApplicationError(ApplicationManager* manager, |
| 336 const GURL& url) OVERRIDE {} | 337 const GURL& url) override {} |
| 337 | 338 |
| 338 virtual bool ConfigureIncomingConnection( | 339 virtual bool ConfigureIncomingConnection( |
| 339 ApplicationConnection* connection) OVERRIDE { | 340 ApplicationConnection* connection) override { |
| 340 if (!requestor_url_.empty() && | 341 if (!requestor_url_.empty() && |
| 341 requestor_url_ != connection->GetRemoteApplicationURL()) { | 342 requestor_url_ != connection->GetRemoteApplicationURL()) { |
| 342 context_->set_tester_called_quit(); | 343 context_->set_tester_called_quit(); |
| 343 context_->QuitSoon(); | 344 context_->QuitSoon(); |
| 344 base::MessageLoop::current()->Quit(); | 345 base::MessageLoop::current()->Quit(); |
| 345 return false; | 346 return false; |
| 346 } | 347 } |
| 347 // If we're coming from A, then add B, otherwise A. | 348 // If we're coming from A, then add B, otherwise A. |
| 348 if (connection->GetRemoteApplicationURL() == kTestAURLString) | 349 if (connection->GetRemoteApplicationURL() == kTestAURLString) |
| 349 connection->AddService<TestB>(this); | 350 connection->AddService<TestB>(this); |
| 350 else | 351 else |
| 351 connection->AddService<TestA>(this); | 352 connection->AddService<TestA>(this); |
| 352 return true; | 353 return true; |
| 353 } | 354 } |
| 354 | 355 |
| 355 virtual bool ConfigureOutgoingConnection( | 356 virtual bool ConfigureOutgoingConnection( |
| 356 ApplicationConnection* connection) OVERRIDE { | 357 ApplicationConnection* connection) override { |
| 357 // If we're connecting to B, then add C. | 358 // If we're connecting to B, then add C. |
| 358 if (connection->GetRemoteApplicationURL() == kTestBURLString) | 359 if (connection->GetRemoteApplicationURL() == kTestBURLString) |
| 359 connection->AddService<TestC>(this); | 360 connection->AddService<TestC>(this); |
| 360 return true; | 361 return true; |
| 361 } | 362 } |
| 362 | 363 |
| 363 virtual void Create(ApplicationConnection* connection, | 364 virtual void Create(ApplicationConnection* connection, |
| 364 InterfaceRequest<TestA> request) OVERRIDE { | 365 InterfaceRequest<TestA> request) override { |
| 365 BindToRequest(new TestAImpl(connection, context_), &request); | 366 BindToRequest(new TestAImpl(connection, context_), &request); |
| 366 } | 367 } |
| 367 | 368 |
| 368 virtual void Create(ApplicationConnection* connection, | 369 virtual void Create(ApplicationConnection* connection, |
| 369 InterfaceRequest<TestB> request) OVERRIDE { | 370 InterfaceRequest<TestB> request) override { |
| 370 BindToRequest(new TestBImpl(connection, context_), &request); | 371 BindToRequest(new TestBImpl(connection, context_), &request); |
| 371 } | 372 } |
| 372 | 373 |
| 373 virtual void Create(ApplicationConnection* connection, | 374 virtual void Create(ApplicationConnection* connection, |
| 374 InterfaceRequest<TestC> request) OVERRIDE { | 375 InterfaceRequest<TestC> request) override { |
| 375 BindToRequest(new TestCImpl(connection, context_), &request); | 376 BindToRequest(new TestCImpl(connection, context_), &request); |
| 376 } | 377 } |
| 377 | 378 |
| 378 TesterContext* context_; | 379 TesterContext* context_; |
| 379 scoped_ptr<ApplicationImpl> app_; | 380 scoped_ptr<ApplicationImpl> app_; |
| 380 std::string requestor_url_; | 381 std::string requestor_url_; |
| 381 }; | 382 }; |
| 382 | 383 |
| 383 class TestServiceInterceptor : public ApplicationManager::Interceptor { | 384 class TestServiceInterceptor : public ApplicationManager::Interceptor { |
| 384 public: | 385 public: |
| 385 TestServiceInterceptor() : call_count_(0) {} | 386 TestServiceInterceptor() : call_count_(0) {} |
| 386 | 387 |
| 387 virtual ServiceProviderPtr OnConnectToClient( | 388 virtual ServiceProviderPtr OnConnectToClient( |
| 388 const GURL& url, | 389 const GURL& url, |
| 389 ServiceProviderPtr service_provider) OVERRIDE { | 390 ServiceProviderPtr service_provider) override { |
| 390 ++call_count_; | 391 ++call_count_; |
| 391 url_ = url; | 392 url_ = url; |
| 392 return service_provider.Pass(); | 393 return service_provider.Pass(); |
| 393 } | 394 } |
| 394 | 395 |
| 395 std::string url_spec() const { | 396 std::string url_spec() const { |
| 396 if (!url_.is_valid()) | 397 if (!url_.is_valid()) |
| 397 return "invalid url"; | 398 return "invalid url"; |
| 398 return url_.spec(); | 399 return url_.spec(); |
| 399 } | 400 } |
| 400 | 401 |
| 401 int call_count() const { return call_count_; } | 402 int call_count() const { return call_count_; } |
| 402 | 403 |
| 403 private: | 404 private: |
| 404 int call_count_; | 405 int call_count_; |
| 405 GURL url_; | 406 GURL url_; |
| 406 DISALLOW_COPY_AND_ASSIGN(TestServiceInterceptor); | 407 DISALLOW_COPY_AND_ASSIGN(TestServiceInterceptor); |
| 407 }; | 408 }; |
| 408 | 409 |
| 409 } // namespace | 410 } // namespace |
| 410 | 411 |
| 411 class ApplicationManagerTest : public testing::Test { | 412 class ApplicationManagerTest : public testing::Test { |
| 412 public: | 413 public: |
| 413 ApplicationManagerTest() : tester_context_(&loop_) {} | 414 ApplicationManagerTest() : tester_context_(&loop_) {} |
| 414 | 415 |
| 415 virtual ~ApplicationManagerTest() {} | 416 virtual ~ApplicationManagerTest() {} |
| 416 | 417 |
| 417 virtual void SetUp() OVERRIDE { | 418 virtual void SetUp() override { |
| 418 application_manager_.reset(new ApplicationManager); | 419 application_manager_.reset(new ApplicationManager); |
| 419 TestApplicationLoader* default_loader = new TestApplicationLoader; | 420 TestApplicationLoader* default_loader = new TestApplicationLoader; |
| 420 default_loader->set_context(&context_); | 421 default_loader->set_context(&context_); |
| 421 application_manager_->set_default_loader( | 422 application_manager_->set_default_loader( |
| 422 scoped_ptr<ApplicationLoader>(default_loader)); | 423 scoped_ptr<ApplicationLoader>(default_loader)); |
| 423 | 424 |
| 424 TestServicePtr service_proxy; | 425 TestServicePtr service_proxy; |
| 425 application_manager_->ConnectToService(GURL(kTestURLString), | 426 application_manager_->ConnectToService(GURL(kTestURLString), |
| 426 &service_proxy); | 427 &service_proxy); |
| 427 test_client_.reset(new TestClientImpl(service_proxy.Pass())); | 428 test_client_.reset(new TestClientImpl(service_proxy.Pass())); |
| 428 } | 429 } |
| 429 | 430 |
| 430 virtual void TearDown() OVERRIDE { | 431 virtual void TearDown() override { |
| 431 test_client_.reset(NULL); | 432 test_client_.reset(NULL); |
| 432 application_manager_.reset(NULL); | 433 application_manager_.reset(NULL); |
| 433 } | 434 } |
| 434 | 435 |
| 435 scoped_ptr<BackgroundShellApplicationLoader> MakeLoader( | 436 scoped_ptr<BackgroundShellApplicationLoader> MakeLoader( |
| 436 const std::string& requestor_url) { | 437 const std::string& requestor_url) { |
| 437 scoped_ptr<ApplicationLoader> real_loader( | 438 scoped_ptr<ApplicationLoader> real_loader( |
| 438 new Tester(&tester_context_, requestor_url)); | 439 new Tester(&tester_context_, requestor_url)); |
| 439 scoped_ptr<BackgroundShellApplicationLoader> loader( | 440 scoped_ptr<BackgroundShellApplicationLoader> loader( |
| 440 new BackgroundShellApplicationLoader(real_loader.Pass(), | 441 new BackgroundShellApplicationLoader(real_loader.Pass(), |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 676 std::string url("test:test3"); | 677 std::string url("test:test3"); |
| 677 TestServicePtr test_service; | 678 TestServicePtr test_service; |
| 678 application_manager_->ConnectToService(GURL(url), &test_service); | 679 application_manager_->ConnectToService(GURL(url), &test_service); |
| 679 | 680 |
| 680 EXPECT_EQ(1, interceptor.call_count()); | 681 EXPECT_EQ(1, interceptor.call_count()); |
| 681 EXPECT_EQ(url, interceptor.url_spec()); | 682 EXPECT_EQ(url, interceptor.url_spec()); |
| 682 EXPECT_EQ(1, default_loader->num_loads()); | 683 EXPECT_EQ(1, default_loader->num_loads()); |
| 683 } | 684 } |
| 684 | 685 |
| 685 } // namespace mojo | 686 } // namespace mojo |
| OLD | NEW |