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