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 8cd15af9a9d5389e9e67b37797a278c5764721a4..95c3b97f0a42edaa598003c5935521c731f2806e 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 |
@@ -1756,15 +1756,21 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeSendHeadersResponses) { |
linked_ptr<EventResponseDelta> d0( |
new EventResponseDelta("extid0", base::Time::FromInternalValue(2500))); |
deltas.push_back(d0); |
+ bool request_headers_modified0; |
+ bool request_cookies_modified0; |
net::HttpRequestHeaders headers0; |
headers0.MergeFrom(base_headers); |
- MergeOnBeforeSendHeadersResponses(deltas, &headers0, &warning_set, &net_log); |
+ MergeOnBeforeSendHeadersResponses(deltas, &headers0, &warning_set, &net_log, |
+ &request_headers_modified0, |
+ &request_cookies_modified0); |
ASSERT_TRUE(headers0.GetHeader("key1", &header_value)); |
EXPECT_EQ("value 1", header_value); |
ASSERT_TRUE(headers0.GetHeader("key2", &header_value)); |
EXPECT_EQ("value 2", header_value); |
EXPECT_EQ(0u, warning_set.size()); |
EXPECT_EQ(0u, capturing_net_log.GetSize()); |
+ EXPECT_FALSE(request_headers_modified0); |
+ EXPECT_FALSE(request_cookies_modified0); |
// Delete, modify and add a header. |
linked_ptr<EventResponseDelta> d1( |
@@ -1776,9 +1782,13 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeSendHeadersResponses) { |
deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
warning_set.clear(); |
capturing_net_log.Clear(); |
+ bool request_headers_modified1; |
+ bool request_cookies_modified1; |
net::HttpRequestHeaders headers1; |
headers1.MergeFrom(base_headers); |
- MergeOnBeforeSendHeadersResponses(deltas, &headers1, &warning_set, &net_log); |
+ MergeOnBeforeSendHeadersResponses(deltas, &headers1, &warning_set, &net_log, |
+ &request_headers_modified1, |
+ &request_cookies_modified1); |
EXPECT_FALSE(headers1.HasHeader("key1")); |
ASSERT_TRUE(headers1.GetHeader("key2", &header_value)); |
EXPECT_EQ("value 3", header_value); |
@@ -1786,6 +1796,8 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeSendHeadersResponses) { |
EXPECT_EQ("value 3", header_value); |
EXPECT_EQ(0u, warning_set.size()); |
EXPECT_EQ(1u, capturing_net_log.GetSize()); |
+ EXPECT_TRUE(request_headers_modified1); |
+ EXPECT_FALSE(request_cookies_modified1); |
// Check that conflicts are atomic, i.e. if one header modification |
// collides all other conflicts of the same extension are declined as well. |
@@ -1798,9 +1810,13 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeSendHeadersResponses) { |
deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
warning_set.clear(); |
capturing_net_log.Clear(); |
+ bool request_headers_modified2; |
+ bool request_cookies_modified2; |
net::HttpRequestHeaders headers2; |
headers2.MergeFrom(base_headers); |
- MergeOnBeforeSendHeadersResponses(deltas, &headers2, &warning_set, &net_log); |
+ MergeOnBeforeSendHeadersResponses(deltas, &headers2, &warning_set, &net_log, |
+ &request_headers_modified2, |
+ &request_cookies_modified2); |
EXPECT_FALSE(headers2.HasHeader("key1")); |
ASSERT_TRUE(headers2.GetHeader("key2", &header_value)); |
EXPECT_EQ("value 3", header_value); |
@@ -1810,6 +1826,8 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeSendHeadersResponses) { |
EXPECT_EQ(1u, warning_set.size()); |
EXPECT_TRUE(HasWarning(warning_set, "extid2")); |
EXPECT_EQ(2u, capturing_net_log.GetSize()); |
+ EXPECT_TRUE(request_headers_modified2); |
+ EXPECT_FALSE(request_cookies_modified2); |
// Check that identical modifications don't conflict and operations |
// can be merged. |
@@ -1822,9 +1840,13 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeSendHeadersResponses) { |
deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
warning_set.clear(); |
capturing_net_log.Clear(); |
+ bool request_headers_modified3; |
+ bool request_cookies_modified3; |
net::HttpRequestHeaders headers3; |
headers3.MergeFrom(base_headers); |
- MergeOnBeforeSendHeadersResponses(deltas, &headers3, &warning_set, &net_log); |
+ MergeOnBeforeSendHeadersResponses(deltas, &headers3, &warning_set, &net_log, |
+ &request_headers_modified3, |
+ &request_cookies_modified3); |
EXPECT_FALSE(headers3.HasHeader("key1")); |
ASSERT_TRUE(headers3.GetHeader("key2", &header_value)); |
EXPECT_EQ("value 3", header_value); |
@@ -1835,6 +1857,8 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeSendHeadersResponses) { |
EXPECT_EQ(1u, warning_set.size()); |
EXPECT_TRUE(HasWarning(warning_set, "extid2")); |
EXPECT_EQ(3u, capturing_net_log.GetSize()); |
+ EXPECT_TRUE(request_headers_modified3); |
+ EXPECT_FALSE(request_cookies_modified3); |
} |
TEST(ExtensionWebRequestHelpersTest, |
@@ -1887,15 +1911,21 @@ TEST(ExtensionWebRequestHelpersTest, |
deltas.push_back(delta); |
} |
deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
+ bool request_headers_modified1; |
+ bool request_cookies_modified1; |
net::HttpRequestHeaders headers1; |
headers1.MergeFrom(base_headers); |
warning_set.clear(); |
- MergeOnBeforeSendHeadersResponses(deltas, &headers1, &warning_set, &net_log); |
+ MergeOnBeforeSendHeadersResponses(deltas, &headers1, &warning_set, &net_log, |
+ &request_headers_modified1, |
+ &request_cookies_modified1); |
EXPECT_TRUE(headers1.HasHeader("Cookie")); |
ASSERT_TRUE(headers1.GetHeader("Cookie", &header_value)); |
EXPECT_EQ("name=new value; name2=new value; name4=\"value 4\"", header_value); |
EXPECT_EQ(0u, warning_set.size()); |
EXPECT_EQ(0u, capturing_net_log.GetSize()); |
+ EXPECT_FALSE(request_headers_modified1); |
+ EXPECT_TRUE(request_cookies_modified1); |
} |
namespace { |
@@ -1961,12 +1991,15 @@ TEST(ExtensionWebRequestHelpersTest, |
linked_ptr<EventResponseDelta> d0( |
new EventResponseDelta("extid0", base::Time::FromInternalValue(3000))); |
deltas.push_back(d0); |
+ bool response_cookies_modified0; |
scoped_refptr<net::HttpResponseHeaders> new_headers0; |
MergeCookiesInOnHeadersReceivedResponses( |
- deltas, base_headers.get(), &new_headers0, &warning_set, &net_log); |
+ deltas, base_headers.get(), &new_headers0, &warning_set, &net_log, |
+ &response_cookies_modified0); |
EXPECT_FALSE(new_headers0.get()); |
EXPECT_EQ(0u, warning_set.size()); |
EXPECT_EQ(0u, capturing_net_log.GetSize()); |
+ EXPECT_FALSE(response_cookies_modified0); |
linked_ptr<ResponseCookieModification> add_cookie = |
make_linked_ptr(new ResponseCookieModification); |
@@ -2125,6 +2158,7 @@ TEST(ExtensionWebRequestHelpersTest, |
deltas.push_back(delta); |
} |
deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
+ bool response_cookies_modified1; |
scoped_refptr<net::HttpResponseHeaders> headers1( |
new net::HttpResponseHeaders( |
net::HttpUtil::AssembleRawHeaders( |
@@ -2132,7 +2166,8 @@ TEST(ExtensionWebRequestHelpersTest, |
scoped_refptr<net::HttpResponseHeaders> new_headers1; |
warning_set.clear(); |
MergeCookiesInOnHeadersReceivedResponses( |
- deltas, headers1.get(), &new_headers1, &warning_set, &net_log); |
+ deltas, headers1.get(), &new_headers1, &warning_set, &net_log, |
+ &response_cookies_modified1); |
EXPECT_TRUE(new_headers1->HasHeader("Foo")); |
size_t iter = 0; |
@@ -2158,6 +2193,7 @@ TEST(ExtensionWebRequestHelpersTest, |
EXPECT_EQ(expected_cookies, actual_cookies); |
EXPECT_EQ(0u, warning_set.size()); |
EXPECT_EQ(0u, capturing_net_log.GetSize()); |
+ EXPECT_TRUE(response_cookies_modified1); |
} |
TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) { |
@@ -2181,18 +2217,20 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) { |
linked_ptr<EventResponseDelta> d0( |
new EventResponseDelta("extid0", base::Time::FromInternalValue(3000))); |
deltas.push_back(d0); |
+ bool response_headers_modified0; |
+ bool response_cookies_modified0; |
scoped_refptr<net::HttpResponseHeaders> new_headers0; |
GURL allowed_unsafe_redirect_url0; |
- MergeOnHeadersReceivedResponses(deltas, |
- base_headers.get(), |
- &new_headers0, |
- &allowed_unsafe_redirect_url0, |
- &warning_set, |
- &net_log); |
+ MergeOnHeadersReceivedResponses(deltas, base_headers.get(), &new_headers0, |
+ &allowed_unsafe_redirect_url0, &warning_set, |
+ &net_log, &response_headers_modified0, |
+ &response_cookies_modified0); |
EXPECT_FALSE(new_headers0.get()); |
EXPECT_TRUE(allowed_unsafe_redirect_url0.is_empty()); |
EXPECT_EQ(0u, warning_set.size()); |
EXPECT_EQ(0u, capturing_net_log.GetSize()); |
+ EXPECT_FALSE(response_headers_modified0); |
+ EXPECT_FALSE(response_cookies_modified0); |
linked_ptr<EventResponseDelta> d1( |
new EventResponseDelta("extid1", base::Time::FromInternalValue(2000))); |
@@ -2203,14 +2241,14 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) { |
deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
warning_set.clear(); |
capturing_net_log.Clear(); |
+ bool response_headers_modified1; |
+ bool response_cookies_modified1; |
scoped_refptr<net::HttpResponseHeaders> new_headers1; |
GURL allowed_unsafe_redirect_url1; |
- MergeOnHeadersReceivedResponses(deltas, |
- base_headers.get(), |
- &new_headers1, |
- &allowed_unsafe_redirect_url1, |
- &warning_set, |
- &net_log); |
+ MergeOnHeadersReceivedResponses(deltas, base_headers.get(), &new_headers1, |
+ &allowed_unsafe_redirect_url1, &warning_set, |
+ &net_log, &response_headers_modified1, |
+ &response_cookies_modified1); |
ASSERT_TRUE(new_headers1.get()); |
EXPECT_TRUE(allowed_unsafe_redirect_url1.is_empty()); |
std::multimap<std::string, std::string> expected1; |
@@ -2225,6 +2263,8 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) { |
EXPECT_EQ(expected1, actual1); |
EXPECT_EQ(0u, warning_set.size()); |
EXPECT_EQ(1u, capturing_net_log.GetSize()); |
+ EXPECT_TRUE(response_headers_modified1); |
+ EXPECT_FALSE(response_cookies_modified1); |
// Check that we replace response headers only once. |
linked_ptr<EventResponseDelta> d2( |
@@ -2237,14 +2277,14 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) { |
deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
warning_set.clear(); |
capturing_net_log.Clear(); |
+ bool response_headers_modified2; |
+ bool response_cookies_modified2; |
scoped_refptr<net::HttpResponseHeaders> new_headers2; |
GURL allowed_unsafe_redirect_url2; |
- MergeOnHeadersReceivedResponses(deltas, |
- base_headers.get(), |
- &new_headers2, |
- &allowed_unsafe_redirect_url2, |
- &warning_set, |
- &net_log); |
+ MergeOnHeadersReceivedResponses(deltas, base_headers.get(), &new_headers2, |
+ &allowed_unsafe_redirect_url2, &warning_set, |
+ &net_log, &response_headers_modified2, |
+ &response_cookies_modified2); |
ASSERT_TRUE(new_headers2.get()); |
EXPECT_TRUE(allowed_unsafe_redirect_url2.is_empty()); |
iter = 0; |
@@ -2256,6 +2296,8 @@ TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) { |
EXPECT_EQ(1u, warning_set.size()); |
EXPECT_TRUE(HasWarning(warning_set, "extid2")); |
EXPECT_EQ(2u, capturing_net_log.GetSize()); |
+ EXPECT_TRUE(response_headers_modified2); |
+ EXPECT_FALSE(response_cookies_modified2); |
} |
// Check that we do not delete too much |
@@ -2283,14 +2325,14 @@ TEST(ExtensionWebRequestHelpersTest, |
new EventResponseDelta("extid1", base::Time::FromInternalValue(2000))); |
d1->deleted_response_headers.push_back(ResponseHeader("KEY1", "Value2")); |
deltas.push_back(d1); |
+ bool response_headers_modified1; |
+ bool response_cookies_modified1; |
scoped_refptr<net::HttpResponseHeaders> new_headers1; |
GURL allowed_unsafe_redirect_url1; |
- MergeOnHeadersReceivedResponses(deltas, |
- base_headers.get(), |
- &new_headers1, |
- &allowed_unsafe_redirect_url1, |
- &warning_set, |
- &net_log); |
+ MergeOnHeadersReceivedResponses(deltas, base_headers.get(), &new_headers1, |
+ &allowed_unsafe_redirect_url1, &warning_set, |
+ &net_log, &response_headers_modified1, |
+ &response_cookies_modified1); |
ASSERT_TRUE(new_headers1.get()); |
EXPECT_TRUE(allowed_unsafe_redirect_url1.is_empty()); |
std::multimap<std::string, std::string> expected1; |
@@ -2307,6 +2349,8 @@ TEST(ExtensionWebRequestHelpersTest, |
EXPECT_EQ(expected1, actual1); |
EXPECT_EQ(0u, warning_set.size()); |
EXPECT_EQ(1u, capturing_net_log.GetSize()); |
+ EXPECT_TRUE(response_headers_modified1); |
+ EXPECT_FALSE(response_cookies_modified1); |
} |
// Tests whether onHeadersReceived can initiate a redirect. |
@@ -2330,18 +2374,20 @@ TEST(ExtensionWebRequestHelpersTest, |
linked_ptr<EventResponseDelta> d0( |
new EventResponseDelta("extid0", base::Time::FromInternalValue(0))); |
deltas.push_back(d0); |
+ bool response_headers_modified0; |
+ bool response_cookies_modified0; |
scoped_refptr<net::HttpResponseHeaders> new_headers0; |
GURL allowed_unsafe_redirect_url0; |
- MergeOnHeadersReceivedResponses(deltas, |
- base_headers.get(), |
- &new_headers0, |
- &allowed_unsafe_redirect_url0, |
- &warning_set, |
- &net_log); |
+ MergeOnHeadersReceivedResponses(deltas, base_headers.get(), &new_headers0, |
+ &allowed_unsafe_redirect_url0, &warning_set, |
+ &net_log, &response_headers_modified0, |
+ &response_cookies_modified0); |
EXPECT_FALSE(new_headers0.get()); |
EXPECT_TRUE(allowed_unsafe_redirect_url0.is_empty()); |
EXPECT_EQ(0u, warning_set.size()); |
EXPECT_EQ(0u, capturing_net_log.GetSize()); |
+ EXPECT_FALSE(response_headers_modified0); |
+ EXPECT_FALSE(response_cookies_modified0); |
// Single redirect. |
GURL new_url_1("http://foo.com"); |
@@ -2351,20 +2397,21 @@ TEST(ExtensionWebRequestHelpersTest, |
deltas.push_back(d1); |
deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
capturing_net_log.Clear(); |
+ bool response_headers_modified1; |
+ bool response_cookies_modified1; |
scoped_refptr<net::HttpResponseHeaders> new_headers1; |
GURL allowed_unsafe_redirect_url1; |
- MergeOnHeadersReceivedResponses(deltas, |
- base_headers.get(), |
- &new_headers1, |
- &allowed_unsafe_redirect_url1, |
- &warning_set, |
- &net_log); |
- |
+ MergeOnHeadersReceivedResponses(deltas, base_headers.get(), &new_headers1, |
+ &allowed_unsafe_redirect_url1, &warning_set, |
+ &net_log, &response_headers_modified1, |
+ &response_cookies_modified1); |
EXPECT_TRUE(new_headers1.get()); |
EXPECT_TRUE(new_headers1->HasHeaderValue("Location", new_url_1.spec())); |
EXPECT_EQ(new_url_1, allowed_unsafe_redirect_url1); |
EXPECT_TRUE(warning_set.empty()); |
EXPECT_EQ(1u, capturing_net_log.GetSize()); |
+ EXPECT_FALSE(response_headers_modified1); |
+ EXPECT_FALSE(response_cookies_modified1); |
} |
TEST(ExtensionWebRequestHelpersTest, TestMergeOnAuthRequiredResponses) { |