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

Unified Diff: chrome/browser/extensions/api/web_request/web_request_api_unittest.cc

Issue 154473002: Support redirectUrl at onHeadersReceived in WebRequest / DWR API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 6 years, 10 months 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
Index: chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
diff --git a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
index 9ee55a747e08088ea7db2d2d2ed289b27e5b2cf2..4ede0abecb39d3ec1ad28de2d54d85fead41c251 100644
--- a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
@@ -1275,9 +1275,11 @@ TEST(ExtensionWebRequestHelpersTest, TestCalculateOnHeadersReceivedDelta) {
new_headers.push_back(ResponseHeader("Key2", "Value1")); // Modified
// Key3 is deleted
new_headers.push_back(ResponseHeader("Key4", "Value4")); // Added
+ GURL effective_new_url;
scoped_ptr<EventResponseDelta> delta(CalculateOnHeadersReceivedDelta(
- "extid", base::Time::Now(), cancel, base_headers.get(), &new_headers));
+ "extid", base::Time::Now(), cancel, effective_new_url,
+ base_headers.get(), &new_headers));
ASSERT_TRUE(delta.get());
EXPECT_TRUE(delta->cancel);
EXPECT_EQ(2u, delta->added_response_headers.size());
@@ -1944,6 +1946,7 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) {
ExtensionWarningSet warning_set;
std::string header_value;
EventResponseDeltas deltas;
+ GURL effective_new_url;
char base_headers_string[] =
"HTTP/1.0 200 OK\r\n"
@@ -1960,8 +1963,9 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) {
new EventResponseDelta("extid0", base::Time::FromInternalValue(3000)));
deltas.push_back(d0);
scoped_refptr<net::HttpResponseHeaders> new_headers0;
- MergeOnHeadersReceivedResponses(deltas, base_headers.get(), &new_headers0,
- &warning_set, &net_log);
+ MergeOnHeadersReceivedResponses(
+ deltas, &effective_new_url, base_headers.get(), &new_headers0,
+ &warning_set, &net_log);
EXPECT_FALSE(new_headers0.get());
EXPECT_EQ(0u, warning_set.size());
EXPECT_EQ(0u, capturing_net_log.GetSize());
@@ -1977,7 +1981,8 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) {
capturing_net_log.Clear();
scoped_refptr<net::HttpResponseHeaders> new_headers1;
MergeOnHeadersReceivedResponses(
- deltas, base_headers.get(), &new_headers1, &warning_set, &net_log);
+ deltas, &effective_new_url, base_headers.get(), &new_headers1,
+ &warning_set, &net_log);
ASSERT_TRUE(new_headers1.get());
std::multimap<std::string, std::string> expected1;
expected1.insert(std::pair<std::string, std::string>("Key2", "Value3"));
@@ -2005,7 +2010,8 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) {
capturing_net_log.Clear();
scoped_refptr<net::HttpResponseHeaders> new_headers2;
MergeOnHeadersReceivedResponses(
- deltas, base_headers.get(), &new_headers2, &warning_set, &net_log);
+ deltas, &effective_new_url, base_headers.get(), &new_headers2,
+ &warning_set, &net_log);
ASSERT_TRUE(new_headers2.get());
iter = NULL;
std::multimap<std::string, std::string> actual2;
@@ -2026,6 +2032,7 @@ TEST(ExtensionWebRequestHelpersTest,
ExtensionWarningSet warning_set;
std::string header_value;
EventResponseDeltas deltas;
+ GURL effective_new_url;
char base_headers_string[] =
"HTTP/1.0 200 OK\r\n"
@@ -2045,7 +2052,8 @@ TEST(ExtensionWebRequestHelpersTest,
deltas.push_back(d1);
scoped_refptr<net::HttpResponseHeaders> new_headers1;
MergeOnHeadersReceivedResponses(
- deltas, base_headers.get(), &new_headers1, &warning_set, &net_log);
+ deltas, &effective_new_url, base_headers.get(), &new_headers1,
+ &warning_set, &net_log);
ASSERT_TRUE(new_headers1.get());
std::multimap<std::string, std::string> expected1;
expected1.insert(std::pair<std::string, std::string>("Key1", "Value1"));
@@ -2063,6 +2071,40 @@ TEST(ExtensionWebRequestHelpersTest,
EXPECT_EQ(1u, capturing_net_log.GetSize());
}
+// Tests whether onHeadersReceived can initiate a redirect.
+// The URL merge logic is shared with onBeforeRequest, so we only need to test
+// whether the URLs are merged at all.
+TEST(ExtensionWebRequestHelpersTest,
+ TestMergeOnHeadersReceivedResponsesRedirect) {
+ EventResponseDeltas deltas;
+ net::CapturingBoundNetLog capturing_net_log;
+ net::BoundNetLog net_log = capturing_net_log.bound();
+ ExtensionWarningSet warning_set;
+ GURL effective_new_url;
+
+ // No redirect
+ linked_ptr<EventResponseDelta> d0(
+ new EventResponseDelta("extid0", base::Time::FromInternalValue(0)));
+ deltas.push_back(d0);
+ MergeOnBeforeRequestResponses(
+ deltas, &effective_new_url, &warning_set, &net_log);
+ EXPECT_TRUE(effective_new_url.is_empty());
+
+ // Single redirect.
+ GURL new_url_1("http://foo.com");
+ linked_ptr<EventResponseDelta> d1(
+ new EventResponseDelta("extid1", base::Time::FromInternalValue(1000)));
+ d1->new_url = GURL(new_url_1);
+ deltas.push_back(d1);
+ deltas.sort(&InDecreasingExtensionInstallationTimeOrder);
+ capturing_net_log.Clear();
+ MergeOnBeforeRequestResponses(
+ deltas, &effective_new_url, &warning_set, &net_log);
+ EXPECT_EQ(new_url_1, effective_new_url);
+ EXPECT_TRUE(warning_set.empty());
+ EXPECT_EQ(1u, capturing_net_log.GetSize());
+}
+
TEST(ExtensionWebRequestHelpersTest, TestMergeOnAuthRequiredResponses) {
net::CapturingBoundNetLog capturing_net_log;
net::BoundNetLog net_log = capturing_net_log.bound();

Powered by Google App Engine
This is Rietveld 408576698