OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 910 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
921 ASSERT_TRUE( | 921 ASSERT_TRUE( |
922 delta_modified2->modified_request_headers.GetHeader("key2", &value)); | 922 delta_modified2->modified_request_headers.GetHeader("key2", &value)); |
923 EXPECT_EQ("value3", value); | 923 EXPECT_EQ("value3", value); |
924 } | 924 } |
925 | 925 |
926 TEST(ExtensionWebRequestHelpersTest, TestCalculateOnHeadersReceivedDelta) { | 926 TEST(ExtensionWebRequestHelpersTest, TestCalculateOnHeadersReceivedDelta) { |
927 const bool cancel = true; | 927 const bool cancel = true; |
928 char base_headers_string[] = | 928 char base_headers_string[] = |
929 "HTTP/1.0 200 OK\r\n" | 929 "HTTP/1.0 200 OK\r\n" |
930 "Key1: Value1\r\n" | 930 "Key1: Value1\r\n" |
931 "Key2: Value2\r\n" | 931 "Key2: Value2, Bar\r\n" |
932 "Key3: Value3\r\n" | 932 "Key3: Value3\r\n" |
933 "\r\n"; | 933 "\r\n"; |
934 scoped_refptr<net::HttpResponseHeaders> base_headers( | 934 scoped_refptr<net::HttpResponseHeaders> base_headers( |
935 new net::HttpResponseHeaders( | 935 new net::HttpResponseHeaders( |
936 net::HttpUtil::AssembleRawHeaders( | 936 net::HttpUtil::AssembleRawHeaders( |
937 base_headers_string, sizeof(base_headers_string)))); | 937 base_headers_string, sizeof(base_headers_string)))); |
938 | 938 |
939 ResponseHeaders new_headers; | 939 ResponseHeaders new_headers; |
940 new_headers.push_back(ResponseHeader("kEy1", "Value1")); // Unchanged | 940 new_headers.push_back(ResponseHeader("kEy1", "Value1")); // Unchanged |
941 new_headers.push_back(ResponseHeader("Key2", "Value1")); // Modified | 941 new_headers.push_back(ResponseHeader("Key2", "Value1")); // Modified |
942 // Key3 is deleted | 942 // Key3 is deleted |
943 new_headers.push_back(ResponseHeader("Key4", "Value4")); // Added | 943 new_headers.push_back(ResponseHeader("Key4", "Value4")); // Added |
944 | 944 |
945 scoped_ptr<EventResponseDelta> delta( | 945 scoped_ptr<EventResponseDelta> delta( |
946 CalculateOnHeadersReceivedDelta("extid", base::Time::Now(), cancel, | 946 CalculateOnHeadersReceivedDelta("extid", base::Time::Now(), cancel, |
947 base_headers, &new_headers)); | 947 base_headers, &new_headers)); |
948 ASSERT_TRUE(delta.get()); | 948 ASSERT_TRUE(delta.get()); |
949 EXPECT_TRUE(delta->cancel); | 949 EXPECT_TRUE(delta->cancel); |
950 EXPECT_EQ(2u, delta->added_response_headers.size()); | 950 EXPECT_EQ(2u, delta->added_response_headers.size()); |
951 EXPECT_TRUE(Contains(delta->added_response_headers, | 951 EXPECT_TRUE(Contains(delta->added_response_headers, |
952 ResponseHeader("Key2", "Value1"))); | 952 ResponseHeader("Key2", "Value1"))); |
953 EXPECT_TRUE(Contains(delta->added_response_headers, | 953 EXPECT_TRUE(Contains(delta->added_response_headers, |
954 ResponseHeader("Key4", "Value4"))); | 954 ResponseHeader("Key4", "Value4"))); |
955 EXPECT_EQ(2u, delta->deleted_response_headers.size()); | 955 EXPECT_EQ(2u, delta->deleted_response_headers.size()); |
956 EXPECT_TRUE(Contains(delta->deleted_response_headers, | 956 EXPECT_TRUE(Contains(delta->deleted_response_headers, |
957 ResponseHeader("Key2", "Value2"))); | 957 ResponseHeader("Key2", "Value2, Bar"))); |
958 EXPECT_TRUE(Contains(delta->deleted_response_headers, | 958 EXPECT_TRUE(Contains(delta->deleted_response_headers, |
959 ResponseHeader("Key3", "Value3"))); | 959 ResponseHeader("Key3", "Value3"))); |
960 } | 960 } |
961 | 961 |
962 TEST(ExtensionWebRequestHelpersTest, TestCalculateOnAuthRequiredDelta) { | 962 TEST(ExtensionWebRequestHelpersTest, TestCalculateOnAuthRequiredDelta) { |
963 const bool cancel = true; | 963 const bool cancel = true; |
964 | 964 |
965 string16 username = ASCIIToUTF16("foo"); | 965 string16 username = ASCIIToUTF16("foo"); |
966 string16 password = ASCIIToUTF16("bar"); | 966 string16 password = ASCIIToUTF16("bar"); |
967 scoped_ptr<net::AuthCredentials> credentials( | 967 scoped_ptr<net::AuthCredentials> credentials( |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1282 TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) { | 1282 TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) { |
1283 net::CapturingBoundNetLog capturing_net_log; | 1283 net::CapturingBoundNetLog capturing_net_log; |
1284 net::BoundNetLog net_log = capturing_net_log.bound(); | 1284 net::BoundNetLog net_log = capturing_net_log.bound(); |
1285 std::set<std::string> conflicting_extensions; | 1285 std::set<std::string> conflicting_extensions; |
1286 std::string header_value; | 1286 std::string header_value; |
1287 EventResponseDeltas deltas; | 1287 EventResponseDeltas deltas; |
1288 | 1288 |
1289 char base_headers_string[] = | 1289 char base_headers_string[] = |
1290 "HTTP/1.0 200 OK\r\n" | 1290 "HTTP/1.0 200 OK\r\n" |
1291 "Key1: Value1\r\n" | 1291 "Key1: Value1\r\n" |
1292 "Key2: Value2\r\n" | 1292 "Key2: Value2, Foo\r\n" |
1293 "\r\n"; | 1293 "\r\n"; |
1294 scoped_refptr<net::HttpResponseHeaders> base_headers( | 1294 scoped_refptr<net::HttpResponseHeaders> base_headers( |
1295 new net::HttpResponseHeaders( | 1295 new net::HttpResponseHeaders( |
1296 net::HttpUtil::AssembleRawHeaders( | 1296 net::HttpUtil::AssembleRawHeaders( |
1297 base_headers_string, sizeof(base_headers_string)))); | 1297 base_headers_string, sizeof(base_headers_string)))); |
1298 | 1298 |
1299 // Check that we can handle if not touching the response headers. | 1299 // Check that we can handle if not touching the response headers. |
1300 linked_ptr<EventResponseDelta> d0( | 1300 linked_ptr<EventResponseDelta> d0( |
1301 new EventResponseDelta("extid0", base::Time::FromInternalValue(3000))); | 1301 new EventResponseDelta("extid0", base::Time::FromInternalValue(3000))); |
1302 deltas.push_back(d0); | 1302 deltas.push_back(d0); |
1303 scoped_refptr<net::HttpResponseHeaders> new_headers0; | 1303 scoped_refptr<net::HttpResponseHeaders> new_headers0; |
1304 MergeOnHeadersReceivedResponses( | 1304 MergeOnHeadersReceivedResponses( |
1305 deltas, base_headers.get(), &new_headers0, &conflicting_extensions, | 1305 deltas, base_headers.get(), &new_headers0, &conflicting_extensions, |
1306 &net_log); | 1306 &net_log); |
1307 EXPECT_FALSE(new_headers0.get()); | 1307 EXPECT_FALSE(new_headers0.get()); |
1308 EXPECT_EQ(0u, conflicting_extensions.size()); | 1308 EXPECT_EQ(0u, conflicting_extensions.size()); |
1309 EXPECT_EQ(0u, capturing_net_log.GetSize()); | 1309 EXPECT_EQ(0u, capturing_net_log.GetSize()); |
1310 | 1310 |
1311 linked_ptr<EventResponseDelta> d1( | 1311 linked_ptr<EventResponseDelta> d1( |
1312 new EventResponseDelta("extid1", base::Time::FromInternalValue(2000))); | 1312 new EventResponseDelta("extid1", base::Time::FromInternalValue(2000))); |
1313 d1->deleted_response_headers.push_back(ResponseHeader("KEY1", "Value1")); | 1313 d1->deleted_response_headers.push_back(ResponseHeader("KEY1", "Value1")); |
1314 d1->deleted_response_headers.push_back(ResponseHeader("KEY2", "Value2")); | 1314 d1->deleted_response_headers.push_back(ResponseHeader("KEY2", "Value2, Foo")); |
1315 d1->added_response_headers.push_back(ResponseHeader("Key2", "Value3")); | 1315 d1->added_response_headers.push_back(ResponseHeader("Key2", "Value3")); |
1316 deltas.push_back(d1); | 1316 deltas.push_back(d1); |
1317 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); | 1317 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
1318 conflicting_extensions.clear(); | 1318 conflicting_extensions.clear(); |
1319 capturing_net_log.Clear(); | 1319 capturing_net_log.Clear(); |
1320 scoped_refptr<net::HttpResponseHeaders> new_headers1; | 1320 scoped_refptr<net::HttpResponseHeaders> new_headers1; |
1321 MergeOnHeadersReceivedResponses( | 1321 MergeOnHeadersReceivedResponses( |
1322 deltas, base_headers.get(), &new_headers1, &conflicting_extensions, | 1322 deltas, base_headers.get(), &new_headers1, &conflicting_extensions, |
1323 &net_log); | 1323 &net_log); |
1324 ASSERT_TRUE(new_headers1.get()); | 1324 ASSERT_TRUE(new_headers1.get()); |
1325 std::multimap<std::string, std::string> expected1; | 1325 std::multimap<std::string, std::string> expected1; |
1326 expected1.insert(std::pair<std::string, std::string>("Key2", "Value3")); | 1326 expected1.insert(std::pair<std::string, std::string>("Key2", "Value3")); |
1327 void* iter = NULL; | 1327 void* iter = NULL; |
1328 std::string name; | 1328 std::string name; |
1329 std::string value; | 1329 std::string value; |
1330 std::multimap<std::string, std::string> actual1; | 1330 std::multimap<std::string, std::string> actual1; |
1331 while (new_headers1->EnumerateHeaderLines(&iter, &name, &value)) { | 1331 while (new_headers1->EnumerateHeaderLines(&iter, &name, &value)) { |
1332 actual1.insert(std::pair<std::string, std::string>(name, value)); | 1332 actual1.insert(std::pair<std::string, std::string>(name, value)); |
1333 } | 1333 } |
1334 EXPECT_EQ(expected1, actual1); | 1334 EXPECT_EQ(expected1, actual1); |
1335 EXPECT_EQ(0u, conflicting_extensions.size()); | 1335 EXPECT_EQ(0u, conflicting_extensions.size()); |
1336 EXPECT_EQ(1u, capturing_net_log.GetSize()); | 1336 EXPECT_EQ(1u, capturing_net_log.GetSize()); |
1337 | 1337 |
1338 // Check that we replace response headers only once. | 1338 // Check that we replace response headers only once. |
1339 linked_ptr<EventResponseDelta> d2( | 1339 linked_ptr<EventResponseDelta> d2( |
1340 new EventResponseDelta("extid2", base::Time::FromInternalValue(1500))); | 1340 new EventResponseDelta("extid2", base::Time::FromInternalValue(1500))); |
1341 // Note that we use a different capitalization of KeY2. This should not | 1341 // Note that we use a different capitalization of KeY2. This should not |
1342 // matter. | 1342 // matter. |
1343 d2->deleted_response_headers.push_back(ResponseHeader("KeY2", "Value2")); | 1343 d2->deleted_response_headers.push_back(ResponseHeader("KeY2", "Value2, Foo")); |
1344 d2->added_response_headers.push_back(ResponseHeader("Key2", "Value4")); | 1344 d2->added_response_headers.push_back(ResponseHeader("Key2", "Value4")); |
1345 deltas.push_back(d2); | 1345 deltas.push_back(d2); |
1346 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); | 1346 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
1347 conflicting_extensions.clear(); | 1347 conflicting_extensions.clear(); |
1348 capturing_net_log.Clear(); | 1348 capturing_net_log.Clear(); |
1349 scoped_refptr<net::HttpResponseHeaders> new_headers2; | 1349 scoped_refptr<net::HttpResponseHeaders> new_headers2; |
1350 MergeOnHeadersReceivedResponses( | 1350 MergeOnHeadersReceivedResponses( |
1351 deltas, base_headers.get(), &new_headers2, &conflicting_extensions, | 1351 deltas, base_headers.get(), &new_headers2, &conflicting_extensions, |
1352 &net_log); | 1352 &net_log); |
1353 ASSERT_TRUE(new_headers2.get()); | 1353 ASSERT_TRUE(new_headers2.get()); |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1525 // Check that requests are rejected if their first party url is sensitive. | 1525 // Check that requests are rejected if their first party url is sensitive. |
1526 ASSERT_GE(arraysize(non_sensitive_urls), 1u); | 1526 ASSERT_GE(arraysize(non_sensitive_urls), 1u); |
1527 GURL non_sensitive_url(non_sensitive_urls[0]); | 1527 GURL non_sensitive_url(non_sensitive_urls[0]); |
1528 for (size_t i = 0; i < arraysize(sensitive_urls); ++i) { | 1528 for (size_t i = 0; i < arraysize(sensitive_urls); ++i) { |
1529 TestURLRequest request(non_sensitive_url, NULL, &context); | 1529 TestURLRequest request(non_sensitive_url, NULL, &context); |
1530 GURL sensitive_url(sensitive_urls[i]); | 1530 GURL sensitive_url(sensitive_urls[i]); |
1531 request.set_first_party_for_cookies(sensitive_url); | 1531 request.set_first_party_for_cookies(sensitive_url); |
1532 EXPECT_TRUE(helpers::HideRequest(&request)) << sensitive_urls[i]; | 1532 EXPECT_TRUE(helpers::HideRequest(&request)) << sensitive_urls[i]; |
1533 } | 1533 } |
1534 } | 1534 } |
OLD | NEW |