| 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" |
| 11 #include "mojo/application/public/cpp/application_connection.h" | 11 #include "mojo/application/public/cpp/application_connection.h" |
| 12 #include "mojo/application/public/cpp/application_delegate.h" | 12 #include "mojo/application/public/cpp/application_delegate.h" |
| 13 #include "mojo/application/public/cpp/application_impl.h" | 13 #include "mojo/application/public/cpp/application_impl.h" |
| 14 #include "mojo/application/public/cpp/interface_factory.h" | 14 #include "mojo/application/public/cpp/interface_factory.h" |
| 15 #include "mojo/application/public/interfaces/content_handler.mojom.h" | 15 #include "mojo/application/public/interfaces/content_handler.mojom.h" |
| 16 #include "mojo/application/public/interfaces/service_provider.mojom.h" | 16 #include "mojo/application/public/interfaces/service_provider.mojom.h" |
| 17 #include "mojo/public/cpp/bindings/strong_binding.h" | 17 #include "mojo/public/cpp/bindings/strong_binding.h" |
| 18 #include "mojo/shell/application_fetcher.h" | |
| 19 #include "mojo/shell/application_loader.h" | 18 #include "mojo/shell/application_loader.h" |
| 20 #include "mojo/shell/application_manager.h" | 19 #include "mojo/shell/application_manager.h" |
| 21 #include "mojo/shell/fetcher.h" | 20 #include "mojo/shell/fetcher.h" |
| 22 #include "mojo/shell/test.mojom.h" | 21 #include "mojo/shell/test.mojom.h" |
| 23 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
| 24 | 23 |
| 25 namespace mojo { | 24 namespace mojo { |
| 26 namespace shell { | 25 namespace shell { |
| 27 namespace { | 26 namespace { |
| 28 | 27 |
| (...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 InterfaceRequest<TestC> request) override { | 448 InterfaceRequest<TestC> request) override { |
| 450 new TestCImpl(connection, context_, request.Pass()); | 449 new TestCImpl(connection, context_, request.Pass()); |
| 451 } | 450 } |
| 452 | 451 |
| 453 TesterContext* context_; | 452 TesterContext* context_; |
| 454 scoped_ptr<ApplicationImpl> app_; | 453 scoped_ptr<ApplicationImpl> app_; |
| 455 std::string requestor_url_; | 454 std::string requestor_url_; |
| 456 ScopedVector<TestAImpl> a_bindings_; | 455 ScopedVector<TestAImpl> a_bindings_; |
| 457 }; | 456 }; |
| 458 | 457 |
| 459 class TestApplicationFetcher : public ApplicationFetcher { | 458 class TestDelegate : public ApplicationManager::Delegate { |
| 460 public: | 459 public: |
| 461 TestApplicationFetcher() | 460 TestDelegate() |
| 462 : create_test_fetcher_(false), | 461 : create_test_fetcher_(false), |
| 463 fetcher_url_("xxx"), | 462 fetcher_url_("xxx"), |
| 464 mime_type_(kTestMimeType) {} | 463 mime_type_(kTestMimeType) {} |
| 465 ~TestApplicationFetcher() override {} | 464 ~TestDelegate() override {} |
| 465 |
| 466 void AddMapping(const GURL& from, const GURL& to) { mappings_[from] = to; } |
| 466 | 467 |
| 467 void set_create_test_fetcher(bool create_test_fetcher) { | 468 void set_create_test_fetcher(bool create_test_fetcher) { |
| 468 create_test_fetcher_ = create_test_fetcher; | 469 create_test_fetcher_ = create_test_fetcher; |
| 469 } | 470 } |
| 470 | 471 |
| 471 void set_fetcher_url(const GURL& url) { fetcher_url_ = url; } | 472 void set_fetcher_url(const GURL& url) { fetcher_url_ = url; } |
| 472 | 473 |
| 473 void set_mime_type(const std::string& mime_type) { mime_type_ = mime_type; } | 474 void set_mime_type(const std::string& mime_type) { mime_type_ = mime_type; } |
| 474 | 475 |
| 475 // ApplicationManager::Delegate | 476 // ApplicationManager::Delegate |
| 476 void SetApplicationManager(ApplicationManager* manager) override {} | 477 GURL ResolveMappings(const GURL& url) override { |
| 477 GURL ResolveURL(const GURL& url) override { | 478 auto it = mappings_.find(url); |
| 478 GURL resolved_url = url; | 479 if (it != mappings_.end()) |
| 480 return it->second; |
| 481 return url; |
| 482 } |
| 483 GURL ResolveMojoURL(const GURL& url) override { |
| 484 GURL mapped_url = ResolveMappings(url); |
| 479 // The shell automatically map mojo URLs. | 485 // The shell automatically map mojo URLs. |
| 480 if (resolved_url.scheme() == "mojo") { | 486 if (mapped_url.scheme() == "mojo") { |
| 481 url::Replacements<char> replacements; | 487 url::Replacements<char> replacements; |
| 482 replacements.SetScheme("file", url::Component(0, 4)); | 488 replacements.SetScheme("file", url::Component(0, 4)); |
| 483 resolved_url = resolved_url.ReplaceComponents(replacements); | 489 mapped_url = mapped_url.ReplaceComponents(replacements); |
| 484 } | 490 } |
| 485 return resolved_url; | 491 return mapped_url; |
| 486 } | 492 } |
| 487 void FetchRequest(URLRequestPtr request, | 493 bool CreateFetcher(const GURL& url, |
| 488 const Fetcher::FetchCallback& loader_callback) override { | 494 const Fetcher::FetchCallback& loader_callback) override { |
| 489 if (create_test_fetcher_) | 495 if (!create_test_fetcher_) |
| 490 new TestMimeTypeFetcher(loader_callback, fetcher_url_, mime_type_); | 496 return false; |
| 497 new TestMimeTypeFetcher(loader_callback, fetcher_url_, mime_type_); |
| 498 return true; |
| 491 } | 499 } |
| 492 | 500 |
| 493 private: | 501 private: |
| 502 std::map<GURL, GURL> mappings_; |
| 494 bool create_test_fetcher_; | 503 bool create_test_fetcher_; |
| 495 GURL fetcher_url_; | 504 GURL fetcher_url_; |
| 496 std::string mime_type_; | 505 std::string mime_type_; |
| 497 | 506 |
| 498 DISALLOW_COPY_AND_ASSIGN(TestApplicationFetcher); | 507 DISALLOW_COPY_AND_ASSIGN(TestDelegate); |
| 499 }; | 508 }; |
| 500 | 509 |
| 501 class ApplicationManagerTest : public testing::Test { | 510 class ApplicationManagerTest : public testing::Test { |
| 502 public: | 511 public: |
| 503 ApplicationManagerTest() : tester_context_(&loop_) {} | 512 ApplicationManagerTest() : tester_context_(&loop_) {} |
| 504 | 513 |
| 505 ~ApplicationManagerTest() override {} | 514 ~ApplicationManagerTest() override {} |
| 506 | 515 |
| 507 void SetUp() override { | 516 void SetUp() override { |
| 508 application_manager_.reset(new ApplicationManager( | 517 application_manager_.reset(new ApplicationManager(&test_delegate_)); |
| 509 make_scoped_ptr(new TestApplicationFetcher))); | |
| 510 test_loader_ = new TestApplicationLoader; | 518 test_loader_ = new TestApplicationLoader; |
| 511 test_loader_->set_context(&context_); | 519 test_loader_->set_context(&context_); |
| 512 application_manager_->set_default_loader( | 520 application_manager_->set_default_loader( |
| 513 scoped_ptr<ApplicationLoader>(test_loader_)); | 521 scoped_ptr<ApplicationLoader>(test_loader_)); |
| 514 | 522 |
| 515 TestServicePtr service_proxy; | 523 TestServicePtr service_proxy; |
| 516 application_manager_->ConnectToService(GURL(kTestURLString), | 524 application_manager_->ConnectToService(GURL(kTestURLString), |
| 517 &service_proxy); | 525 &service_proxy); |
| 518 test_client_.reset(new TestClient(service_proxy.Pass())); | 526 test_client_.reset(new TestClient(service_proxy.Pass())); |
| 519 } | 527 } |
| 520 | 528 |
| 521 void TearDown() override { | 529 void TearDown() override { |
| 522 test_client_.reset(); | 530 test_client_.reset(); |
| 523 application_manager_.reset(); | 531 application_manager_.reset(); |
| 524 } | 532 } |
| 525 | 533 |
| 526 void AddLoaderForURL(const GURL& url, const std::string& requestor_url) { | 534 void AddLoaderForURL(const GURL& url, const std::string& requestor_url) { |
| 527 application_manager_->SetLoaderForURL( | 535 application_manager_->SetLoaderForURL( |
| 528 make_scoped_ptr(new Tester(&tester_context_, requestor_url)), url); | 536 make_scoped_ptr(new Tester(&tester_context_, requestor_url)), url); |
| 529 } | 537 } |
| 530 | 538 |
| 531 bool HasRunningInstanceForURL(const GURL& url) { | 539 bool HasRunningInstanceForURL(const GURL& url) { |
| 532 ApplicationManager::TestAPI manager_test_api(application_manager_.get()); | 540 ApplicationManager::TestAPI manager_test_api(application_manager_.get()); |
| 533 return manager_test_api.HasRunningInstanceForURL(url); | 541 return manager_test_api.HasRunningInstanceForURL(url); |
| 534 } | 542 } |
| 535 | 543 |
| 536 protected: | 544 protected: |
| 537 base::ShadowingAtExitManager at_exit_; | 545 base::ShadowingAtExitManager at_exit_; |
| 546 TestDelegate test_delegate_; |
| 538 TestApplicationLoader* test_loader_; | 547 TestApplicationLoader* test_loader_; |
| 539 TesterContext tester_context_; | 548 TesterContext tester_context_; |
| 540 TestContext context_; | 549 TestContext context_; |
| 541 base::MessageLoop loop_; | 550 base::MessageLoop loop_; |
| 542 scoped_ptr<TestClient> test_client_; | 551 scoped_ptr<TestClient> test_client_; |
| 543 scoped_ptr<ApplicationManager> application_manager_; | 552 scoped_ptr<ApplicationManager> application_manager_; |
| 544 DISALLOW_COPY_AND_ASSIGN(ApplicationManagerTest); | 553 DISALLOW_COPY_AND_ASSIGN(ApplicationManagerTest); |
| 545 }; | 554 }; |
| 546 | 555 |
| 547 TEST_F(ApplicationManagerTest, Basic) { | 556 TEST_F(ApplicationManagerTest, Basic) { |
| 548 test_client_->Test("test"); | 557 test_client_->Test("test"); |
| 549 loop_.Run(); | 558 loop_.Run(); |
| 550 EXPECT_EQ(std::string("test"), context_.last_test_string); | 559 EXPECT_EQ(std::string("test"), context_.last_test_string); |
| 551 } | 560 } |
| 552 | 561 |
| 562 // Confirm that url mappings are respected. |
| 563 TEST_F(ApplicationManagerTest, URLMapping) { |
| 564 ApplicationManager am(&test_delegate_); |
| 565 GURL test_url("test:test"); |
| 566 GURL test_url2("test:test2"); |
| 567 test_delegate_.AddMapping(test_url, test_url2); |
| 568 TestApplicationLoader* loader = new TestApplicationLoader; |
| 569 loader->set_context(&context_); |
| 570 am.SetLoaderForURL(scoped_ptr<ApplicationLoader>(loader), test_url2); |
| 571 { |
| 572 // Connect to the mapped url |
| 573 TestServicePtr test_service; |
| 574 am.ConnectToService(test_url, &test_service); |
| 575 TestClient test_client(test_service.Pass()); |
| 576 test_client.Test("test"); |
| 577 loop_.Run(); |
| 578 } |
| 579 { |
| 580 // Connect to the target url |
| 581 TestServicePtr test_service; |
| 582 am.ConnectToService(test_url2, &test_service); |
| 583 TestClient test_client(test_service.Pass()); |
| 584 test_client.Test("test"); |
| 585 loop_.Run(); |
| 586 } |
| 587 } |
| 588 |
| 553 TEST_F(ApplicationManagerTest, ClientError) { | 589 TEST_F(ApplicationManagerTest, ClientError) { |
| 554 test_client_->Test("test"); | 590 test_client_->Test("test"); |
| 555 EXPECT_TRUE(HasRunningInstanceForURL(GURL(kTestURLString))); | 591 EXPECT_TRUE(HasRunningInstanceForURL(GURL(kTestURLString))); |
| 556 loop_.Run(); | 592 loop_.Run(); |
| 557 EXPECT_EQ(1, context_.num_impls); | 593 EXPECT_EQ(1, context_.num_impls); |
| 558 test_client_.reset(); | 594 test_client_.reset(); |
| 559 loop_.Run(); | 595 loop_.Run(); |
| 560 EXPECT_EQ(0, context_.num_impls); | 596 EXPECT_EQ(0, context_.num_impls); |
| 561 EXPECT_TRUE(HasRunningInstanceForURL(GURL(kTestURLString))); | 597 EXPECT_TRUE(HasRunningInstanceForURL(GURL(kTestURLString))); |
| 562 } | 598 } |
| 563 | 599 |
| 564 TEST_F(ApplicationManagerTest, Deletes) { | 600 TEST_F(ApplicationManagerTest, Deletes) { |
| 565 { | 601 { |
| 566 ApplicationManager am(make_scoped_ptr(new TestApplicationFetcher)); | 602 ApplicationManager am(&test_delegate_); |
| 567 TestApplicationLoader* default_loader = new TestApplicationLoader; | 603 TestApplicationLoader* default_loader = new TestApplicationLoader; |
| 568 default_loader->set_context(&context_); | 604 default_loader->set_context(&context_); |
| 569 TestApplicationLoader* url_loader1 = new TestApplicationLoader; | 605 TestApplicationLoader* url_loader1 = new TestApplicationLoader; |
| 570 TestApplicationLoader* url_loader2 = new TestApplicationLoader; | 606 TestApplicationLoader* url_loader2 = new TestApplicationLoader; |
| 571 url_loader1->set_context(&context_); | 607 url_loader1->set_context(&context_); |
| 572 url_loader2->set_context(&context_); | 608 url_loader2->set_context(&context_); |
| 573 TestApplicationLoader* scheme_loader1 = new TestApplicationLoader; | 609 TestApplicationLoader* scheme_loader1 = new TestApplicationLoader; |
| 574 TestApplicationLoader* scheme_loader2 = new TestApplicationLoader; | 610 TestApplicationLoader* scheme_loader2 = new TestApplicationLoader; |
| 575 scheme_loader1->set_context(&context_); | 611 scheme_loader1->set_context(&context_); |
| 576 scheme_loader2->set_context(&context_); | 612 scheme_loader2->set_context(&context_); |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 700 // ApplicationManager, so this cannot succeed (but also shouldn't crash). | 736 // ApplicationManager, so this cannot succeed (but also shouldn't crash). |
| 701 TestCPtr c; | 737 TestCPtr c; |
| 702 application_manager_->ConnectToService(GURL(kTestAURLString), &c); | 738 application_manager_->ConnectToService(GURL(kTestAURLString), &c); |
| 703 c.set_connection_error_handler( | 739 c.set_connection_error_handler( |
| 704 []() { base::MessageLoop::current()->QuitWhenIdle(); }); | 740 []() { base::MessageLoop::current()->QuitWhenIdle(); }); |
| 705 | 741 |
| 706 loop_.Run(); | 742 loop_.Run(); |
| 707 EXPECT_TRUE(c.encountered_error()); | 743 EXPECT_TRUE(c.encountered_error()); |
| 708 } | 744 } |
| 709 | 745 |
| 746 TEST_F(ApplicationManagerTest, MappedURLsShouldNotCauseDuplicateLoad) { |
| 747 test_delegate_.AddMapping(GURL("foo:foo2"), GURL("foo:foo")); |
| 748 // 1 because ApplicationManagerTest connects once at startup. |
| 749 EXPECT_EQ(1, test_loader_->num_loads()); |
| 750 |
| 751 TestServicePtr test_service; |
| 752 application_manager_->ConnectToService(GURL("foo:foo"), &test_service); |
| 753 EXPECT_EQ(2, test_loader_->num_loads()); |
| 754 |
| 755 TestServicePtr test_service2; |
| 756 application_manager_->ConnectToService(GURL("foo:foo2"), &test_service2); |
| 757 EXPECT_EQ(2, test_loader_->num_loads()); |
| 758 |
| 759 TestServicePtr test_service3; |
| 760 application_manager_->ConnectToService(GURL("bar:bar"), &test_service2); |
| 761 EXPECT_EQ(3, test_loader_->num_loads()); |
| 762 } |
| 763 |
| 764 TEST_F(ApplicationManagerTest, MappedURLsShouldWorkWithLoaders) { |
| 765 TestApplicationLoader* custom_loader = new TestApplicationLoader; |
| 766 TestContext context; |
| 767 custom_loader->set_context(&context); |
| 768 application_manager_->SetLoaderForURL(make_scoped_ptr(custom_loader), |
| 769 GURL("mojo:foo")); |
| 770 test_delegate_.AddMapping(GURL("mojo:foo2"), GURL("mojo:foo")); |
| 771 |
| 772 TestServicePtr test_service; |
| 773 application_manager_->ConnectToService(GURL("mojo:foo2"), &test_service); |
| 774 EXPECT_EQ(1, custom_loader->num_loads()); |
| 775 custom_loader->set_context(nullptr); |
| 776 |
| 777 EXPECT_TRUE(HasRunningInstanceForURL(GURL("mojo:foo2"))); |
| 778 EXPECT_FALSE(HasRunningInstanceForURL(GURL("mojo:foo"))); |
| 779 } |
| 780 |
| 710 TEST_F(ApplicationManagerTest, TestQueryWithLoaders) { | 781 TEST_F(ApplicationManagerTest, TestQueryWithLoaders) { |
| 711 TestApplicationLoader* url_loader = new TestApplicationLoader; | 782 TestApplicationLoader* url_loader = new TestApplicationLoader; |
| 712 TestApplicationLoader* scheme_loader = new TestApplicationLoader; | 783 TestApplicationLoader* scheme_loader = new TestApplicationLoader; |
| 713 application_manager_->SetLoaderForURL( | 784 application_manager_->SetLoaderForURL( |
| 714 scoped_ptr<ApplicationLoader>(url_loader), GURL("test:test1")); | 785 scoped_ptr<ApplicationLoader>(url_loader), GURL("test:test1")); |
| 715 application_manager_->SetLoaderForScheme( | 786 application_manager_->SetLoaderForScheme( |
| 716 scoped_ptr<ApplicationLoader>(scheme_loader), "test"); | 787 scoped_ptr<ApplicationLoader>(scheme_loader), "test"); |
| 717 | 788 |
| 718 // test::test1 should go to url_loader. | 789 // test::test1 should go to url_loader. |
| 719 TestServicePtr test_service; | 790 TestServicePtr test_service; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 743 application_manager_->ConnectToApplication(params.Pass()); | 814 application_manager_->ConnectToApplication(params.Pass()); |
| 744 loop_.Run(); | 815 loop_.Run(); |
| 745 EXPECT_TRUE(called); | 816 EXPECT_TRUE(called); |
| 746 } | 817 } |
| 747 | 818 |
| 748 TEST(ApplicationManagerTest2, ContentHandlerConnectionGetsRequestorURL) { | 819 TEST(ApplicationManagerTest2, ContentHandlerConnectionGetsRequestorURL) { |
| 749 const GURL content_handler_url("http://test.content.handler"); | 820 const GURL content_handler_url("http://test.content.handler"); |
| 750 const GURL requestor_url("http://requestor.url"); | 821 const GURL requestor_url("http://requestor.url"); |
| 751 TestContext test_context; | 822 TestContext test_context; |
| 752 base::MessageLoop loop; | 823 base::MessageLoop loop; |
| 753 scoped_ptr<TestApplicationFetcher> test_application_fetcher( | 824 TestDelegate test_delegate; |
| 754 new TestApplicationFetcher); | 825 test_delegate.set_create_test_fetcher(true); |
| 755 test_application_fetcher->set_create_test_fetcher(true); | 826 ApplicationManager application_manager(&test_delegate); |
| 756 ApplicationManager application_manager(test_application_fetcher.Pass()); | |
| 757 application_manager.set_default_loader(nullptr); | 827 application_manager.set_default_loader(nullptr); |
| 758 application_manager.RegisterContentHandler(kTestMimeType, | 828 application_manager.RegisterContentHandler(kTestMimeType, |
| 759 content_handler_url); | 829 content_handler_url); |
| 760 | 830 |
| 761 TestApplicationLoader* loader = new TestApplicationLoader; | 831 TestApplicationLoader* loader = new TestApplicationLoader; |
| 762 loader->set_context(&test_context); | 832 loader->set_context(&test_context); |
| 763 application_manager.SetLoaderForURL(scoped_ptr<ApplicationLoader>(loader), | 833 application_manager.SetLoaderForURL(scoped_ptr<ApplicationLoader>(loader), |
| 764 content_handler_url); | 834 content_handler_url); |
| 765 | 835 |
| 766 bool called = false; | 836 bool called = false; |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 809 GURL("http://www.another_domain.org/abc"), &test_service); | 879 GURL("http://www.another_domain.org/abc"), &test_service); |
| 810 EXPECT_EQ(4, test_loader_->num_loads()); | 880 EXPECT_EQ(4, test_loader_->num_loads()); |
| 811 } | 881 } |
| 812 | 882 |
| 813 TEST(ApplicationManagerTest2, | 883 TEST(ApplicationManagerTest2, |
| 814 MultipleConnectionsToContentHandlerGetSameContentHandlerId) { | 884 MultipleConnectionsToContentHandlerGetSameContentHandlerId) { |
| 815 base::MessageLoop loop; | 885 base::MessageLoop loop; |
| 816 const GURL content_handler_url("http://test.content.handler"); | 886 const GURL content_handler_url("http://test.content.handler"); |
| 817 const GURL requestor_url("http://requestor.url"); | 887 const GURL requestor_url("http://requestor.url"); |
| 818 TestContext test_context; | 888 TestContext test_context; |
| 819 scoped_ptr<TestApplicationFetcher> test_application_fetcher( | 889 TestDelegate test_delegate; |
| 820 new TestApplicationFetcher); | 890 test_delegate.set_fetcher_url(GURL("test:test")); |
| 821 test_application_fetcher->set_fetcher_url(GURL("test:test")); | 891 test_delegate.set_create_test_fetcher(true); |
| 822 test_application_fetcher->set_create_test_fetcher(true); | 892 ApplicationManager application_manager(&test_delegate); |
| 823 ApplicationManager application_manager(test_application_fetcher.Pass()); | |
| 824 application_manager.set_default_loader(nullptr); | 893 application_manager.set_default_loader(nullptr); |
| 825 application_manager.RegisterContentHandler(kTestMimeType, | 894 application_manager.RegisterContentHandler(kTestMimeType, |
| 826 content_handler_url); | 895 content_handler_url); |
| 827 | 896 |
| 828 TestApplicationLoader* content_handler_loader = new TestApplicationLoader; | 897 TestApplicationLoader* content_handler_loader = new TestApplicationLoader; |
| 829 content_handler_loader->set_create_content_handler(true); | 898 content_handler_loader->set_create_content_handler(true); |
| 830 content_handler_loader->set_context(&test_context); | 899 content_handler_loader->set_context(&test_context); |
| 831 application_manager.SetLoaderForURL( | 900 application_manager.SetLoaderForURL( |
| 832 scoped_ptr<ApplicationLoader>(content_handler_loader), | 901 scoped_ptr<ApplicationLoader>(content_handler_loader), |
| 833 content_handler_url); | 902 content_handler_url); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 868 EXPECT_NE(Shell::kInvalidContentHandlerID, content_handler_id2); | 937 EXPECT_NE(Shell::kInvalidContentHandlerID, content_handler_id2); |
| 869 } | 938 } |
| 870 EXPECT_EQ(content_handler_id, content_handler_id2); | 939 EXPECT_EQ(content_handler_id, content_handler_id2); |
| 871 } | 940 } |
| 872 | 941 |
| 873 TEST(ApplicationManagerTest2, DifferedContentHandlersGetDifferentIDs) { | 942 TEST(ApplicationManagerTest2, DifferedContentHandlersGetDifferentIDs) { |
| 874 base::MessageLoop loop; | 943 base::MessageLoop loop; |
| 875 const GURL content_handler_url("http://test.content.handler"); | 944 const GURL content_handler_url("http://test.content.handler"); |
| 876 const GURL requestor_url("http://requestor.url"); | 945 const GURL requestor_url("http://requestor.url"); |
| 877 TestContext test_context; | 946 TestContext test_context; |
| 878 TestApplicationFetcher* test_application_fetcher = new TestApplicationFetcher; | 947 TestDelegate test_delegate; |
| 879 test_application_fetcher->set_fetcher_url(GURL("test:test")); | 948 test_delegate.set_fetcher_url(GURL("test:test")); |
| 880 test_application_fetcher->set_create_test_fetcher(true); | 949 test_delegate.set_create_test_fetcher(true); |
| 881 ApplicationManager application_manager( | 950 ApplicationManager application_manager(&test_delegate); |
| 882 make_scoped_ptr(test_application_fetcher)); | |
| 883 application_manager.set_default_loader(nullptr); | 951 application_manager.set_default_loader(nullptr); |
| 884 application_manager.RegisterContentHandler(kTestMimeType, | 952 application_manager.RegisterContentHandler(kTestMimeType, |
| 885 content_handler_url); | 953 content_handler_url); |
| 886 | 954 |
| 887 TestApplicationLoader* content_handler_loader = new TestApplicationLoader; | 955 TestApplicationLoader* content_handler_loader = new TestApplicationLoader; |
| 888 content_handler_loader->set_create_content_handler(true); | 956 content_handler_loader->set_create_content_handler(true); |
| 889 content_handler_loader->set_context(&test_context); | 957 content_handler_loader->set_context(&test_context); |
| 890 application_manager.SetLoaderForURL( | 958 application_manager.SetLoaderForURL( |
| 891 scoped_ptr<ApplicationLoader>(content_handler_loader), | 959 scoped_ptr<ApplicationLoader>(content_handler_loader), |
| 892 content_handler_url); | 960 content_handler_url); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 904 content_handler_id = t; | 972 content_handler_id = t; |
| 905 run_loop.Quit(); | 973 run_loop.Quit(); |
| 906 }); | 974 }); |
| 907 application_manager.ConnectToApplication(params.Pass()); | 975 application_manager.ConnectToApplication(params.Pass()); |
| 908 run_loop.Run(); | 976 run_loop.Run(); |
| 909 EXPECT_NE(Shell::kInvalidContentHandlerID, content_handler_id); | 977 EXPECT_NE(Shell::kInvalidContentHandlerID, content_handler_id); |
| 910 } | 978 } |
| 911 | 979 |
| 912 const std::string mime_type2("test/mime-type2"); | 980 const std::string mime_type2("test/mime-type2"); |
| 913 const GURL content_handler_url2("http://test.content2.handler"); | 981 const GURL content_handler_url2("http://test.content2.handler"); |
| 914 test_application_fetcher->set_fetcher_url(GURL("test2:test2")); | 982 test_delegate.set_fetcher_url(GURL("test2:test2")); |
| 915 test_application_fetcher->set_mime_type(mime_type2); | 983 test_delegate.set_mime_type(mime_type2); |
| 916 application_manager.RegisterContentHandler(mime_type2, content_handler_url2); | 984 application_manager.RegisterContentHandler(mime_type2, content_handler_url2); |
| 917 | 985 |
| 918 TestApplicationLoader* content_handler_loader2 = new TestApplicationLoader; | 986 TestApplicationLoader* content_handler_loader2 = new TestApplicationLoader; |
| 919 content_handler_loader->set_create_content_handler(true); | 987 content_handler_loader->set_create_content_handler(true); |
| 920 content_handler_loader->set_context(&test_context); | 988 content_handler_loader->set_context(&test_context); |
| 921 application_manager.SetLoaderForURL( | 989 application_manager.SetLoaderForURL( |
| 922 scoped_ptr<ApplicationLoader>(content_handler_loader2), | 990 scoped_ptr<ApplicationLoader>(content_handler_loader2), |
| 923 content_handler_url2); | 991 content_handler_url2); |
| 924 | 992 |
| 925 uint32_t content_handler_id2; | 993 uint32_t content_handler_id2; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 953 params->set_filter(GetPermissiveCapabilityFilter()); | 1021 params->set_filter(GetPermissiveCapabilityFilter()); |
| 954 params->set_connect_callback( | 1022 params->set_connect_callback( |
| 955 [&content_handler_id](uint32_t t) { content_handler_id = t; }); | 1023 [&content_handler_id](uint32_t t) { content_handler_id = t; }); |
| 956 application_manager_->ConnectToApplication(params.Pass()); | 1024 application_manager_->ConnectToApplication(params.Pass()); |
| 957 EXPECT_EQ(0u, content_handler_id); | 1025 EXPECT_EQ(0u, content_handler_id); |
| 958 } | 1026 } |
| 959 | 1027 |
| 960 } // namespace | 1028 } // namespace |
| 961 } // namespace shell | 1029 } // namespace shell |
| 962 } // namespace mojo | 1030 } // namespace mojo |
| OLD | NEW |