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 788 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
799 EXPECT_EQ(1, url_loader->num_loads()); | 799 EXPECT_EQ(1, url_loader->num_loads()); |
800 EXPECT_EQ(1, scheme_loader->num_loads()); | 800 EXPECT_EQ(1, scheme_loader->num_loads()); |
801 } | 801 } |
802 | 802 |
803 TEST_F(ApplicationManagerTest, TestEndApplicationClosure) { | 803 TEST_F(ApplicationManagerTest, TestEndApplicationClosure) { |
804 ClosingApplicationLoader* loader = new ClosingApplicationLoader(); | 804 ClosingApplicationLoader* loader = new ClosingApplicationLoader(); |
805 application_manager_->SetLoaderForScheme( | 805 application_manager_->SetLoaderForScheme( |
806 scoped_ptr<ApplicationLoader>(loader), "test"); | 806 scoped_ptr<ApplicationLoader>(loader), "test"); |
807 | 807 |
808 bool called = false; | 808 bool called = false; |
809 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 809 scoped_ptr<ConnectToApplicationParams> params(new ConnectToApplicationParams); |
810 request->url = mojo::String::From("test:test"); | 810 params->SetURLInfo(GURL("test:test")); |
811 application_manager_->ConnectToApplication( | 811 params->set_filter(GetPermissiveCapabilityFilter()); |
812 nullptr, request.Pass(), std::string(), GURL(), nullptr, nullptr, | 812 params->set_on_application_end( |
813 GetPermissiveCapabilityFilter(), | 813 base::Bind(&QuitClosure, base::Unretained(&called))); |
814 base::Bind(&QuitClosure, base::Unretained(&called)), | 814 application_manager_->ConnectToApplication(params.Pass()); |
815 EmptyConnectCallback()); | |
816 loop_.Run(); | 815 loop_.Run(); |
817 EXPECT_TRUE(called); | 816 EXPECT_TRUE(called); |
818 } | 817 } |
819 | 818 |
820 TEST(ApplicationManagerTest2, ContentHandlerConnectionGetsRequestorURL) { | 819 TEST(ApplicationManagerTest2, ContentHandlerConnectionGetsRequestorURL) { |
821 const GURL content_handler_url("http://test.content.handler"); | 820 const GURL content_handler_url("http://test.content.handler"); |
822 const GURL requestor_url("http://requestor.url"); | 821 const GURL requestor_url("http://requestor.url"); |
823 TestContext test_context; | 822 TestContext test_context; |
824 base::MessageLoop loop; | 823 base::MessageLoop loop; |
825 TestDelegate test_delegate; | 824 TestDelegate test_delegate; |
826 test_delegate.set_create_test_fetcher(true); | 825 test_delegate.set_create_test_fetcher(true); |
827 ApplicationManager application_manager(&test_delegate); | 826 ApplicationManager application_manager(&test_delegate); |
828 application_manager.set_default_loader(nullptr); | 827 application_manager.set_default_loader(nullptr); |
829 application_manager.RegisterContentHandler(kTestMimeType, | 828 application_manager.RegisterContentHandler(kTestMimeType, |
830 content_handler_url); | 829 content_handler_url); |
831 | 830 |
832 TestApplicationLoader* loader = new TestApplicationLoader; | 831 TestApplicationLoader* loader = new TestApplicationLoader; |
833 loader->set_context(&test_context); | 832 loader->set_context(&test_context); |
834 application_manager.SetLoaderForURL(scoped_ptr<ApplicationLoader>(loader), | 833 application_manager.SetLoaderForURL(scoped_ptr<ApplicationLoader>(loader), |
835 content_handler_url); | 834 content_handler_url); |
836 | 835 |
837 bool called = false; | 836 bool called = false; |
838 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 837 scoped_ptr<ConnectToApplicationParams> params(new ConnectToApplicationParams); |
839 request->url = mojo::String::From("test:test"); | 838 params->set_originator_identity(Identity(requestor_url)); |
840 application_manager.ConnectToApplication( | 839 params->set_originator_filter(GetPermissiveCapabilityFilter()); |
841 nullptr, request.Pass(), std::string(), requestor_url, nullptr, nullptr, | 840 params->SetURLInfo(GURL("test:test")); |
842 GetPermissiveCapabilityFilter(), | 841 params->set_filter(GetPermissiveCapabilityFilter()); |
843 base::Bind(&QuitClosure, base::Unretained(&called)), | 842 params->set_on_application_end( |
844 EmptyConnectCallback()); | 843 base::Bind(&QuitClosure, base::Unretained(&called))); |
| 844 application_manager.ConnectToApplication(params.Pass()); |
845 loop.Run(); | 845 loop.Run(); |
846 EXPECT_TRUE(called); | 846 EXPECT_TRUE(called); |
847 | 847 |
848 ASSERT_EQ(1, loader->num_loads()); | 848 ASSERT_EQ(1, loader->num_loads()); |
849 EXPECT_EQ(requestor_url, loader->last_requestor_url()); | 849 EXPECT_EQ(requestor_url, loader->last_requestor_url()); |
850 } | 850 } |
851 | 851 |
852 TEST_F(ApplicationManagerTest, SameIdentityShouldNotCauseDuplicateLoad) { | 852 TEST_F(ApplicationManagerTest, SameIdentityShouldNotCauseDuplicateLoad) { |
853 // 1 because ApplicationManagerTest connects once at startup. | 853 // 1 because ApplicationManagerTest connects once at startup. |
854 EXPECT_EQ(1, test_loader_->num_loads()); | 854 EXPECT_EQ(1, test_loader_->num_loads()); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
897 TestApplicationLoader* content_handler_loader = new TestApplicationLoader; | 897 TestApplicationLoader* content_handler_loader = new TestApplicationLoader; |
898 content_handler_loader->set_create_content_handler(true); | 898 content_handler_loader->set_create_content_handler(true); |
899 content_handler_loader->set_context(&test_context); | 899 content_handler_loader->set_context(&test_context); |
900 application_manager.SetLoaderForURL( | 900 application_manager.SetLoaderForURL( |
901 scoped_ptr<ApplicationLoader>(content_handler_loader), | 901 scoped_ptr<ApplicationLoader>(content_handler_loader), |
902 content_handler_url); | 902 content_handler_url); |
903 | 903 |
904 uint32_t content_handler_id; | 904 uint32_t content_handler_id; |
905 { | 905 { |
906 base::RunLoop run_loop; | 906 base::RunLoop run_loop; |
907 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 907 scoped_ptr<ConnectToApplicationParams> params( |
908 request->url = mojo::String::From("test:test"); | 908 new ConnectToApplicationParams); |
909 application_manager.ConnectToApplication( | 909 params->set_originator_identity(Identity(requestor_url)); |
910 nullptr, request.Pass(), std::string(), requestor_url, nullptr, nullptr, | 910 params->set_originator_filter(GetPermissiveCapabilityFilter()); |
911 GetPermissiveCapabilityFilter(), base::Closure(), | 911 params->SetURLInfo(GURL("test:test")); |
912 [&content_handler_id, &run_loop](uint32_t t) { | 912 params->set_filter(GetPermissiveCapabilityFilter()); |
913 content_handler_id = t; | 913 params->set_connect_callback([&content_handler_id, &run_loop](uint32_t t) { |
914 run_loop.Quit(); | 914 content_handler_id = t; |
915 }); | 915 run_loop.Quit(); |
| 916 }); |
| 917 application_manager.ConnectToApplication(params.Pass()); |
916 run_loop.Run(); | 918 run_loop.Run(); |
917 EXPECT_NE(Shell::kInvalidContentHandlerID, content_handler_id); | 919 EXPECT_NE(Shell::kInvalidContentHandlerID, content_handler_id); |
918 } | 920 } |
919 | 921 |
920 uint32_t content_handler_id2; | 922 uint32_t content_handler_id2; |
921 { | 923 { |
922 base::RunLoop run_loop; | 924 base::RunLoop run_loop; |
923 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 925 scoped_ptr<ConnectToApplicationParams> params( |
924 request->url = mojo::String::From("test:test"); | 926 new ConnectToApplicationParams); |
925 application_manager.ConnectToApplication( | 927 params->set_originator_identity(Identity(requestor_url)); |
926 nullptr, request.Pass(), std::string(), requestor_url, nullptr, nullptr, | 928 params->set_originator_filter(GetPermissiveCapabilityFilter()); |
927 GetPermissiveCapabilityFilter(), base::Closure(), | 929 params->SetURLInfo(GURL("test:test")); |
928 [&content_handler_id2, &run_loop](uint32_t t) { | 930 params->set_filter(GetPermissiveCapabilityFilter()); |
929 content_handler_id2 = t; | 931 params->set_connect_callback([&content_handler_id2, &run_loop](uint32_t t) { |
930 run_loop.Quit(); | 932 content_handler_id2 = t; |
931 }); | 933 run_loop.Quit(); |
| 934 }); |
| 935 application_manager.ConnectToApplication(params.Pass()); |
932 run_loop.Run(); | 936 run_loop.Run(); |
933 EXPECT_NE(Shell::kInvalidContentHandlerID, content_handler_id2); | 937 EXPECT_NE(Shell::kInvalidContentHandlerID, content_handler_id2); |
934 } | 938 } |
935 EXPECT_EQ(content_handler_id, content_handler_id2); | 939 EXPECT_EQ(content_handler_id, content_handler_id2); |
936 } | 940 } |
937 | 941 |
938 TEST(ApplicationManagerTest2, DifferedContentHandlersGetDifferentIDs) { | 942 TEST(ApplicationManagerTest2, DifferedContentHandlersGetDifferentIDs) { |
939 base::MessageLoop loop; | 943 base::MessageLoop loop; |
940 const GURL content_handler_url("http://test.content.handler"); | 944 const GURL content_handler_url("http://test.content.handler"); |
941 const GURL requestor_url("http://requestor.url"); | 945 const GURL requestor_url("http://requestor.url"); |
942 TestContext test_context; | 946 TestContext test_context; |
943 TestDelegate test_delegate; | 947 TestDelegate test_delegate; |
944 test_delegate.set_fetcher_url(GURL("test:test")); | 948 test_delegate.set_fetcher_url(GURL("test:test")); |
945 test_delegate.set_create_test_fetcher(true); | 949 test_delegate.set_create_test_fetcher(true); |
946 ApplicationManager application_manager(&test_delegate); | 950 ApplicationManager application_manager(&test_delegate); |
947 application_manager.set_default_loader(nullptr); | 951 application_manager.set_default_loader(nullptr); |
948 application_manager.RegisterContentHandler(kTestMimeType, | 952 application_manager.RegisterContentHandler(kTestMimeType, |
949 content_handler_url); | 953 content_handler_url); |
950 | 954 |
951 TestApplicationLoader* content_handler_loader = new TestApplicationLoader; | 955 TestApplicationLoader* content_handler_loader = new TestApplicationLoader; |
952 content_handler_loader->set_create_content_handler(true); | 956 content_handler_loader->set_create_content_handler(true); |
953 content_handler_loader->set_context(&test_context); | 957 content_handler_loader->set_context(&test_context); |
954 application_manager.SetLoaderForURL( | 958 application_manager.SetLoaderForURL( |
955 scoped_ptr<ApplicationLoader>(content_handler_loader), | 959 scoped_ptr<ApplicationLoader>(content_handler_loader), |
956 content_handler_url); | 960 content_handler_url); |
957 | 961 |
958 uint32_t content_handler_id; | 962 uint32_t content_handler_id; |
959 { | 963 { |
960 base::RunLoop run_loop; | 964 base::RunLoop run_loop; |
961 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 965 scoped_ptr<ConnectToApplicationParams> params( |
962 request->url = mojo::String::From("test:test"); | 966 new ConnectToApplicationParams); |
963 application_manager.ConnectToApplication( | 967 params->set_originator_identity(Identity(requestor_url)); |
964 nullptr, request.Pass(), std::string(), requestor_url, nullptr, nullptr, | 968 params->set_originator_filter(GetPermissiveCapabilityFilter()); |
965 GetPermissiveCapabilityFilter(), base::Closure(), | 969 params->SetURLInfo(GURL("test:test")); |
966 [&content_handler_id, &run_loop](uint32_t t) { | 970 params->set_filter(GetPermissiveCapabilityFilter()); |
967 content_handler_id = t; | 971 params->set_connect_callback([&content_handler_id, &run_loop](uint32_t t) { |
968 run_loop.Quit(); | 972 content_handler_id = t; |
969 }); | 973 run_loop.Quit(); |
| 974 }); |
| 975 application_manager.ConnectToApplication(params.Pass()); |
970 run_loop.Run(); | 976 run_loop.Run(); |
971 EXPECT_NE(Shell::kInvalidContentHandlerID, content_handler_id); | 977 EXPECT_NE(Shell::kInvalidContentHandlerID, content_handler_id); |
972 } | 978 } |
973 | 979 |
974 const std::string mime_type2("test/mime-type2"); | 980 const std::string mime_type2("test/mime-type2"); |
975 const GURL content_handler_url2("http://test.content2.handler"); | 981 const GURL content_handler_url2("http://test.content2.handler"); |
976 test_delegate.set_fetcher_url(GURL("test2:test2")); | 982 test_delegate.set_fetcher_url(GURL("test2:test2")); |
977 test_delegate.set_mime_type(mime_type2); | 983 test_delegate.set_mime_type(mime_type2); |
978 application_manager.RegisterContentHandler(mime_type2, content_handler_url2); | 984 application_manager.RegisterContentHandler(mime_type2, content_handler_url2); |
979 | 985 |
980 TestApplicationLoader* content_handler_loader2 = new TestApplicationLoader; | 986 TestApplicationLoader* content_handler_loader2 = new TestApplicationLoader; |
981 content_handler_loader->set_create_content_handler(true); | 987 content_handler_loader->set_create_content_handler(true); |
982 content_handler_loader->set_context(&test_context); | 988 content_handler_loader->set_context(&test_context); |
983 application_manager.SetLoaderForURL( | 989 application_manager.SetLoaderForURL( |
984 scoped_ptr<ApplicationLoader>(content_handler_loader2), | 990 scoped_ptr<ApplicationLoader>(content_handler_loader2), |
985 content_handler_url2); | 991 content_handler_url2); |
986 | 992 |
987 uint32_t content_handler_id2; | 993 uint32_t content_handler_id2; |
988 { | 994 { |
989 base::RunLoop run_loop; | 995 base::RunLoop run_loop; |
990 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 996 scoped_ptr<ConnectToApplicationParams> params( |
991 request->url = mojo::String::From("test2:test2"); | 997 new ConnectToApplicationParams); |
992 application_manager.ConnectToApplication( | 998 params->set_originator_identity(Identity(requestor_url)); |
993 nullptr, request.Pass(), std::string(), requestor_url, nullptr, nullptr, | 999 params->set_originator_filter(GetPermissiveCapabilityFilter()); |
994 GetPermissiveCapabilityFilter(), base::Closure(), | 1000 params->SetURLInfo(GURL("test2:test2")); |
995 [&content_handler_id2, &run_loop](uint32_t t) { | 1001 params->set_filter(GetPermissiveCapabilityFilter()); |
996 content_handler_id2 = t; | 1002 params->set_connect_callback([&content_handler_id2, &run_loop](uint32_t t) { |
997 run_loop.Quit(); | 1003 content_handler_id2 = t; |
998 }); | 1004 run_loop.Quit(); |
| 1005 }); |
| 1006 application_manager.ConnectToApplication(params.Pass()); |
999 run_loop.Run(); | 1007 run_loop.Run(); |
1000 EXPECT_NE(Shell::kInvalidContentHandlerID, content_handler_id2); | 1008 EXPECT_NE(Shell::kInvalidContentHandlerID, content_handler_id2); |
1001 } | 1009 } |
1002 EXPECT_NE(content_handler_id, content_handler_id2); | 1010 EXPECT_NE(content_handler_id, content_handler_id2); |
1003 } | 1011 } |
1004 | 1012 |
1005 TEST_F(ApplicationManagerTest, | 1013 TEST_F(ApplicationManagerTest, |
1006 ConnectWithNoContentHandlerGetsInvalidContentHandlerId) { | 1014 ConnectWithNoContentHandlerGetsInvalidContentHandlerId) { |
1007 application_manager_->SetLoaderForScheme( | 1015 application_manager_->SetLoaderForScheme( |
1008 scoped_ptr<ApplicationLoader>(new TestApplicationLoader), "test"); | 1016 scoped_ptr<ApplicationLoader>(new TestApplicationLoader), "test"); |
1009 | 1017 |
1010 uint32_t content_handler_id = 1u; | 1018 uint32_t content_handler_id = 1u; |
1011 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 1019 scoped_ptr<ConnectToApplicationParams> params(new ConnectToApplicationParams); |
1012 request->url = mojo::String::From("test:test"); | 1020 params->SetURLInfo(GURL("test:test")); |
1013 application_manager_->ConnectToApplication( | 1021 params->set_filter(GetPermissiveCapabilityFilter()); |
1014 nullptr, request.Pass(), std::string(), GURL(), nullptr, nullptr, | 1022 params->set_connect_callback( |
1015 GetPermissiveCapabilityFilter(), base::Closure(), | |
1016 [&content_handler_id](uint32_t t) { content_handler_id = t; }); | 1023 [&content_handler_id](uint32_t t) { content_handler_id = t; }); |
| 1024 application_manager_->ConnectToApplication(params.Pass()); |
1017 EXPECT_EQ(0u, content_handler_id); | 1025 EXPECT_EQ(0u, content_handler_id); |
1018 } | 1026 } |
1019 | 1027 |
1020 } // namespace | 1028 } // namespace |
1021 } // namespace shell | 1029 } // namespace shell |
1022 } // namespace mojo | 1030 } // namespace mojo |
OLD | NEW |