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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/extensions/extension_webrequest_api_helpers.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/extension_webrequest_api_unittest.cc
diff --git a/chrome/browser/extensions/extension_webrequest_api_unittest.cc b/chrome/browser/extensions/extension_webrequest_api_unittest.cc
index 7d6d6936698be0cca704e97661067cd8563f9848..2d266b5bd1de495c8c3e7f182db079975681ba7c 100644
--- a/chrome/browser/extensions/extension_webrequest_api_unittest.cc
+++ b/chrome/browser/extensions/extension_webrequest_api_unittest.cc
@@ -988,6 +988,72 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeRequestResponses) {
EXPECT_EQ(4u, event_log.size());
}
+// This tests that we can redirect to data:// urls, which is considered
+// a kind of cancelling requests.
+TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeRequestResponses2) {
+ using namespace extension_webrequest_api_helpers;
+ EventResponseDeltas deltas;
+ EventLogEntries event_log;
+ std::set<std::string> conflicting_extensions;
+ GURL effective_new_url;
+
+ // Single redirect.
+ GURL new_url_0("http://foo.com");
+ linked_ptr<EventResponseDelta> d0(
+ new EventResponseDelta("extid0", base::Time::FromInternalValue(2000)));
+ d0->new_url = GURL(new_url_0);
+ deltas.push_back(d0);
+ MergeOnBeforeRequestResponses(
+ deltas, &effective_new_url, &conflicting_extensions, &event_log);
+ EXPECT_EQ(new_url_0, effective_new_url);
+
+ // Cancel request by redirecting to a data:// URL. This shall override
+ // the other redirect but not cause any conflict warnings.
+ GURL new_url_1("data://foo");
+ linked_ptr<EventResponseDelta> d1(
+ new EventResponseDelta("extid1", base::Time::FromInternalValue(1500)));
+ d1->new_url = GURL(new_url_1);
+ deltas.push_back(d1);
+ deltas.sort(&InDecreasingExtensionInstallationTimeOrder);
+ event_log.clear();
+ MergeOnBeforeRequestResponses(
+ deltas, &effective_new_url, &conflicting_extensions, &event_log);
+ EXPECT_EQ(new_url_1, effective_new_url);
+ EXPECT_TRUE(conflicting_extensions.empty());
+ EXPECT_EQ(1u, event_log.size());
+
+ // Cancel request by redirecting to the same data:// URL. This shall
+ // not create any conflicts as it is in line with d1.
+ GURL new_url_2("data://foo");
+ linked_ptr<EventResponseDelta> d2(
+ new EventResponseDelta("extid2", base::Time::FromInternalValue(1000)));
+ d2->new_url = GURL(new_url_2);
+ deltas.push_back(d2);
+ deltas.sort(&InDecreasingExtensionInstallationTimeOrder);
+ event_log.clear();
+ MergeOnBeforeRequestResponses(
+ deltas, &effective_new_url, &conflicting_extensions, &event_log);
+ EXPECT_EQ(new_url_1, effective_new_url);
+ EXPECT_TRUE(conflicting_extensions.empty());
+ EXPECT_EQ(2u, event_log.size());
+
+ // Cancel redirect by redirecting to a different data:// URL. This needs
+ // to create a conflict.
+ GURL new_url_3("data://something_totally_different");
+ linked_ptr<EventResponseDelta> d3(
+ new EventResponseDelta("extid3", base::Time::FromInternalValue(500)));
+ d3->new_url = GURL(new_url_3);
+ deltas.push_back(d3);
+ deltas.sort(&InDecreasingExtensionInstallationTimeOrder);
+ event_log.clear();
+ MergeOnBeforeRequestResponses(
+ deltas, &effective_new_url, &conflicting_extensions, &event_log);
+ EXPECT_EQ(new_url_1, effective_new_url);
+ EXPECT_EQ(1u, conflicting_extensions.size());
+ EXPECT_TRUE(ContainsKey(conflicting_extensions, "extid3"));
+ EXPECT_EQ(3u, event_log.size());
+}
+
TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeSendHeadersResponses) {
using namespace extension_webrequest_api_helpers;
net::HttpRequestHeaders base_headers;
« 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