OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <queue> | 5 #include <queue> |
6 #include <map> | 6 #include <map> |
7 | 7 |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
(...skipping 970 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
981 event_log.clear(); | 981 event_log.clear(); |
982 MergeOnBeforeRequestResponses( | 982 MergeOnBeforeRequestResponses( |
983 deltas, &effective_new_url, &conflicting_extensions, &event_log); | 983 deltas, &effective_new_url, &conflicting_extensions, &event_log); |
984 EXPECT_EQ(new_url_3, effective_new_url); | 984 EXPECT_EQ(new_url_3, effective_new_url); |
985 EXPECT_EQ(2u, conflicting_extensions.size()); | 985 EXPECT_EQ(2u, conflicting_extensions.size()); |
986 EXPECT_TRUE(ContainsKey(conflicting_extensions, "extid1")); | 986 EXPECT_TRUE(ContainsKey(conflicting_extensions, "extid1")); |
987 EXPECT_TRUE(ContainsKey(conflicting_extensions, "extid2")); | 987 EXPECT_TRUE(ContainsKey(conflicting_extensions, "extid2")); |
988 EXPECT_EQ(4u, event_log.size()); | 988 EXPECT_EQ(4u, event_log.size()); |
989 } | 989 } |
990 | 990 |
| 991 // This tests that we can redirect to data:// urls, which is considered |
| 992 // a kind of cancelling requests. |
| 993 TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeRequestResponses2) { |
| 994 using namespace extension_webrequest_api_helpers; |
| 995 EventResponseDeltas deltas; |
| 996 EventLogEntries event_log; |
| 997 std::set<std::string> conflicting_extensions; |
| 998 GURL effective_new_url; |
| 999 |
| 1000 // Single redirect. |
| 1001 GURL new_url_0("http://foo.com"); |
| 1002 linked_ptr<EventResponseDelta> d0( |
| 1003 new EventResponseDelta("extid0", base::Time::FromInternalValue(2000))); |
| 1004 d0->new_url = GURL(new_url_0); |
| 1005 deltas.push_back(d0); |
| 1006 MergeOnBeforeRequestResponses( |
| 1007 deltas, &effective_new_url, &conflicting_extensions, &event_log); |
| 1008 EXPECT_EQ(new_url_0, effective_new_url); |
| 1009 |
| 1010 // Cancel request by redirecting to a data:// URL. This shall override |
| 1011 // the other redirect but not cause any conflict warnings. |
| 1012 GURL new_url_1("data://foo"); |
| 1013 linked_ptr<EventResponseDelta> d1( |
| 1014 new EventResponseDelta("extid1", base::Time::FromInternalValue(1500))); |
| 1015 d1->new_url = GURL(new_url_1); |
| 1016 deltas.push_back(d1); |
| 1017 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
| 1018 event_log.clear(); |
| 1019 MergeOnBeforeRequestResponses( |
| 1020 deltas, &effective_new_url, &conflicting_extensions, &event_log); |
| 1021 EXPECT_EQ(new_url_1, effective_new_url); |
| 1022 EXPECT_TRUE(conflicting_extensions.empty()); |
| 1023 EXPECT_EQ(1u, event_log.size()); |
| 1024 |
| 1025 // Cancel request by redirecting to the same data:// URL. This shall |
| 1026 // not create any conflicts as it is in line with d1. |
| 1027 GURL new_url_2("data://foo"); |
| 1028 linked_ptr<EventResponseDelta> d2( |
| 1029 new EventResponseDelta("extid2", base::Time::FromInternalValue(1000))); |
| 1030 d2->new_url = GURL(new_url_2); |
| 1031 deltas.push_back(d2); |
| 1032 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
| 1033 event_log.clear(); |
| 1034 MergeOnBeforeRequestResponses( |
| 1035 deltas, &effective_new_url, &conflicting_extensions, &event_log); |
| 1036 EXPECT_EQ(new_url_1, effective_new_url); |
| 1037 EXPECT_TRUE(conflicting_extensions.empty()); |
| 1038 EXPECT_EQ(2u, event_log.size()); |
| 1039 |
| 1040 // Cancel redirect by redirecting to a different data:// URL. This needs |
| 1041 // to create a conflict. |
| 1042 GURL new_url_3("data://something_totally_different"); |
| 1043 linked_ptr<EventResponseDelta> d3( |
| 1044 new EventResponseDelta("extid3", base::Time::FromInternalValue(500))); |
| 1045 d3->new_url = GURL(new_url_3); |
| 1046 deltas.push_back(d3); |
| 1047 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
| 1048 event_log.clear(); |
| 1049 MergeOnBeforeRequestResponses( |
| 1050 deltas, &effective_new_url, &conflicting_extensions, &event_log); |
| 1051 EXPECT_EQ(new_url_1, effective_new_url); |
| 1052 EXPECT_EQ(1u, conflicting_extensions.size()); |
| 1053 EXPECT_TRUE(ContainsKey(conflicting_extensions, "extid3")); |
| 1054 EXPECT_EQ(3u, event_log.size()); |
| 1055 } |
| 1056 |
991 TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeSendHeadersResponses) { | 1057 TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeSendHeadersResponses) { |
992 using namespace extension_webrequest_api_helpers; | 1058 using namespace extension_webrequest_api_helpers; |
993 net::HttpRequestHeaders base_headers; | 1059 net::HttpRequestHeaders base_headers; |
994 base_headers.AddHeaderFromString("key1: value 1"); | 1060 base_headers.AddHeaderFromString("key1: value 1"); |
995 base_headers.AddHeaderFromString("key2: value 2"); | 1061 base_headers.AddHeaderFromString("key2: value 2"); |
996 EventLogEntries event_log; | 1062 EventLogEntries event_log; |
997 std::set<std::string> conflicting_extensions; | 1063 std::set<std::string> conflicting_extensions; |
998 std::string header_value; | 1064 std::string header_value; |
999 EventResponseDeltas deltas; | 1065 EventResponseDeltas deltas; |
1000 | 1066 |
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1285 credentials_set = MergeOnAuthRequiredResponses( | 1351 credentials_set = MergeOnAuthRequiredResponses( |
1286 deltas, &auth3, &conflicting_extensions, &event_log); | 1352 deltas, &auth3, &conflicting_extensions, &event_log); |
1287 EXPECT_TRUE(credentials_set); | 1353 EXPECT_TRUE(credentials_set); |
1288 EXPECT_FALSE(auth3.Empty()); | 1354 EXPECT_FALSE(auth3.Empty()); |
1289 EXPECT_EQ(username, auth1.username()); | 1355 EXPECT_EQ(username, auth1.username()); |
1290 EXPECT_EQ(password, auth1.password()); | 1356 EXPECT_EQ(password, auth1.password()); |
1291 EXPECT_EQ(1u, conflicting_extensions.size()); | 1357 EXPECT_EQ(1u, conflicting_extensions.size()); |
1292 EXPECT_TRUE(ContainsKey(conflicting_extensions, "extid2")); | 1358 EXPECT_TRUE(ContainsKey(conflicting_extensions, "extid2")); |
1293 EXPECT_EQ(3u, event_log.size()); | 1359 EXPECT_EQ(3u, event_log.size()); |
1294 } | 1360 } |
OLD | NEW |