Chromium Code Reviews| 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/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "mojo/application_manager/application_loader.h" | 9 #include "mojo/application_manager/application_loader.h" |
| 10 #include "mojo/application_manager/application_manager.h" | 10 #include "mojo/application_manager/application_manager.h" |
| 11 #include "mojo/application_manager/background_shell_application_loader.h" | |
| 12 #include "mojo/application_manager/test.mojom.h" | 11 #include "mojo/application_manager/test.mojom.h" |
| 13 #include "mojo/public/cpp/application/application_connection.h" | 12 #include "mojo/public/cpp/application/application_connection.h" |
| 14 #include "mojo/public/cpp/application/application_delegate.h" | 13 #include "mojo/public/cpp/application/application_delegate.h" |
| 15 #include "mojo/public/cpp/application/application_impl.h" | 14 #include "mojo/public/cpp/application/application_impl.h" |
| 16 #include "mojo/public/cpp/application/interface_factory.h" | 15 #include "mojo/public/cpp/application/interface_factory.h" |
| 17 #include "mojo/public/interfaces/application/service_provider.mojom.h" | 16 #include "mojo/public/interfaces/application/service_provider.mojom.h" |
| 18 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
| 19 | 18 |
| 20 namespace mojo { | 19 namespace mojo { |
| 21 namespace { | 20 namespace { |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 77 service_.set_client(this); | 76 service_.set_client(this); |
| 78 } | 77 } |
| 79 | 78 |
| 80 ~TestClientImpl() override { service_.reset(); } | 79 ~TestClientImpl() override { service_.reset(); } |
| 81 | 80 |
| 82 void AckTest() override { | 81 void AckTest() override { |
| 83 if (quit_after_ack_) | 82 if (quit_after_ack_) |
| 84 base::MessageLoop::current()->Quit(); | 83 base::MessageLoop::current()->Quit(); |
| 85 } | 84 } |
| 86 | 85 |
| 87 void Test(std::string test_string) { | 86 void Test(const std::string& test_string) { |
| 88 quit_after_ack_ = true; | 87 quit_after_ack_ = true; |
| 89 service_->Test(test_string); | 88 service_->Test(test_string); |
| 90 } | 89 } |
| 91 | 90 |
| 92 private: | 91 private: |
| 93 TestServicePtr service_; | 92 TestServicePtr service_; |
| 94 bool quit_after_ack_; | 93 bool quit_after_ack_; |
| 95 DISALLOW_COPY_AND_ASSIGN(TestClientImpl); | 94 DISALLOW_COPY_AND_ASSIGN(TestClientImpl); |
| 96 }; | 95 }; |
| 97 | 96 |
| (...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 443 application_manager_->ConnectToService(GURL(kTestURLString), | 442 application_manager_->ConnectToService(GURL(kTestURLString), |
| 444 &service_proxy); | 443 &service_proxy); |
| 445 test_client_.reset(new TestClientImpl(service_proxy.Pass())); | 444 test_client_.reset(new TestClientImpl(service_proxy.Pass())); |
| 446 } | 445 } |
| 447 | 446 |
| 448 void TearDown() override { | 447 void TearDown() override { |
| 449 test_client_.reset(NULL); | 448 test_client_.reset(NULL); |
| 450 application_manager_.reset(NULL); | 449 application_manager_.reset(NULL); |
| 451 } | 450 } |
| 452 | 451 |
| 453 scoped_ptr<BackgroundShellApplicationLoader> MakeLoader( | |
| 454 const std::string& requestor_url) { | |
| 455 scoped_ptr<ApplicationLoader> real_loader( | |
| 456 new Tester(&tester_context_, requestor_url)); | |
| 457 scoped_ptr<BackgroundShellApplicationLoader> loader( | |
| 458 new BackgroundShellApplicationLoader(real_loader.Pass(), | |
| 459 std::string(), | |
| 460 base::MessageLoop::TYPE_DEFAULT)); | |
| 461 return loader.Pass(); | |
| 462 } | |
| 463 | |
| 464 void AddLoaderForURL(const GURL& url, const std::string& requestor_url) { | 452 void AddLoaderForURL(const GURL& url, const std::string& requestor_url) { |
| 465 application_manager_->SetLoaderForURL(MakeLoader(requestor_url), url); | 453 application_manager_->SetLoaderForURL( |
| 454 make_scoped_ptr(new Tester(&tester_context_, requestor_url)), url); | |
| 466 } | 455 } |
| 467 | 456 |
| 468 bool HasFactoryForTestURL() { | 457 bool HasFactoryForTestURL() { |
| 469 ApplicationManager::TestAPI manager_test_api(application_manager_.get()); | 458 ApplicationManager::TestAPI manager_test_api(application_manager_.get()); |
| 470 return manager_test_api.HasFactoryForURL(GURL(kTestURLString)); | 459 return manager_test_api.HasFactoryForURL(GURL(kTestURLString)); |
| 471 } | 460 } |
| 472 | 461 |
| 473 protected: | 462 protected: |
| 474 base::ShadowingAtExitManager at_exit_; | 463 base::ShadowingAtExitManager at_exit_; |
| 475 TestDelegate test_delegate_; | 464 TestDelegate test_delegate_; |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 623 TestAPtr a; | 612 TestAPtr a; |
| 624 application_manager_->ConnectToService(GURL(kTestAURLString), &a); | 613 application_manager_->ConnectToService(GURL(kTestAURLString), &a); |
| 625 a->CallCFromB(); | 614 a->CallCFromB(); |
| 626 loop_.Run(); | 615 loop_.Run(); |
| 627 | 616 |
| 628 EXPECT_EQ(1, tester_context_.num_b_calls()); | 617 EXPECT_EQ(1, tester_context_.num_b_calls()); |
| 629 EXPECT_EQ(1, tester_context_.num_c_calls()); | 618 EXPECT_EQ(1, tester_context_.num_c_calls()); |
| 630 EXPECT_TRUE(tester_context_.a_called_quit()); | 619 EXPECT_TRUE(tester_context_.a_called_quit()); |
| 631 } | 620 } |
| 632 | 621 |
| 633 // Confirm that a service impl will be deleted if the app that connected to | |
| 634 // it goes away. | |
| 635 TEST_F(ApplicationManagerTest, BDeleted) { | |
|
sky
2014/12/16 19:22:19
Contrary to the description this test was exercisi
qsr
2014/12/17 10:34:34
Can you still make this work by having Tester use
| |
| 636 AddLoaderForURL(GURL(kTestAURLString), std::string()); | |
| 637 AddLoaderForURL(GURL(kTestBURLString), std::string()); | |
| 638 | |
| 639 TestAPtr a; | |
| 640 application_manager_->ConnectToService(GURL(kTestAURLString), &a); | |
| 641 | |
| 642 a->CallB(); | |
| 643 loop_.Run(); | |
| 644 | |
| 645 // Kills the a app. | |
| 646 application_manager_->SetLoaderForURL(scoped_ptr<ApplicationLoader>(), | |
| 647 GURL(kTestAURLString)); | |
| 648 loop_.Run(); | |
| 649 | |
| 650 EXPECT_EQ(1, tester_context_.num_b_deletes()); | |
| 651 } | |
| 652 | |
| 653 // Confirm that the url of a service is correctly passed to another service that | 622 // Confirm that the url of a service is correctly passed to another service that |
| 654 // it loads, and that it can be rejected. | 623 // it loads, and that it can be rejected. |
| 655 TEST_F(ApplicationManagerTest, ANoLoadB) { | 624 TEST_F(ApplicationManagerTest, ANoLoadB) { |
| 656 // Any url can load a. | 625 // Any url can load a. |
| 657 AddLoaderForURL(GURL(kTestAURLString), std::string()); | 626 AddLoaderForURL(GURL(kTestAURLString), std::string()); |
| 658 | 627 |
| 659 // Only c can load b, so this will fail. | 628 // Only c can load b, so this will fail. |
| 660 AddLoaderForURL(GURL(kTestBURLString), "test:TestC"); | 629 AddLoaderForURL(GURL(kTestBURLString), "test:TestC"); |
| 661 | 630 |
| 662 TestAPtr a; | 631 TestAPtr a; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 711 TestServicePtr test_service2; | 680 TestServicePtr test_service2; |
| 712 application_manager_->ConnectToService(GURL("foo:foo2"), &test_service2); | 681 application_manager_->ConnectToService(GURL("foo:foo2"), &test_service2); |
| 713 EXPECT_EQ(2, test_loader_->num_loads()); | 682 EXPECT_EQ(2, test_loader_->num_loads()); |
| 714 | 683 |
| 715 TestServicePtr test_service3; | 684 TestServicePtr test_service3; |
| 716 application_manager_->ConnectToService(GURL("bar:bar"), &test_service2); | 685 application_manager_->ConnectToService(GURL("bar:bar"), &test_service2); |
| 717 EXPECT_EQ(3, test_loader_->num_loads()); | 686 EXPECT_EQ(3, test_loader_->num_loads()); |
| 718 } | 687 } |
| 719 | 688 |
| 720 } // namespace mojo | 689 } // namespace mojo |
| OLD | NEW |