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 <map> | 5 #include <map> |
6 #include <queue> | 6 #include <queue> |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
11 #include "base/files/file_path.h" | 11 #include "base/files/file_path.h" |
12 #include "base/json/json_reader.h" | 12 #include "base/json/json_reader.h" |
13 #include "base/json/json_string_value_serializer.h" | 13 #include "base/json/json_string_value_serializer.h" |
14 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
15 #include "base/memory/weak_ptr.h" | 15 #include "base/memory/weak_ptr.h" |
16 #include "base/message_loop/message_loop.h" | 16 #include "base/message_loop/message_loop.h" |
17 #include "base/path_service.h" | 17 #include "base/path_service.h" |
18 #include "base/prefs/pref_member.h" | 18 #include "base/prefs/pref_member.h" |
19 #include "base/stl_util.h" | 19 #include "base/stl_util.h" |
20 #include "base/strings/string_piece.h" | 20 #include "base/strings/string_piece.h" |
21 #include "base/strings/stringprintf.h" | 21 #include "base/strings/stringprintf.h" |
22 #include "base/strings/utf_string_conversions.h" | 22 #include "base/strings/utf_string_conversions.h" |
23 #include "base/time/time.h" | 23 #include "base/time/time.h" |
24 #include "chrome/browser/content_settings/cookie_settings.h" | 24 #include "chrome/browser/content_settings/cookie_settings.h" |
25 #include "chrome/browser/extensions/api/web_request/upload_data_presenter.h" | 25 #include "chrome/browser/extensions/api/web_request/upload_data_presenter.h" |
26 #include "chrome/browser/extensions/api/web_request/web_request_api.h" | 26 #include "chrome/browser/extensions/api/web_request/web_request_api.h" |
27 #include "chrome/browser/extensions/api/web_request/web_request_api_constants.h" | 27 #include "chrome/browser/extensions/api/web_request/web_request_api_constants.h" |
28 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" | 28 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" |
29 #include "chrome/browser/extensions/event_router_forwarder.h" | 29 #include "chrome/browser/extensions/event_router_forwarder.h" |
30 #include "chrome/browser/extensions/extension_warning_set.h" | |
31 #include "chrome/browser/net/about_protocol_handler.h" | 30 #include "chrome/browser/net/about_protocol_handler.h" |
32 #include "chrome/browser/net/chrome_network_delegate.h" | 31 #include "chrome/browser/net/chrome_network_delegate.h" |
33 #include "chrome/common/extensions/api/web_request.h" | 32 #include "chrome/common/extensions/api/web_request.h" |
34 #include "chrome/common/pref_names.h" | 33 #include "chrome/common/pref_names.h" |
35 #include "chrome/test/base/testing_browser_process.h" | 34 #include "chrome/test/base/testing_browser_process.h" |
36 #include "chrome/test/base/testing_pref_service_syncable.h" | 35 #include "chrome/test/base/testing_pref_service_syncable.h" |
37 #include "chrome/test/base/testing_profile.h" | 36 #include "chrome/test/base/testing_profile.h" |
38 #include "chrome/test/base/testing_profile_manager.h" | 37 #include "chrome/test/base/testing_profile_manager.h" |
39 #include "content/public/common/url_constants.h" | 38 #include "content/public/common/url_constants.h" |
40 #include "content/public/test/test_browser_thread_bundle.h" | 39 #include "content/public/test/test_browser_thread_bundle.h" |
| 40 #include "extensions/browser/warning_set.h" |
41 #include "extensions/common/extension_messages.h" | 41 #include "extensions/common/extension_messages.h" |
42 #include "extensions/common/features/feature.h" | 42 #include "extensions/common/features/feature.h" |
43 #include "net/base/auth.h" | 43 #include "net/base/auth.h" |
44 #include "net/base/capturing_net_log.h" | 44 #include "net/base/capturing_net_log.h" |
45 #include "net/base/net_util.h" | 45 #include "net/base/net_util.h" |
46 #include "net/base/request_priority.h" | 46 #include "net/base/request_priority.h" |
47 #include "net/base/upload_bytes_element_reader.h" | 47 #include "net/base/upload_bytes_element_reader.h" |
48 #include "net/base/upload_data_stream.h" | 48 #include "net/base/upload_data_stream.h" |
49 #include "net/base/upload_file_element_reader.h" | 49 #include "net/base/upload_file_element_reader.h" |
50 #include "net/dns/mock_host_resolver.h" | 50 #include "net/dns/mock_host_resolver.h" |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 | 98 |
99 // Searches |key| in |collection| by iterating over its elements and returns | 99 // Searches |key| in |collection| by iterating over its elements and returns |
100 // true if found. | 100 // true if found. |
101 template <typename Collection, typename Key> | 101 template <typename Collection, typename Key> |
102 bool Contains(const Collection& collection, const Key& key) { | 102 bool Contains(const Collection& collection, const Key& key) { |
103 return std::find(collection.begin(), collection.end(), key) != | 103 return std::find(collection.begin(), collection.end(), key) != |
104 collection.end(); | 104 collection.end(); |
105 } | 105 } |
106 | 106 |
107 // Returns whether |warnings| contains an extension for |extension_id|. | 107 // Returns whether |warnings| contains an extension for |extension_id|. |
108 bool HasWarning(const ExtensionWarningSet& warnings, | 108 bool HasWarning(const WarningSet& warnings, |
109 const std::string& extension_id) { | 109 const std::string& extension_id) { |
110 for (ExtensionWarningSet::const_iterator i = warnings.begin(); | 110 for (WarningSet::const_iterator i = warnings.begin(); |
111 i != warnings.end(); ++i) { | 111 i != warnings.end(); ++i) { |
112 if (i->extension_id() == extension_id) | 112 if (i->extension_id() == extension_id) |
113 return true; | 113 return true; |
114 } | 114 } |
115 return false; | 115 return false; |
116 } | 116 } |
117 | 117 |
118 // Parses the JSON data attached to the |message| and tries to return it. | 118 // Parses the JSON data attached to the |message| and tries to return it. |
119 // |param| must outlive |out|. Returns NULL on failure. | 119 // |param| must outlive |out|. Returns NULL on failure. |
120 void GetPartOfMessageArguments(IPC::Message* message, | 120 void GetPartOfMessageArguments(IPC::Message* message, |
(...skipping 1219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1340 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); | 1340 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
1341 MergeCancelOfResponses(deltas, &canceled, &net_log); | 1341 MergeCancelOfResponses(deltas, &canceled, &net_log); |
1342 EXPECT_TRUE(canceled); | 1342 EXPECT_TRUE(canceled); |
1343 EXPECT_EQ(1u, capturing_net_log.GetSize()); | 1343 EXPECT_EQ(1u, capturing_net_log.GetSize()); |
1344 } | 1344 } |
1345 | 1345 |
1346 TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeRequestResponses) { | 1346 TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeRequestResponses) { |
1347 EventResponseDeltas deltas; | 1347 EventResponseDeltas deltas; |
1348 net::CapturingBoundNetLog capturing_net_log; | 1348 net::CapturingBoundNetLog capturing_net_log; |
1349 net::BoundNetLog net_log = capturing_net_log.bound(); | 1349 net::BoundNetLog net_log = capturing_net_log.bound(); |
1350 ExtensionWarningSet warning_set; | 1350 WarningSet warning_set; |
1351 GURL effective_new_url; | 1351 GURL effective_new_url; |
1352 | 1352 |
1353 // No redirect | 1353 // No redirect |
1354 linked_ptr<EventResponseDelta> d0( | 1354 linked_ptr<EventResponseDelta> d0( |
1355 new EventResponseDelta("extid0", base::Time::FromInternalValue(0))); | 1355 new EventResponseDelta("extid0", base::Time::FromInternalValue(0))); |
1356 deltas.push_back(d0); | 1356 deltas.push_back(d0); |
1357 MergeOnBeforeRequestResponses( | 1357 MergeOnBeforeRequestResponses( |
1358 deltas, &effective_new_url, &warning_set, &net_log); | 1358 deltas, &effective_new_url, &warning_set, &net_log); |
1359 EXPECT_TRUE(effective_new_url.is_empty()); | 1359 EXPECT_TRUE(effective_new_url.is_empty()); |
1360 | 1360 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1421 EXPECT_TRUE(HasWarning(warning_set, "extid2")); | 1421 EXPECT_TRUE(HasWarning(warning_set, "extid2")); |
1422 EXPECT_EQ(4u, capturing_net_log.GetSize()); | 1422 EXPECT_EQ(4u, capturing_net_log.GetSize()); |
1423 } | 1423 } |
1424 | 1424 |
1425 // This tests that we can redirect to data:// urls, which is considered | 1425 // This tests that we can redirect to data:// urls, which is considered |
1426 // a kind of cancelling requests. | 1426 // a kind of cancelling requests. |
1427 TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeRequestResponses2) { | 1427 TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeRequestResponses2) { |
1428 EventResponseDeltas deltas; | 1428 EventResponseDeltas deltas; |
1429 net::CapturingBoundNetLog capturing_net_log; | 1429 net::CapturingBoundNetLog capturing_net_log; |
1430 net::BoundNetLog net_log = capturing_net_log.bound(); | 1430 net::BoundNetLog net_log = capturing_net_log.bound(); |
1431 ExtensionWarningSet warning_set; | 1431 WarningSet warning_set; |
1432 GURL effective_new_url; | 1432 GURL effective_new_url; |
1433 | 1433 |
1434 // Single redirect. | 1434 // Single redirect. |
1435 GURL new_url_0("http://foo.com"); | 1435 GURL new_url_0("http://foo.com"); |
1436 linked_ptr<EventResponseDelta> d0( | 1436 linked_ptr<EventResponseDelta> d0( |
1437 new EventResponseDelta("extid0", base::Time::FromInternalValue(2000))); | 1437 new EventResponseDelta("extid0", base::Time::FromInternalValue(2000))); |
1438 d0->new_url = GURL(new_url_0); | 1438 d0->new_url = GURL(new_url_0); |
1439 deltas.push_back(d0); | 1439 deltas.push_back(d0); |
1440 MergeOnBeforeRequestResponses( | 1440 MergeOnBeforeRequestResponses( |
1441 deltas, &effective_new_url, &warning_set, &net_log); | 1441 deltas, &effective_new_url, &warning_set, &net_log); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1490 EXPECT_TRUE(HasWarning(warning_set, "extid3")); | 1490 EXPECT_TRUE(HasWarning(warning_set, "extid3")); |
1491 EXPECT_EQ(3u, capturing_net_log.GetSize()); | 1491 EXPECT_EQ(3u, capturing_net_log.GetSize()); |
1492 } | 1492 } |
1493 | 1493 |
1494 // This tests that we can redirect to about:blank, which is considered | 1494 // This tests that we can redirect to about:blank, which is considered |
1495 // a kind of cancelling requests. | 1495 // a kind of cancelling requests. |
1496 TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeRequestResponses3) { | 1496 TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeRequestResponses3) { |
1497 EventResponseDeltas deltas; | 1497 EventResponseDeltas deltas; |
1498 net::CapturingBoundNetLog capturing_net_log; | 1498 net::CapturingBoundNetLog capturing_net_log; |
1499 net::BoundNetLog net_log = capturing_net_log.bound(); | 1499 net::BoundNetLog net_log = capturing_net_log.bound(); |
1500 ExtensionWarningSet warning_set; | 1500 WarningSet warning_set; |
1501 GURL effective_new_url; | 1501 GURL effective_new_url; |
1502 | 1502 |
1503 // Single redirect. | 1503 // Single redirect. |
1504 GURL new_url_0("http://foo.com"); | 1504 GURL new_url_0("http://foo.com"); |
1505 linked_ptr<EventResponseDelta> d0( | 1505 linked_ptr<EventResponseDelta> d0( |
1506 new EventResponseDelta("extid0", base::Time::FromInternalValue(2000))); | 1506 new EventResponseDelta("extid0", base::Time::FromInternalValue(2000))); |
1507 d0->new_url = GURL(new_url_0); | 1507 d0->new_url = GURL(new_url_0); |
1508 deltas.push_back(d0); | 1508 deltas.push_back(d0); |
1509 MergeOnBeforeRequestResponses( | 1509 MergeOnBeforeRequestResponses( |
1510 deltas, &effective_new_url, &warning_set, &net_log); | 1510 deltas, &effective_new_url, &warning_set, &net_log); |
(...skipping 15 matching lines...) Expand all Loading... |
1526 EXPECT_TRUE(warning_set.empty()); | 1526 EXPECT_TRUE(warning_set.empty()); |
1527 EXPECT_EQ(1u, capturing_net_log.GetSize()); | 1527 EXPECT_EQ(1u, capturing_net_log.GetSize()); |
1528 } | 1528 } |
1529 | 1529 |
1530 TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeSendHeadersResponses) { | 1530 TEST(ExtensionWebRequestHelpersTest, TestMergeOnBeforeSendHeadersResponses) { |
1531 net::HttpRequestHeaders base_headers; | 1531 net::HttpRequestHeaders base_headers; |
1532 base_headers.AddHeaderFromString("key1: value 1"); | 1532 base_headers.AddHeaderFromString("key1: value 1"); |
1533 base_headers.AddHeaderFromString("key2: value 2"); | 1533 base_headers.AddHeaderFromString("key2: value 2"); |
1534 net::CapturingBoundNetLog capturing_net_log; | 1534 net::CapturingBoundNetLog capturing_net_log; |
1535 net::BoundNetLog net_log = capturing_net_log.bound(); | 1535 net::BoundNetLog net_log = capturing_net_log.bound(); |
1536 ExtensionWarningSet warning_set; | 1536 WarningSet warning_set; |
1537 std::string header_value; | 1537 std::string header_value; |
1538 EventResponseDeltas deltas; | 1538 EventResponseDeltas deltas; |
1539 | 1539 |
1540 // Check that we can handle not changing the headers. | 1540 // Check that we can handle not changing the headers. |
1541 linked_ptr<EventResponseDelta> d0( | 1541 linked_ptr<EventResponseDelta> d0( |
1542 new EventResponseDelta("extid0", base::Time::FromInternalValue(2500))); | 1542 new EventResponseDelta("extid0", base::Time::FromInternalValue(2500))); |
1543 deltas.push_back(d0); | 1543 deltas.push_back(d0); |
1544 net::HttpRequestHeaders headers0; | 1544 net::HttpRequestHeaders headers0; |
1545 headers0.MergeFrom(base_headers); | 1545 headers0.MergeFrom(base_headers); |
1546 MergeOnBeforeSendHeadersResponses(deltas, &headers0, &warning_set, &net_log); | 1546 MergeOnBeforeSendHeadersResponses(deltas, &headers0, &warning_set, &net_log); |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1622 EXPECT_EQ(3u, capturing_net_log.GetSize()); | 1622 EXPECT_EQ(3u, capturing_net_log.GetSize()); |
1623 } | 1623 } |
1624 | 1624 |
1625 TEST(ExtensionWebRequestHelpersTest, | 1625 TEST(ExtensionWebRequestHelpersTest, |
1626 TestMergeOnBeforeSendHeadersResponses_Cookies) { | 1626 TestMergeOnBeforeSendHeadersResponses_Cookies) { |
1627 net::HttpRequestHeaders base_headers; | 1627 net::HttpRequestHeaders base_headers; |
1628 base_headers.AddHeaderFromString( | 1628 base_headers.AddHeaderFromString( |
1629 "Cookie: name=value; name2=value2; name3=\"value3\""); | 1629 "Cookie: name=value; name2=value2; name3=\"value3\""); |
1630 net::CapturingBoundNetLog capturing_net_log; | 1630 net::CapturingBoundNetLog capturing_net_log; |
1631 net::BoundNetLog net_log = capturing_net_log.bound(); | 1631 net::BoundNetLog net_log = capturing_net_log.bound(); |
1632 ExtensionWarningSet warning_set; | 1632 WarningSet warning_set; |
1633 std::string header_value; | 1633 std::string header_value; |
1634 EventResponseDeltas deltas; | 1634 EventResponseDeltas deltas; |
1635 | 1635 |
1636 linked_ptr<RequestCookieModification> add_cookie = | 1636 linked_ptr<RequestCookieModification> add_cookie = |
1637 make_linked_ptr(new RequestCookieModification); | 1637 make_linked_ptr(new RequestCookieModification); |
1638 add_cookie->type = helpers::ADD; | 1638 add_cookie->type = helpers::ADD; |
1639 add_cookie->modification.reset(new helpers::RequestCookie); | 1639 add_cookie->modification.reset(new helpers::RequestCookie); |
1640 add_cookie->modification->name.reset(new std::string("name4")); | 1640 add_cookie->modification->name.reset(new std::string("name4")); |
1641 add_cookie->modification->value.reset(new std::string("\"value 4\"")); | 1641 add_cookie->modification->value.reset(new std::string("\"value 4\"")); |
1642 | 1642 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1706 exploded_time.minute, | 1706 exploded_time.minute, |
1707 exploded_time.second); | 1707 exploded_time.second); |
1708 } | 1708 } |
1709 | 1709 |
1710 } // namespace | 1710 } // namespace |
1711 | 1711 |
1712 TEST(ExtensionWebRequestHelpersTest, | 1712 TEST(ExtensionWebRequestHelpersTest, |
1713 TestMergeCookiesInOnHeadersReceivedResponses) { | 1713 TestMergeCookiesInOnHeadersReceivedResponses) { |
1714 net::CapturingBoundNetLog capturing_net_log; | 1714 net::CapturingBoundNetLog capturing_net_log; |
1715 net::BoundNetLog net_log = capturing_net_log.bound(); | 1715 net::BoundNetLog net_log = capturing_net_log.bound(); |
1716 ExtensionWarningSet warning_set; | 1716 WarningSet warning_set; |
1717 std::string header_value; | 1717 std::string header_value; |
1718 EventResponseDeltas deltas; | 1718 EventResponseDeltas deltas; |
1719 | 1719 |
1720 std::string cookie_expiration = GetCookieExpirationDate(1200); | 1720 std::string cookie_expiration = GetCookieExpirationDate(1200); |
1721 std::string base_headers_string = | 1721 std::string base_headers_string = |
1722 "HTTP/1.0 200 OK\r\n" | 1722 "HTTP/1.0 200 OK\r\n" |
1723 "Foo: Bar\r\n" | 1723 "Foo: Bar\r\n" |
1724 "Set-Cookie: name=value; DOMAIN=google.com; Secure\r\n" | 1724 "Set-Cookie: name=value; DOMAIN=google.com; Secure\r\n" |
1725 "Set-Cookie: name2=value2\r\n" | 1725 "Set-Cookie: name2=value2\r\n" |
1726 "Set-Cookie: name3=value3\r\n" | 1726 "Set-Cookie: name3=value3\r\n" |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1941 while (new_headers1->EnumerateHeader(&iter, "Set-Cookie", &cookie_string)) | 1941 while (new_headers1->EnumerateHeader(&iter, "Set-Cookie", &cookie_string)) |
1942 actual_cookies.insert(cookie_string); | 1942 actual_cookies.insert(cookie_string); |
1943 EXPECT_EQ(expected_cookies, actual_cookies); | 1943 EXPECT_EQ(expected_cookies, actual_cookies); |
1944 EXPECT_EQ(0u, warning_set.size()); | 1944 EXPECT_EQ(0u, warning_set.size()); |
1945 EXPECT_EQ(0u, capturing_net_log.GetSize()); | 1945 EXPECT_EQ(0u, capturing_net_log.GetSize()); |
1946 } | 1946 } |
1947 | 1947 |
1948 TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) { | 1948 TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) { |
1949 net::CapturingBoundNetLog capturing_net_log; | 1949 net::CapturingBoundNetLog capturing_net_log; |
1950 net::BoundNetLog net_log = capturing_net_log.bound(); | 1950 net::BoundNetLog net_log = capturing_net_log.bound(); |
1951 ExtensionWarningSet warning_set; | 1951 WarningSet warning_set; |
1952 std::string header_value; | 1952 std::string header_value; |
1953 EventResponseDeltas deltas; | 1953 EventResponseDeltas deltas; |
1954 | 1954 |
1955 char base_headers_string[] = | 1955 char base_headers_string[] = |
1956 "HTTP/1.0 200 OK\r\n" | 1956 "HTTP/1.0 200 OK\r\n" |
1957 "Key1: Value1\r\n" | 1957 "Key1: Value1\r\n" |
1958 "Key2: Value2, Foo\r\n" | 1958 "Key2: Value2, Foo\r\n" |
1959 "\r\n"; | 1959 "\r\n"; |
1960 scoped_refptr<net::HttpResponseHeaders> base_headers( | 1960 scoped_refptr<net::HttpResponseHeaders> base_headers( |
1961 new net::HttpResponseHeaders( | 1961 new net::HttpResponseHeaders( |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2041 EXPECT_EQ(1u, warning_set.size()); | 2041 EXPECT_EQ(1u, warning_set.size()); |
2042 EXPECT_TRUE(HasWarning(warning_set, "extid2")); | 2042 EXPECT_TRUE(HasWarning(warning_set, "extid2")); |
2043 EXPECT_EQ(2u, capturing_net_log.GetSize()); | 2043 EXPECT_EQ(2u, capturing_net_log.GetSize()); |
2044 } | 2044 } |
2045 | 2045 |
2046 // Check that we do not delete too much | 2046 // Check that we do not delete too much |
2047 TEST(ExtensionWebRequestHelpersTest, | 2047 TEST(ExtensionWebRequestHelpersTest, |
2048 TestMergeOnHeadersReceivedResponsesDeletion) { | 2048 TestMergeOnHeadersReceivedResponsesDeletion) { |
2049 net::CapturingBoundNetLog capturing_net_log; | 2049 net::CapturingBoundNetLog capturing_net_log; |
2050 net::BoundNetLog net_log = capturing_net_log.bound(); | 2050 net::BoundNetLog net_log = capturing_net_log.bound(); |
2051 ExtensionWarningSet warning_set; | 2051 WarningSet warning_set; |
2052 std::string header_value; | 2052 std::string header_value; |
2053 EventResponseDeltas deltas; | 2053 EventResponseDeltas deltas; |
2054 | 2054 |
2055 char base_headers_string[] = | 2055 char base_headers_string[] = |
2056 "HTTP/1.0 200 OK\r\n" | 2056 "HTTP/1.0 200 OK\r\n" |
2057 "Key1: Value1\r\n" | 2057 "Key1: Value1\r\n" |
2058 "Key1: Value2\r\n" | 2058 "Key1: Value2\r\n" |
2059 "Key1: Value3\r\n" | 2059 "Key1: Value3\r\n" |
2060 "Key2: Value4\r\n" | 2060 "Key2: Value4\r\n" |
2061 "\r\n"; | 2061 "\r\n"; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2095 } | 2095 } |
2096 | 2096 |
2097 // Tests whether onHeadersReceived can initiate a redirect. | 2097 // Tests whether onHeadersReceived can initiate a redirect. |
2098 // The URL merge logic is shared with onBeforeRequest, so we only need to test | 2098 // The URL merge logic is shared with onBeforeRequest, so we only need to test |
2099 // whether the URLs are merged at all. | 2099 // whether the URLs are merged at all. |
2100 TEST(ExtensionWebRequestHelpersTest, | 2100 TEST(ExtensionWebRequestHelpersTest, |
2101 TestMergeOnHeadersReceivedResponsesRedirect) { | 2101 TestMergeOnHeadersReceivedResponsesRedirect) { |
2102 EventResponseDeltas deltas; | 2102 EventResponseDeltas deltas; |
2103 net::CapturingBoundNetLog capturing_net_log; | 2103 net::CapturingBoundNetLog capturing_net_log; |
2104 net::BoundNetLog net_log = capturing_net_log.bound(); | 2104 net::BoundNetLog net_log = capturing_net_log.bound(); |
2105 ExtensionWarningSet warning_set; | 2105 WarningSet warning_set; |
2106 | 2106 |
2107 char base_headers_string[] = | 2107 char base_headers_string[] = |
2108 "HTTP/1.0 200 OK\r\n" | 2108 "HTTP/1.0 200 OK\r\n" |
2109 "\r\n"; | 2109 "\r\n"; |
2110 scoped_refptr<net::HttpResponseHeaders> base_headers( | 2110 scoped_refptr<net::HttpResponseHeaders> base_headers( |
2111 new net::HttpResponseHeaders(net::HttpUtil::AssembleRawHeaders( | 2111 new net::HttpResponseHeaders(net::HttpUtil::AssembleRawHeaders( |
2112 base_headers_string, sizeof(base_headers_string)))); | 2112 base_headers_string, sizeof(base_headers_string)))); |
2113 | 2113 |
2114 // No redirect | 2114 // No redirect |
2115 linked_ptr<EventResponseDelta> d0( | 2115 linked_ptr<EventResponseDelta> d0( |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2148 EXPECT_TRUE(new_headers1.get()); | 2148 EXPECT_TRUE(new_headers1.get()); |
2149 EXPECT_TRUE(new_headers1->HasHeaderValue("Location", new_url_1.spec())); | 2149 EXPECT_TRUE(new_headers1->HasHeaderValue("Location", new_url_1.spec())); |
2150 EXPECT_EQ(new_url_1, allowed_unsafe_redirect_url1); | 2150 EXPECT_EQ(new_url_1, allowed_unsafe_redirect_url1); |
2151 EXPECT_TRUE(warning_set.empty()); | 2151 EXPECT_TRUE(warning_set.empty()); |
2152 EXPECT_EQ(1u, capturing_net_log.GetSize()); | 2152 EXPECT_EQ(1u, capturing_net_log.GetSize()); |
2153 } | 2153 } |
2154 | 2154 |
2155 TEST(ExtensionWebRequestHelpersTest, TestMergeOnAuthRequiredResponses) { | 2155 TEST(ExtensionWebRequestHelpersTest, TestMergeOnAuthRequiredResponses) { |
2156 net::CapturingBoundNetLog capturing_net_log; | 2156 net::CapturingBoundNetLog capturing_net_log; |
2157 net::BoundNetLog net_log = capturing_net_log.bound(); | 2157 net::BoundNetLog net_log = capturing_net_log.bound(); |
2158 ExtensionWarningSet warning_set; | 2158 WarningSet warning_set; |
2159 EventResponseDeltas deltas; | 2159 EventResponseDeltas deltas; |
2160 base::string16 username = base::ASCIIToUTF16("foo"); | 2160 base::string16 username = base::ASCIIToUTF16("foo"); |
2161 base::string16 password = base::ASCIIToUTF16("bar"); | 2161 base::string16 password = base::ASCIIToUTF16("bar"); |
2162 base::string16 password2 = base::ASCIIToUTF16("baz"); | 2162 base::string16 password2 = base::ASCIIToUTF16("baz"); |
2163 | 2163 |
2164 // Check that we can handle if not returning credentials. | 2164 // Check that we can handle if not returning credentials. |
2165 linked_ptr<EventResponseDelta> d0( | 2165 linked_ptr<EventResponseDelta> d0( |
2166 new EventResponseDelta("extid0", base::Time::FromInternalValue(3000))); | 2166 new EventResponseDelta("extid0", base::Time::FromInternalValue(3000))); |
2167 deltas.push_back(d0); | 2167 deltas.push_back(d0); |
2168 net::AuthCredentials auth0; | 2168 net::AuthCredentials auth0; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2225 EXPECT_TRUE(credentials_set); | 2225 EXPECT_TRUE(credentials_set); |
2226 EXPECT_FALSE(auth3.Empty()); | 2226 EXPECT_FALSE(auth3.Empty()); |
2227 EXPECT_EQ(username, auth1.username()); | 2227 EXPECT_EQ(username, auth1.username()); |
2228 EXPECT_EQ(password, auth1.password()); | 2228 EXPECT_EQ(password, auth1.password()); |
2229 EXPECT_EQ(1u, warning_set.size()); | 2229 EXPECT_EQ(1u, warning_set.size()); |
2230 EXPECT_TRUE(HasWarning(warning_set, "extid2")); | 2230 EXPECT_TRUE(HasWarning(warning_set, "extid2")); |
2231 EXPECT_EQ(3u, capturing_net_log.GetSize()); | 2231 EXPECT_EQ(3u, capturing_net_log.GetSize()); |
2232 } | 2232 } |
2233 | 2233 |
2234 } // namespace extensions | 2234 } // namespace extensions |
OLD | NEW |