| 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/macros.h" |
| 8 #include "base/memory/scoped_vector.h" | 8 #include "base/memory/scoped_vector.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 public: | 47 public: |
| 48 TestServiceImpl(TestContext* context, InterfaceRequest<TestService> request) | 48 TestServiceImpl(TestContext* context, InterfaceRequest<TestService> request) |
| 49 : context_(context), binding_(this, request.Pass()) { | 49 : context_(context), binding_(this, request.Pass()) { |
| 50 ++context_->num_impls; | 50 ++context_->num_impls; |
| 51 } | 51 } |
| 52 | 52 |
| 53 ~TestServiceImpl() override { | 53 ~TestServiceImpl() override { |
| 54 --context_->num_impls; | 54 --context_->num_impls; |
| 55 if (!base::MessageLoop::current()->is_running()) | 55 if (!base::MessageLoop::current()->is_running()) |
| 56 return; | 56 return; |
| 57 base::MessageLoop::current()->Quit(); | 57 base::MessageLoop::current()->QuitWhenIdle(); |
| 58 } | 58 } |
| 59 | 59 |
| 60 // TestService implementation: | 60 // TestService implementation: |
| 61 void Test(const String& test_string, | 61 void Test(const String& test_string, |
| 62 const Callback<void()>& callback) override { | 62 const Callback<void()>& callback) override { |
| 63 context_->last_test_string = test_string; | 63 context_->last_test_string = test_string; |
| 64 callback.Run(); | 64 callback.Run(); |
| 65 } | 65 } |
| 66 | 66 |
| 67 private: | 67 private: |
| 68 TestContext* context_; | 68 TestContext* context_; |
| 69 StrongBinding<TestService> binding_; | 69 StrongBinding<TestService> binding_; |
| 70 }; | 70 }; |
| 71 | 71 |
| 72 class TestClient { | 72 class TestClient { |
| 73 public: | 73 public: |
| 74 explicit TestClient(TestServicePtr service) | 74 explicit TestClient(TestServicePtr service) |
| 75 : service_(service.Pass()), quit_after_ack_(false) {} | 75 : service_(service.Pass()), quit_after_ack_(false) {} |
| 76 | 76 |
| 77 void AckTest() { | 77 void AckTest() { |
| 78 if (quit_after_ack_) | 78 if (quit_after_ack_) |
| 79 base::MessageLoop::current()->Quit(); | 79 base::MessageLoop::current()->QuitWhenIdle(); |
| 80 } | 80 } |
| 81 | 81 |
| 82 void Test(const std::string& test_string) { | 82 void Test(const std::string& test_string) { |
| 83 quit_after_ack_ = true; | 83 quit_after_ack_ = true; |
| 84 service_->Test(test_string, | 84 service_->Test(test_string, |
| 85 base::Bind(&TestClient::AckTest, base::Unretained(this))); | 85 base::Bind(&TestClient::AckTest, base::Unretained(this))); |
| 86 } | 86 } |
| 87 | 87 |
| 88 private: | 88 private: |
| 89 TestServicePtr service_; | 89 TestServicePtr service_; |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 private: | 261 private: |
| 262 void CallB() override { | 262 void CallB() override { |
| 263 b_->B(base::Bind(&TestAImpl::Quit, base::Unretained(this))); | 263 b_->B(base::Bind(&TestAImpl::Quit, base::Unretained(this))); |
| 264 } | 264 } |
| 265 | 265 |
| 266 void CallCFromB() override { | 266 void CallCFromB() override { |
| 267 b_->CallC(base::Bind(&TestAImpl::Quit, base::Unretained(this))); | 267 b_->CallC(base::Bind(&TestAImpl::Quit, base::Unretained(this))); |
| 268 } | 268 } |
| 269 | 269 |
| 270 void Quit() { | 270 void Quit() { |
| 271 base::MessageLoop::current()->Quit(); | 271 base::MessageLoop::current()->QuitWhenIdle(); |
| 272 test_context_->set_a_called_quit(); | 272 test_context_->set_a_called_quit(); |
| 273 test_context_->QuitSoon(); | 273 test_context_->QuitSoon(); |
| 274 } | 274 } |
| 275 | 275 |
| 276 scoped_ptr<ApplicationConnection> connection_; | 276 scoped_ptr<ApplicationConnection> connection_; |
| 277 TesterContext* test_context_; | 277 TesterContext* test_context_; |
| 278 TestBPtr b_; | 278 TestBPtr b_; |
| 279 StrongBinding<TestA> binding_; | 279 StrongBinding<TestA> binding_; |
| 280 }; | 280 }; |
| 281 | 281 |
| 282 class TestBImpl : public TestB { | 282 class TestBImpl : public TestB { |
| 283 public: | 283 public: |
| 284 TestBImpl(ApplicationConnection* connection, | 284 TestBImpl(ApplicationConnection* connection, |
| 285 TesterContext* test_context, | 285 TesterContext* test_context, |
| 286 InterfaceRequest<TestB> request) | 286 InterfaceRequest<TestB> request) |
| 287 : test_context_(test_context), binding_(this, request.Pass()) { | 287 : test_context_(test_context), binding_(this, request.Pass()) { |
| 288 connection->ConnectToService(&c_); | 288 connection->ConnectToService(&c_); |
| 289 } | 289 } |
| 290 | 290 |
| 291 ~TestBImpl() override { | 291 ~TestBImpl() override { |
| 292 test_context_->IncrementNumBDeletes(); | 292 test_context_->IncrementNumBDeletes(); |
| 293 if (base::MessageLoop::current()->is_running()) | 293 if (base::MessageLoop::current()->is_running()) |
| 294 base::MessageLoop::current()->Quit(); | 294 base::MessageLoop::current()->QuitWhenIdle(); |
| 295 test_context_->QuitSoon(); | 295 test_context_->QuitSoon(); |
| 296 } | 296 } |
| 297 | 297 |
| 298 private: | 298 private: |
| 299 void B(const Callback<void()>& callback) override { | 299 void B(const Callback<void()>& callback) override { |
| 300 test_context_->IncrementNumBCalls(); | 300 test_context_->IncrementNumBCalls(); |
| 301 callback.Run(); | 301 callback.Run(); |
| 302 } | 302 } |
| 303 | 303 |
| 304 void CallC(const Callback<void()>& callback) override { | 304 void CallC(const Callback<void()>& callback) override { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 void Load(const GURL& url, | 344 void Load(const GURL& url, |
| 345 InterfaceRequest<Application> application_request) override { | 345 InterfaceRequest<Application> application_request) override { |
| 346 app_.reset(new ApplicationImpl(this, application_request.Pass())); | 346 app_.reset(new ApplicationImpl(this, application_request.Pass())); |
| 347 } | 347 } |
| 348 | 348 |
| 349 bool ConfigureIncomingConnection(ApplicationConnection* connection) override { | 349 bool ConfigureIncomingConnection(ApplicationConnection* connection) override { |
| 350 if (!requestor_url_.empty() && | 350 if (!requestor_url_.empty() && |
| 351 requestor_url_ != connection->GetRemoteApplicationURL()) { | 351 requestor_url_ != connection->GetRemoteApplicationURL()) { |
| 352 context_->set_tester_called_quit(); | 352 context_->set_tester_called_quit(); |
| 353 context_->QuitSoon(); | 353 context_->QuitSoon(); |
| 354 base::MessageLoop::current()->Quit(); | 354 base::MessageLoop::current()->QuitWhenIdle(); |
| 355 return false; | 355 return false; |
| 356 } | 356 } |
| 357 // If we're coming from A, then add B, otherwise A. | 357 // If we're coming from A, then add B, otherwise A. |
| 358 if (connection->GetRemoteApplicationURL() == kTestAURLString) | 358 if (connection->GetRemoteApplicationURL() == kTestAURLString) |
| 359 connection->AddService<TestB>(this); | 359 connection->AddService<TestB>(this); |
| 360 else | 360 else |
| 361 connection->AddService<TestA>(this); | 361 connection->AddService<TestA>(this); |
| 362 return true; | 362 return true; |
| 363 } | 363 } |
| 364 | 364 |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 624 | 624 |
| 625 // A different identity because the domain is different. | 625 // A different identity because the domain is different. |
| 626 ConnectToService(application_manager_.get(), | 626 ConnectToService(application_manager_.get(), |
| 627 GURL("http://www.another_domain.org/abc"), &test_service); | 627 GURL("http://www.another_domain.org/abc"), &test_service); |
| 628 EXPECT_EQ(4, test_loader_->num_loads()); | 628 EXPECT_EQ(4, test_loader_->num_loads()); |
| 629 } | 629 } |
| 630 | 630 |
| 631 } // namespace test | 631 } // namespace test |
| 632 } // namespace shell | 632 } // namespace shell |
| 633 } // namespace mojo | 633 } // namespace mojo |
| OLD | NEW |