Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Side by Side Diff: chrome/browser/extensions/extension_webrequest_api_unittest.cc

Issue 8802017: Consider redirects to data:// urls as cancelling a request and don't report conflicts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/extensions/extension_webrequest_api_helpers.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_webrequest_api_helpers.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698