| 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..bfa728bac95fd5bd876fd3ae8e2aaae840e33b75 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());
|
| @@ -2063,6 +2065,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();
|
|
|