| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <queue> | 10 #include <queue> |
| (...skipping 1738 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1749 net::BoundTestNetLog capturing_net_log; | 1749 net::BoundTestNetLog capturing_net_log; |
| 1750 net::NetLogWithSource net_log = capturing_net_log.bound(); | 1750 net::NetLogWithSource net_log = capturing_net_log.bound(); |
| 1751 WarningSet warning_set; | 1751 WarningSet warning_set; |
| 1752 std::string header_value; | 1752 std::string header_value; |
| 1753 EventResponseDeltas deltas; | 1753 EventResponseDeltas deltas; |
| 1754 | 1754 |
| 1755 // Check that we can handle not changing the headers. | 1755 // Check that we can handle not changing the headers. |
| 1756 linked_ptr<EventResponseDelta> d0( | 1756 linked_ptr<EventResponseDelta> d0( |
| 1757 new EventResponseDelta("extid0", base::Time::FromInternalValue(2500))); | 1757 new EventResponseDelta("extid0", base::Time::FromInternalValue(2500))); |
| 1758 deltas.push_back(d0); | 1758 deltas.push_back(d0); |
| 1759 bool request_headers_modified0; |
| 1760 bool request_cookies_modified0; |
| 1759 net::HttpRequestHeaders headers0; | 1761 net::HttpRequestHeaders headers0; |
| 1760 headers0.MergeFrom(base_headers); | 1762 headers0.MergeFrom(base_headers); |
| 1761 MergeOnBeforeSendHeadersResponses(deltas, &headers0, &warning_set, &net_log); | 1763 MergeOnBeforeSendHeadersResponses(deltas, &headers0, &warning_set, &net_log, |
| 1764 &request_headers_modified0, |
| 1765 &request_cookies_modified0); |
| 1762 ASSERT_TRUE(headers0.GetHeader("key1", &header_value)); | 1766 ASSERT_TRUE(headers0.GetHeader("key1", &header_value)); |
| 1763 EXPECT_EQ("value 1", header_value); | 1767 EXPECT_EQ("value 1", header_value); |
| 1764 ASSERT_TRUE(headers0.GetHeader("key2", &header_value)); | 1768 ASSERT_TRUE(headers0.GetHeader("key2", &header_value)); |
| 1765 EXPECT_EQ("value 2", header_value); | 1769 EXPECT_EQ("value 2", header_value); |
| 1766 EXPECT_EQ(0u, warning_set.size()); | 1770 EXPECT_EQ(0u, warning_set.size()); |
| 1767 EXPECT_EQ(0u, capturing_net_log.GetSize()); | 1771 EXPECT_EQ(0u, capturing_net_log.GetSize()); |
| 1772 EXPECT_FALSE(request_headers_modified0); |
| 1773 EXPECT_FALSE(request_cookies_modified0); |
| 1768 | 1774 |
| 1769 // Delete, modify and add a header. | 1775 // Delete, modify and add a header. |
| 1770 linked_ptr<EventResponseDelta> d1( | 1776 linked_ptr<EventResponseDelta> d1( |
| 1771 new EventResponseDelta("extid1", base::Time::FromInternalValue(2000))); | 1777 new EventResponseDelta("extid1", base::Time::FromInternalValue(2000))); |
| 1772 d1->deleted_request_headers.push_back("key1"); | 1778 d1->deleted_request_headers.push_back("key1"); |
| 1773 d1->modified_request_headers.SetHeader("key2", "value 3"); | 1779 d1->modified_request_headers.SetHeader("key2", "value 3"); |
| 1774 d1->modified_request_headers.SetHeader("key3", "value 3"); | 1780 d1->modified_request_headers.SetHeader("key3", "value 3"); |
| 1775 deltas.push_back(d1); | 1781 deltas.push_back(d1); |
| 1776 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); | 1782 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
| 1777 warning_set.clear(); | 1783 warning_set.clear(); |
| 1778 capturing_net_log.Clear(); | 1784 capturing_net_log.Clear(); |
| 1785 bool request_headers_modified1; |
| 1786 bool request_cookies_modified1; |
| 1779 net::HttpRequestHeaders headers1; | 1787 net::HttpRequestHeaders headers1; |
| 1780 headers1.MergeFrom(base_headers); | 1788 headers1.MergeFrom(base_headers); |
| 1781 MergeOnBeforeSendHeadersResponses(deltas, &headers1, &warning_set, &net_log); | 1789 MergeOnBeforeSendHeadersResponses(deltas, &headers1, &warning_set, &net_log, |
| 1790 &request_headers_modified1, |
| 1791 &request_cookies_modified1); |
| 1782 EXPECT_FALSE(headers1.HasHeader("key1")); | 1792 EXPECT_FALSE(headers1.HasHeader("key1")); |
| 1783 ASSERT_TRUE(headers1.GetHeader("key2", &header_value)); | 1793 ASSERT_TRUE(headers1.GetHeader("key2", &header_value)); |
| 1784 EXPECT_EQ("value 3", header_value); | 1794 EXPECT_EQ("value 3", header_value); |
| 1785 ASSERT_TRUE(headers1.GetHeader("key3", &header_value)); | 1795 ASSERT_TRUE(headers1.GetHeader("key3", &header_value)); |
| 1786 EXPECT_EQ("value 3", header_value); | 1796 EXPECT_EQ("value 3", header_value); |
| 1787 EXPECT_EQ(0u, warning_set.size()); | 1797 EXPECT_EQ(0u, warning_set.size()); |
| 1788 EXPECT_EQ(1u, capturing_net_log.GetSize()); | 1798 EXPECT_EQ(1u, capturing_net_log.GetSize()); |
| 1799 EXPECT_TRUE(request_headers_modified1); |
| 1800 EXPECT_FALSE(request_cookies_modified1); |
| 1789 | 1801 |
| 1790 // Check that conflicts are atomic, i.e. if one header modification | 1802 // Check that conflicts are atomic, i.e. if one header modification |
| 1791 // collides all other conflicts of the same extension are declined as well. | 1803 // collides all other conflicts of the same extension are declined as well. |
| 1792 linked_ptr<EventResponseDelta> d2( | 1804 linked_ptr<EventResponseDelta> d2( |
| 1793 new EventResponseDelta("extid2", base::Time::FromInternalValue(1500))); | 1805 new EventResponseDelta("extid2", base::Time::FromInternalValue(1500))); |
| 1794 // This one conflicts: | 1806 // This one conflicts: |
| 1795 d2->modified_request_headers.SetHeader("key3", "value 0"); | 1807 d2->modified_request_headers.SetHeader("key3", "value 0"); |
| 1796 d2->modified_request_headers.SetHeader("key4", "value 4"); | 1808 d2->modified_request_headers.SetHeader("key4", "value 4"); |
| 1797 deltas.push_back(d2); | 1809 deltas.push_back(d2); |
| 1798 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); | 1810 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
| 1799 warning_set.clear(); | 1811 warning_set.clear(); |
| 1800 capturing_net_log.Clear(); | 1812 capturing_net_log.Clear(); |
| 1813 bool request_headers_modified2; |
| 1814 bool request_cookies_modified2; |
| 1801 net::HttpRequestHeaders headers2; | 1815 net::HttpRequestHeaders headers2; |
| 1802 headers2.MergeFrom(base_headers); | 1816 headers2.MergeFrom(base_headers); |
| 1803 MergeOnBeforeSendHeadersResponses(deltas, &headers2, &warning_set, &net_log); | 1817 MergeOnBeforeSendHeadersResponses(deltas, &headers2, &warning_set, &net_log, |
| 1818 &request_headers_modified2, |
| 1819 &request_cookies_modified2); |
| 1804 EXPECT_FALSE(headers2.HasHeader("key1")); | 1820 EXPECT_FALSE(headers2.HasHeader("key1")); |
| 1805 ASSERT_TRUE(headers2.GetHeader("key2", &header_value)); | 1821 ASSERT_TRUE(headers2.GetHeader("key2", &header_value)); |
| 1806 EXPECT_EQ("value 3", header_value); | 1822 EXPECT_EQ("value 3", header_value); |
| 1807 ASSERT_TRUE(headers2.GetHeader("key3", &header_value)); | 1823 ASSERT_TRUE(headers2.GetHeader("key3", &header_value)); |
| 1808 EXPECT_EQ("value 3", header_value); | 1824 EXPECT_EQ("value 3", header_value); |
| 1809 EXPECT_FALSE(headers2.HasHeader("key4")); | 1825 EXPECT_FALSE(headers2.HasHeader("key4")); |
| 1810 EXPECT_EQ(1u, warning_set.size()); | 1826 EXPECT_EQ(1u, warning_set.size()); |
| 1811 EXPECT_TRUE(HasWarning(warning_set, "extid2")); | 1827 EXPECT_TRUE(HasWarning(warning_set, "extid2")); |
| 1812 EXPECT_EQ(2u, capturing_net_log.GetSize()); | 1828 EXPECT_EQ(2u, capturing_net_log.GetSize()); |
| 1829 EXPECT_TRUE(request_headers_modified2); |
| 1830 EXPECT_FALSE(request_cookies_modified2); |
| 1813 | 1831 |
| 1814 // Check that identical modifications don't conflict and operations | 1832 // Check that identical modifications don't conflict and operations |
| 1815 // can be merged. | 1833 // can be merged. |
| 1816 linked_ptr<EventResponseDelta> d3( | 1834 linked_ptr<EventResponseDelta> d3( |
| 1817 new EventResponseDelta("extid3", base::Time::FromInternalValue(1000))); | 1835 new EventResponseDelta("extid3", base::Time::FromInternalValue(1000))); |
| 1818 d3->deleted_request_headers.push_back("key1"); | 1836 d3->deleted_request_headers.push_back("key1"); |
| 1819 d3->modified_request_headers.SetHeader("key2", "value 3"); | 1837 d3->modified_request_headers.SetHeader("key2", "value 3"); |
| 1820 d3->modified_request_headers.SetHeader("key5", "value 5"); | 1838 d3->modified_request_headers.SetHeader("key5", "value 5"); |
| 1821 deltas.push_back(d3); | 1839 deltas.push_back(d3); |
| 1822 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); | 1840 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
| 1823 warning_set.clear(); | 1841 warning_set.clear(); |
| 1824 capturing_net_log.Clear(); | 1842 capturing_net_log.Clear(); |
| 1843 bool request_headers_modified3; |
| 1844 bool request_cookies_modified3; |
| 1825 net::HttpRequestHeaders headers3; | 1845 net::HttpRequestHeaders headers3; |
| 1826 headers3.MergeFrom(base_headers); | 1846 headers3.MergeFrom(base_headers); |
| 1827 MergeOnBeforeSendHeadersResponses(deltas, &headers3, &warning_set, &net_log); | 1847 MergeOnBeforeSendHeadersResponses(deltas, &headers3, &warning_set, &net_log, |
| 1848 &request_headers_modified3, |
| 1849 &request_cookies_modified3); |
| 1828 EXPECT_FALSE(headers3.HasHeader("key1")); | 1850 EXPECT_FALSE(headers3.HasHeader("key1")); |
| 1829 ASSERT_TRUE(headers3.GetHeader("key2", &header_value)); | 1851 ASSERT_TRUE(headers3.GetHeader("key2", &header_value)); |
| 1830 EXPECT_EQ("value 3", header_value); | 1852 EXPECT_EQ("value 3", header_value); |
| 1831 ASSERT_TRUE(headers3.GetHeader("key3", &header_value)); | 1853 ASSERT_TRUE(headers3.GetHeader("key3", &header_value)); |
| 1832 EXPECT_EQ("value 3", header_value); | 1854 EXPECT_EQ("value 3", header_value); |
| 1833 ASSERT_TRUE(headers3.GetHeader("key5", &header_value)); | 1855 ASSERT_TRUE(headers3.GetHeader("key5", &header_value)); |
| 1834 EXPECT_EQ("value 5", header_value); | 1856 EXPECT_EQ("value 5", header_value); |
| 1835 EXPECT_EQ(1u, warning_set.size()); | 1857 EXPECT_EQ(1u, warning_set.size()); |
| 1836 EXPECT_TRUE(HasWarning(warning_set, "extid2")); | 1858 EXPECT_TRUE(HasWarning(warning_set, "extid2")); |
| 1837 EXPECT_EQ(3u, capturing_net_log.GetSize()); | 1859 EXPECT_EQ(3u, capturing_net_log.GetSize()); |
| 1860 EXPECT_TRUE(request_headers_modified3); |
| 1861 EXPECT_FALSE(request_cookies_modified3); |
| 1838 } | 1862 } |
| 1839 | 1863 |
| 1840 TEST(ExtensionWebRequestHelpersTest, | 1864 TEST(ExtensionWebRequestHelpersTest, |
| 1841 TestMergeOnBeforeSendHeadersResponses_Cookies) { | 1865 TestMergeOnBeforeSendHeadersResponses_Cookies) { |
| 1842 net::HttpRequestHeaders base_headers; | 1866 net::HttpRequestHeaders base_headers; |
| 1843 base_headers.AddHeaderFromString( | 1867 base_headers.AddHeaderFromString( |
| 1844 "Cookie: name=value; name2=value2; name3=\"value3\""); | 1868 "Cookie: name=value; name2=value2; name3=\"value3\""); |
| 1845 net::BoundTestNetLog capturing_net_log; | 1869 net::BoundTestNetLog capturing_net_log; |
| 1846 net::NetLogWithSource net_log = capturing_net_log.bound(); | 1870 net::NetLogWithSource net_log = capturing_net_log.bound(); |
| 1847 WarningSet warning_set; | 1871 WarningSet warning_set; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1880 add_cookie, add_cookie_2, edit_cookie, remove_cookie | 1904 add_cookie, add_cookie_2, edit_cookie, remove_cookie |
| 1881 }; | 1905 }; |
| 1882 | 1906 |
| 1883 for (size_t i = 0; i < arraysize(operations); ++i) { | 1907 for (size_t i = 0; i < arraysize(operations); ++i) { |
| 1884 linked_ptr<EventResponseDelta> delta( | 1908 linked_ptr<EventResponseDelta> delta( |
| 1885 new EventResponseDelta("extid0", base::Time::FromInternalValue(i * 5))); | 1909 new EventResponseDelta("extid0", base::Time::FromInternalValue(i * 5))); |
| 1886 delta->request_cookie_modifications.push_back(operations[i]); | 1910 delta->request_cookie_modifications.push_back(operations[i]); |
| 1887 deltas.push_back(delta); | 1911 deltas.push_back(delta); |
| 1888 } | 1912 } |
| 1889 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); | 1913 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
| 1914 bool request_headers_modified1; |
| 1915 bool request_cookies_modified1; |
| 1890 net::HttpRequestHeaders headers1; | 1916 net::HttpRequestHeaders headers1; |
| 1891 headers1.MergeFrom(base_headers); | 1917 headers1.MergeFrom(base_headers); |
| 1892 warning_set.clear(); | 1918 warning_set.clear(); |
| 1893 MergeOnBeforeSendHeadersResponses(deltas, &headers1, &warning_set, &net_log); | 1919 MergeOnBeforeSendHeadersResponses(deltas, &headers1, &warning_set, &net_log, |
| 1920 &request_headers_modified1, |
| 1921 &request_cookies_modified1); |
| 1894 EXPECT_TRUE(headers1.HasHeader("Cookie")); | 1922 EXPECT_TRUE(headers1.HasHeader("Cookie")); |
| 1895 ASSERT_TRUE(headers1.GetHeader("Cookie", &header_value)); | 1923 ASSERT_TRUE(headers1.GetHeader("Cookie", &header_value)); |
| 1896 EXPECT_EQ("name=new value; name2=new value; name4=\"value 4\"", header_value); | 1924 EXPECT_EQ("name=new value; name2=new value; name4=\"value 4\"", header_value); |
| 1897 EXPECT_EQ(0u, warning_set.size()); | 1925 EXPECT_EQ(0u, warning_set.size()); |
| 1898 EXPECT_EQ(0u, capturing_net_log.GetSize()); | 1926 EXPECT_EQ(0u, capturing_net_log.GetSize()); |
| 1927 EXPECT_FALSE(request_headers_modified1); |
| 1928 EXPECT_TRUE(request_cookies_modified1); |
| 1899 } | 1929 } |
| 1900 | 1930 |
| 1901 namespace { | 1931 namespace { |
| 1902 | 1932 |
| 1903 std::string GetCookieExpirationDate(int delta_secs) { | 1933 std::string GetCookieExpirationDate(int delta_secs) { |
| 1904 const char* const kWeekDays[] = { | 1934 const char* const kWeekDays[] = { |
| 1905 "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" | 1935 "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" |
| 1906 }; | 1936 }; |
| 1907 const char* const kMonthNames[] = { | 1937 const char* const kMonthNames[] = { |
| 1908 "Jan", "Feb", "Mar", "Apr", "May", "Jun", | 1938 "Jan", "Feb", "Mar", "Apr", "May", "Jun", |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1954 "\r\n"; | 1984 "\r\n"; |
| 1955 scoped_refptr<net::HttpResponseHeaders> base_headers( | 1985 scoped_refptr<net::HttpResponseHeaders> base_headers( |
| 1956 new net::HttpResponseHeaders( | 1986 new net::HttpResponseHeaders( |
| 1957 net::HttpUtil::AssembleRawHeaders( | 1987 net::HttpUtil::AssembleRawHeaders( |
| 1958 base_headers_string.c_str(), base_headers_string.size()))); | 1988 base_headers_string.c_str(), base_headers_string.size()))); |
| 1959 | 1989 |
| 1960 // Check that we can handle if not touching the response headers. | 1990 // Check that we can handle if not touching the response headers. |
| 1961 linked_ptr<EventResponseDelta> d0( | 1991 linked_ptr<EventResponseDelta> d0( |
| 1962 new EventResponseDelta("extid0", base::Time::FromInternalValue(3000))); | 1992 new EventResponseDelta("extid0", base::Time::FromInternalValue(3000))); |
| 1963 deltas.push_back(d0); | 1993 deltas.push_back(d0); |
| 1994 bool response_cookies_modified0; |
| 1964 scoped_refptr<net::HttpResponseHeaders> new_headers0; | 1995 scoped_refptr<net::HttpResponseHeaders> new_headers0; |
| 1965 MergeCookiesInOnHeadersReceivedResponses( | 1996 MergeCookiesInOnHeadersReceivedResponses( |
| 1966 deltas, base_headers.get(), &new_headers0, &warning_set, &net_log); | 1997 deltas, base_headers.get(), &new_headers0, &warning_set, &net_log, |
| 1998 &response_cookies_modified0); |
| 1967 EXPECT_FALSE(new_headers0.get()); | 1999 EXPECT_FALSE(new_headers0.get()); |
| 1968 EXPECT_EQ(0u, warning_set.size()); | 2000 EXPECT_EQ(0u, warning_set.size()); |
| 1969 EXPECT_EQ(0u, capturing_net_log.GetSize()); | 2001 EXPECT_EQ(0u, capturing_net_log.GetSize()); |
| 2002 EXPECT_FALSE(response_cookies_modified0); |
| 1970 | 2003 |
| 1971 linked_ptr<ResponseCookieModification> add_cookie = | 2004 linked_ptr<ResponseCookieModification> add_cookie = |
| 1972 make_linked_ptr(new ResponseCookieModification); | 2005 make_linked_ptr(new ResponseCookieModification); |
| 1973 add_cookie->type = helpers::ADD; | 2006 add_cookie->type = helpers::ADD; |
| 1974 add_cookie->modification.reset(new helpers::ResponseCookie); | 2007 add_cookie->modification.reset(new helpers::ResponseCookie); |
| 1975 add_cookie->modification->name.reset(new std::string("name4")); | 2008 add_cookie->modification->name.reset(new std::string("name4")); |
| 1976 add_cookie->modification->value.reset(new std::string("\"value4\"")); | 2009 add_cookie->modification->value.reset(new std::string("\"value4\"")); |
| 1977 | 2010 |
| 1978 linked_ptr<ResponseCookieModification> edit_cookie = | 2011 linked_ptr<ResponseCookieModification> edit_cookie = |
| 1979 make_linked_ptr(new ResponseCookieModification); | 2012 make_linked_ptr(new ResponseCookieModification); |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2118 remove_cookie_3, remove_cookie_4 | 2151 remove_cookie_3, remove_cookie_4 |
| 2119 }; | 2152 }; |
| 2120 | 2153 |
| 2121 for (size_t i = 0; i < arraysize(operations); ++i) { | 2154 for (size_t i = 0; i < arraysize(operations); ++i) { |
| 2122 linked_ptr<EventResponseDelta> delta( | 2155 linked_ptr<EventResponseDelta> delta( |
| 2123 new EventResponseDelta("extid0", base::Time::FromInternalValue(i * 5))); | 2156 new EventResponseDelta("extid0", base::Time::FromInternalValue(i * 5))); |
| 2124 delta->response_cookie_modifications.push_back(operations[i]); | 2157 delta->response_cookie_modifications.push_back(operations[i]); |
| 2125 deltas.push_back(delta); | 2158 deltas.push_back(delta); |
| 2126 } | 2159 } |
| 2127 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); | 2160 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
| 2161 bool response_cookies_modified1; |
| 2128 scoped_refptr<net::HttpResponseHeaders> headers1( | 2162 scoped_refptr<net::HttpResponseHeaders> headers1( |
| 2129 new net::HttpResponseHeaders( | 2163 new net::HttpResponseHeaders( |
| 2130 net::HttpUtil::AssembleRawHeaders( | 2164 net::HttpUtil::AssembleRawHeaders( |
| 2131 base_headers_string.c_str(), base_headers_string.size()))); | 2165 base_headers_string.c_str(), base_headers_string.size()))); |
| 2132 scoped_refptr<net::HttpResponseHeaders> new_headers1; | 2166 scoped_refptr<net::HttpResponseHeaders> new_headers1; |
| 2133 warning_set.clear(); | 2167 warning_set.clear(); |
| 2134 MergeCookiesInOnHeadersReceivedResponses( | 2168 MergeCookiesInOnHeadersReceivedResponses( |
| 2135 deltas, headers1.get(), &new_headers1, &warning_set, &net_log); | 2169 deltas, headers1.get(), &new_headers1, &warning_set, &net_log, |
| 2170 &response_cookies_modified1); |
| 2136 | 2171 |
| 2137 EXPECT_TRUE(new_headers1->HasHeader("Foo")); | 2172 EXPECT_TRUE(new_headers1->HasHeader("Foo")); |
| 2138 size_t iter = 0; | 2173 size_t iter = 0; |
| 2139 std::string cookie_string; | 2174 std::string cookie_string; |
| 2140 std::set<std::string> expected_cookies; | 2175 std::set<std::string> expected_cookies; |
| 2141 expected_cookies.insert("name=value; domain=google.com; secure"); | 2176 expected_cookies.insert("name=value; domain=google.com; secure"); |
| 2142 expected_cookies.insert("name2=value2; secure"); | 2177 expected_cookies.insert("name2=value2; secure"); |
| 2143 expected_cookies.insert("name4=\"value4\"; secure"); | 2178 expected_cookies.insert("name4=\"value4\"; secure"); |
| 2144 expected_cookies.insert( | 2179 expected_cookies.insert( |
| 2145 "lBound1=greater_1; expires=" + cookie_expiration + "; secure"); | 2180 "lBound1=greater_1; expires=" + cookie_expiration + "; secure"); |
| 2146 expected_cookies.insert("lBound2=greater_2; max-age=1200; secure"); | 2181 expected_cookies.insert("lBound2=greater_2; max-age=1200; secure"); |
| 2147 expected_cookies.insert("lBound3=equal_2; max-age=2000; secure"); | 2182 expected_cookies.insert("lBound3=equal_2; max-age=2000; secure"); |
| 2148 expected_cookies.insert( | 2183 expected_cookies.insert( |
| 2149 "uBound1=smaller_1; expires=" + cookie_expiration + "; secure"); | 2184 "uBound1=smaller_1; expires=" + cookie_expiration + "; secure"); |
| 2150 expected_cookies.insert("uBound2=smaller_2; max-age=1200; secure"); | 2185 expected_cookies.insert("uBound2=smaller_2; max-age=1200; secure"); |
| 2151 expected_cookies.insert("uBound3=equal_4; max-age=2000; secure"); | 2186 expected_cookies.insert("uBound3=equal_4; max-age=2000; secure"); |
| 2152 expected_cookies.insert("uBound4=value11; max-age=2500; secure"); | 2187 expected_cookies.insert("uBound4=value11; max-age=2500; secure"); |
| 2153 expected_cookies.insert( | 2188 expected_cookies.insert( |
| 2154 "uBound5=value12; max-age=600; expires=" + cookie_expiration+ "; secure"); | 2189 "uBound5=value12; max-age=600; expires=" + cookie_expiration+ "; secure"); |
| 2155 std::set<std::string> actual_cookies; | 2190 std::set<std::string> actual_cookies; |
| 2156 while (new_headers1->EnumerateHeader(&iter, "Set-Cookie", &cookie_string)) | 2191 while (new_headers1->EnumerateHeader(&iter, "Set-Cookie", &cookie_string)) |
| 2157 actual_cookies.insert(cookie_string); | 2192 actual_cookies.insert(cookie_string); |
| 2158 EXPECT_EQ(expected_cookies, actual_cookies); | 2193 EXPECT_EQ(expected_cookies, actual_cookies); |
| 2159 EXPECT_EQ(0u, warning_set.size()); | 2194 EXPECT_EQ(0u, warning_set.size()); |
| 2160 EXPECT_EQ(0u, capturing_net_log.GetSize()); | 2195 EXPECT_EQ(0u, capturing_net_log.GetSize()); |
| 2196 EXPECT_TRUE(response_cookies_modified1); |
| 2161 } | 2197 } |
| 2162 | 2198 |
| 2163 TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) { | 2199 TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) { |
| 2164 net::BoundTestNetLog capturing_net_log; | 2200 net::BoundTestNetLog capturing_net_log; |
| 2165 net::NetLogWithSource net_log = capturing_net_log.bound(); | 2201 net::NetLogWithSource net_log = capturing_net_log.bound(); |
| 2166 WarningSet warning_set; | 2202 WarningSet warning_set; |
| 2167 std::string header_value; | 2203 std::string header_value; |
| 2168 EventResponseDeltas deltas; | 2204 EventResponseDeltas deltas; |
| 2169 | 2205 |
| 2170 char base_headers_string[] = | 2206 char base_headers_string[] = |
| 2171 "HTTP/1.0 200 OK\r\n" | 2207 "HTTP/1.0 200 OK\r\n" |
| 2172 "Key1: Value1\r\n" | 2208 "Key1: Value1\r\n" |
| 2173 "Key2: Value2, Foo\r\n" | 2209 "Key2: Value2, Foo\r\n" |
| 2174 "\r\n"; | 2210 "\r\n"; |
| 2175 scoped_refptr<net::HttpResponseHeaders> base_headers( | 2211 scoped_refptr<net::HttpResponseHeaders> base_headers( |
| 2176 new net::HttpResponseHeaders( | 2212 new net::HttpResponseHeaders( |
| 2177 net::HttpUtil::AssembleRawHeaders( | 2213 net::HttpUtil::AssembleRawHeaders( |
| 2178 base_headers_string, sizeof(base_headers_string)))); | 2214 base_headers_string, sizeof(base_headers_string)))); |
| 2179 | 2215 |
| 2180 // Check that we can handle if not touching the response headers. | 2216 // Check that we can handle if not touching the response headers. |
| 2181 linked_ptr<EventResponseDelta> d0( | 2217 linked_ptr<EventResponseDelta> d0( |
| 2182 new EventResponseDelta("extid0", base::Time::FromInternalValue(3000))); | 2218 new EventResponseDelta("extid0", base::Time::FromInternalValue(3000))); |
| 2183 deltas.push_back(d0); | 2219 deltas.push_back(d0); |
| 2220 bool response_headers_modified0; |
| 2221 bool response_cookies_modified0; |
| 2184 scoped_refptr<net::HttpResponseHeaders> new_headers0; | 2222 scoped_refptr<net::HttpResponseHeaders> new_headers0; |
| 2185 GURL allowed_unsafe_redirect_url0; | 2223 GURL allowed_unsafe_redirect_url0; |
| 2186 MergeOnHeadersReceivedResponses(deltas, | 2224 MergeOnHeadersReceivedResponses(deltas, base_headers.get(), &new_headers0, |
| 2187 base_headers.get(), | 2225 &allowed_unsafe_redirect_url0, &warning_set, |
| 2188 &new_headers0, | 2226 &net_log, &response_headers_modified0, |
| 2189 &allowed_unsafe_redirect_url0, | 2227 &response_cookies_modified0); |
| 2190 &warning_set, | |
| 2191 &net_log); | |
| 2192 EXPECT_FALSE(new_headers0.get()); | 2228 EXPECT_FALSE(new_headers0.get()); |
| 2193 EXPECT_TRUE(allowed_unsafe_redirect_url0.is_empty()); | 2229 EXPECT_TRUE(allowed_unsafe_redirect_url0.is_empty()); |
| 2194 EXPECT_EQ(0u, warning_set.size()); | 2230 EXPECT_EQ(0u, warning_set.size()); |
| 2195 EXPECT_EQ(0u, capturing_net_log.GetSize()); | 2231 EXPECT_EQ(0u, capturing_net_log.GetSize()); |
| 2232 EXPECT_FALSE(response_headers_modified0); |
| 2233 EXPECT_FALSE(response_cookies_modified0); |
| 2196 | 2234 |
| 2197 linked_ptr<EventResponseDelta> d1( | 2235 linked_ptr<EventResponseDelta> d1( |
| 2198 new EventResponseDelta("extid1", base::Time::FromInternalValue(2000))); | 2236 new EventResponseDelta("extid1", base::Time::FromInternalValue(2000))); |
| 2199 d1->deleted_response_headers.push_back(ResponseHeader("KEY1", "Value1")); | 2237 d1->deleted_response_headers.push_back(ResponseHeader("KEY1", "Value1")); |
| 2200 d1->deleted_response_headers.push_back(ResponseHeader("KEY2", "Value2, Foo")); | 2238 d1->deleted_response_headers.push_back(ResponseHeader("KEY2", "Value2, Foo")); |
| 2201 d1->added_response_headers.push_back(ResponseHeader("Key2", "Value3")); | 2239 d1->added_response_headers.push_back(ResponseHeader("Key2", "Value3")); |
| 2202 deltas.push_back(d1); | 2240 deltas.push_back(d1); |
| 2203 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); | 2241 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
| 2204 warning_set.clear(); | 2242 warning_set.clear(); |
| 2205 capturing_net_log.Clear(); | 2243 capturing_net_log.Clear(); |
| 2244 bool response_headers_modified1; |
| 2245 bool response_cookies_modified1; |
| 2206 scoped_refptr<net::HttpResponseHeaders> new_headers1; | 2246 scoped_refptr<net::HttpResponseHeaders> new_headers1; |
| 2207 GURL allowed_unsafe_redirect_url1; | 2247 GURL allowed_unsafe_redirect_url1; |
| 2208 MergeOnHeadersReceivedResponses(deltas, | 2248 MergeOnHeadersReceivedResponses(deltas, base_headers.get(), &new_headers1, |
| 2209 base_headers.get(), | 2249 &allowed_unsafe_redirect_url1, &warning_set, |
| 2210 &new_headers1, | 2250 &net_log, &response_headers_modified1, |
| 2211 &allowed_unsafe_redirect_url1, | 2251 &response_cookies_modified1); |
| 2212 &warning_set, | |
| 2213 &net_log); | |
| 2214 ASSERT_TRUE(new_headers1.get()); | 2252 ASSERT_TRUE(new_headers1.get()); |
| 2215 EXPECT_TRUE(allowed_unsafe_redirect_url1.is_empty()); | 2253 EXPECT_TRUE(allowed_unsafe_redirect_url1.is_empty()); |
| 2216 std::multimap<std::string, std::string> expected1; | 2254 std::multimap<std::string, std::string> expected1; |
| 2217 expected1.insert(std::pair<std::string, std::string>("Key2", "Value3")); | 2255 expected1.insert(std::pair<std::string, std::string>("Key2", "Value3")); |
| 2218 size_t iter = 0; | 2256 size_t iter = 0; |
| 2219 std::string name; | 2257 std::string name; |
| 2220 std::string value; | 2258 std::string value; |
| 2221 std::multimap<std::string, std::string> actual1; | 2259 std::multimap<std::string, std::string> actual1; |
| 2222 while (new_headers1->EnumerateHeaderLines(&iter, &name, &value)) { | 2260 while (new_headers1->EnumerateHeaderLines(&iter, &name, &value)) { |
| 2223 actual1.insert(std::pair<std::string, std::string>(name, value)); | 2261 actual1.insert(std::pair<std::string, std::string>(name, value)); |
| 2224 } | 2262 } |
| 2225 EXPECT_EQ(expected1, actual1); | 2263 EXPECT_EQ(expected1, actual1); |
| 2226 EXPECT_EQ(0u, warning_set.size()); | 2264 EXPECT_EQ(0u, warning_set.size()); |
| 2227 EXPECT_EQ(1u, capturing_net_log.GetSize()); | 2265 EXPECT_EQ(1u, capturing_net_log.GetSize()); |
| 2266 EXPECT_TRUE(response_headers_modified1); |
| 2267 EXPECT_FALSE(response_cookies_modified1); |
| 2228 | 2268 |
| 2229 // Check that we replace response headers only once. | 2269 // Check that we replace response headers only once. |
| 2230 linked_ptr<EventResponseDelta> d2( | 2270 linked_ptr<EventResponseDelta> d2( |
| 2231 new EventResponseDelta("extid2", base::Time::FromInternalValue(1500))); | 2271 new EventResponseDelta("extid2", base::Time::FromInternalValue(1500))); |
| 2232 // Note that we use a different capitalization of KeY2. This should not | 2272 // Note that we use a different capitalization of KeY2. This should not |
| 2233 // matter. | 2273 // matter. |
| 2234 d2->deleted_response_headers.push_back(ResponseHeader("KeY2", "Value2, Foo")); | 2274 d2->deleted_response_headers.push_back(ResponseHeader("KeY2", "Value2, Foo")); |
| 2235 d2->added_response_headers.push_back(ResponseHeader("Key2", "Value4")); | 2275 d2->added_response_headers.push_back(ResponseHeader("Key2", "Value4")); |
| 2236 deltas.push_back(d2); | 2276 deltas.push_back(d2); |
| 2237 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); | 2277 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
| 2238 warning_set.clear(); | 2278 warning_set.clear(); |
| 2239 capturing_net_log.Clear(); | 2279 capturing_net_log.Clear(); |
| 2280 bool response_headers_modified2; |
| 2281 bool response_cookies_modified2; |
| 2240 scoped_refptr<net::HttpResponseHeaders> new_headers2; | 2282 scoped_refptr<net::HttpResponseHeaders> new_headers2; |
| 2241 GURL allowed_unsafe_redirect_url2; | 2283 GURL allowed_unsafe_redirect_url2; |
| 2242 MergeOnHeadersReceivedResponses(deltas, | 2284 MergeOnHeadersReceivedResponses(deltas, base_headers.get(), &new_headers2, |
| 2243 base_headers.get(), | 2285 &allowed_unsafe_redirect_url2, &warning_set, |
| 2244 &new_headers2, | 2286 &net_log, &response_headers_modified2, |
| 2245 &allowed_unsafe_redirect_url2, | 2287 &response_cookies_modified2); |
| 2246 &warning_set, | |
| 2247 &net_log); | |
| 2248 ASSERT_TRUE(new_headers2.get()); | 2288 ASSERT_TRUE(new_headers2.get()); |
| 2249 EXPECT_TRUE(allowed_unsafe_redirect_url2.is_empty()); | 2289 EXPECT_TRUE(allowed_unsafe_redirect_url2.is_empty()); |
| 2250 iter = 0; | 2290 iter = 0; |
| 2251 std::multimap<std::string, std::string> actual2; | 2291 std::multimap<std::string, std::string> actual2; |
| 2252 while (new_headers2->EnumerateHeaderLines(&iter, &name, &value)) { | 2292 while (new_headers2->EnumerateHeaderLines(&iter, &name, &value)) { |
| 2253 actual2.insert(std::pair<std::string, std::string>(name, value)); | 2293 actual2.insert(std::pair<std::string, std::string>(name, value)); |
| 2254 } | 2294 } |
| 2255 EXPECT_EQ(expected1, actual2); | 2295 EXPECT_EQ(expected1, actual2); |
| 2256 EXPECT_EQ(1u, warning_set.size()); | 2296 EXPECT_EQ(1u, warning_set.size()); |
| 2257 EXPECT_TRUE(HasWarning(warning_set, "extid2")); | 2297 EXPECT_TRUE(HasWarning(warning_set, "extid2")); |
| 2258 EXPECT_EQ(2u, capturing_net_log.GetSize()); | 2298 EXPECT_EQ(2u, capturing_net_log.GetSize()); |
| 2299 EXPECT_TRUE(response_headers_modified2); |
| 2300 EXPECT_FALSE(response_cookies_modified2); |
| 2259 } | 2301 } |
| 2260 | 2302 |
| 2261 // Check that we do not delete too much | 2303 // Check that we do not delete too much |
| 2262 TEST(ExtensionWebRequestHelpersTest, | 2304 TEST(ExtensionWebRequestHelpersTest, |
| 2263 TestMergeOnHeadersReceivedResponsesDeletion) { | 2305 TestMergeOnHeadersReceivedResponsesDeletion) { |
| 2264 net::BoundTestNetLog capturing_net_log; | 2306 net::BoundTestNetLog capturing_net_log; |
| 2265 net::NetLogWithSource net_log = capturing_net_log.bound(); | 2307 net::NetLogWithSource net_log = capturing_net_log.bound(); |
| 2266 WarningSet warning_set; | 2308 WarningSet warning_set; |
| 2267 std::string header_value; | 2309 std::string header_value; |
| 2268 EventResponseDeltas deltas; | 2310 EventResponseDeltas deltas; |
| 2269 | 2311 |
| 2270 char base_headers_string[] = | 2312 char base_headers_string[] = |
| 2271 "HTTP/1.0 200 OK\r\n" | 2313 "HTTP/1.0 200 OK\r\n" |
| 2272 "Key1: Value1\r\n" | 2314 "Key1: Value1\r\n" |
| 2273 "Key1: Value2\r\n" | 2315 "Key1: Value2\r\n" |
| 2274 "Key1: Value3\r\n" | 2316 "Key1: Value3\r\n" |
| 2275 "Key2: Value4\r\n" | 2317 "Key2: Value4\r\n" |
| 2276 "\r\n"; | 2318 "\r\n"; |
| 2277 scoped_refptr<net::HttpResponseHeaders> base_headers( | 2319 scoped_refptr<net::HttpResponseHeaders> base_headers( |
| 2278 new net::HttpResponseHeaders( | 2320 new net::HttpResponseHeaders( |
| 2279 net::HttpUtil::AssembleRawHeaders( | 2321 net::HttpUtil::AssembleRawHeaders( |
| 2280 base_headers_string, sizeof(base_headers_string)))); | 2322 base_headers_string, sizeof(base_headers_string)))); |
| 2281 | 2323 |
| 2282 linked_ptr<EventResponseDelta> d1( | 2324 linked_ptr<EventResponseDelta> d1( |
| 2283 new EventResponseDelta("extid1", base::Time::FromInternalValue(2000))); | 2325 new EventResponseDelta("extid1", base::Time::FromInternalValue(2000))); |
| 2284 d1->deleted_response_headers.push_back(ResponseHeader("KEY1", "Value2")); | 2326 d1->deleted_response_headers.push_back(ResponseHeader("KEY1", "Value2")); |
| 2285 deltas.push_back(d1); | 2327 deltas.push_back(d1); |
| 2328 bool response_headers_modified1; |
| 2329 bool response_cookies_modified1; |
| 2286 scoped_refptr<net::HttpResponseHeaders> new_headers1; | 2330 scoped_refptr<net::HttpResponseHeaders> new_headers1; |
| 2287 GURL allowed_unsafe_redirect_url1; | 2331 GURL allowed_unsafe_redirect_url1; |
| 2288 MergeOnHeadersReceivedResponses(deltas, | 2332 MergeOnHeadersReceivedResponses(deltas, base_headers.get(), &new_headers1, |
| 2289 base_headers.get(), | 2333 &allowed_unsafe_redirect_url1, &warning_set, |
| 2290 &new_headers1, | 2334 &net_log, &response_headers_modified1, |
| 2291 &allowed_unsafe_redirect_url1, | 2335 &response_cookies_modified1); |
| 2292 &warning_set, | |
| 2293 &net_log); | |
| 2294 ASSERT_TRUE(new_headers1.get()); | 2336 ASSERT_TRUE(new_headers1.get()); |
| 2295 EXPECT_TRUE(allowed_unsafe_redirect_url1.is_empty()); | 2337 EXPECT_TRUE(allowed_unsafe_redirect_url1.is_empty()); |
| 2296 std::multimap<std::string, std::string> expected1; | 2338 std::multimap<std::string, std::string> expected1; |
| 2297 expected1.insert(std::pair<std::string, std::string>("Key1", "Value1")); | 2339 expected1.insert(std::pair<std::string, std::string>("Key1", "Value1")); |
| 2298 expected1.insert(std::pair<std::string, std::string>("Key1", "Value3")); | 2340 expected1.insert(std::pair<std::string, std::string>("Key1", "Value3")); |
| 2299 expected1.insert(std::pair<std::string, std::string>("Key2", "Value4")); | 2341 expected1.insert(std::pair<std::string, std::string>("Key2", "Value4")); |
| 2300 size_t iter = 0; | 2342 size_t iter = 0; |
| 2301 std::string name; | 2343 std::string name; |
| 2302 std::string value; | 2344 std::string value; |
| 2303 std::multimap<std::string, std::string> actual1; | 2345 std::multimap<std::string, std::string> actual1; |
| 2304 while (new_headers1->EnumerateHeaderLines(&iter, &name, &value)) { | 2346 while (new_headers1->EnumerateHeaderLines(&iter, &name, &value)) { |
| 2305 actual1.insert(std::pair<std::string, std::string>(name, value)); | 2347 actual1.insert(std::pair<std::string, std::string>(name, value)); |
| 2306 } | 2348 } |
| 2307 EXPECT_EQ(expected1, actual1); | 2349 EXPECT_EQ(expected1, actual1); |
| 2308 EXPECT_EQ(0u, warning_set.size()); | 2350 EXPECT_EQ(0u, warning_set.size()); |
| 2309 EXPECT_EQ(1u, capturing_net_log.GetSize()); | 2351 EXPECT_EQ(1u, capturing_net_log.GetSize()); |
| 2352 EXPECT_TRUE(response_headers_modified1); |
| 2353 EXPECT_FALSE(response_cookies_modified1); |
| 2310 } | 2354 } |
| 2311 | 2355 |
| 2312 // Tests whether onHeadersReceived can initiate a redirect. | 2356 // Tests whether onHeadersReceived can initiate a redirect. |
| 2313 // The URL merge logic is shared with onBeforeRequest, so we only need to test | 2357 // The URL merge logic is shared with onBeforeRequest, so we only need to test |
| 2314 // whether the URLs are merged at all. | 2358 // whether the URLs are merged at all. |
| 2315 TEST(ExtensionWebRequestHelpersTest, | 2359 TEST(ExtensionWebRequestHelpersTest, |
| 2316 TestMergeOnHeadersReceivedResponsesRedirect) { | 2360 TestMergeOnHeadersReceivedResponsesRedirect) { |
| 2317 EventResponseDeltas deltas; | 2361 EventResponseDeltas deltas; |
| 2318 net::BoundTestNetLog capturing_net_log; | 2362 net::BoundTestNetLog capturing_net_log; |
| 2319 net::NetLogWithSource net_log = capturing_net_log.bound(); | 2363 net::NetLogWithSource net_log = capturing_net_log.bound(); |
| 2320 WarningSet warning_set; | 2364 WarningSet warning_set; |
| 2321 | 2365 |
| 2322 char base_headers_string[] = | 2366 char base_headers_string[] = |
| 2323 "HTTP/1.0 200 OK\r\n" | 2367 "HTTP/1.0 200 OK\r\n" |
| 2324 "\r\n"; | 2368 "\r\n"; |
| 2325 scoped_refptr<net::HttpResponseHeaders> base_headers( | 2369 scoped_refptr<net::HttpResponseHeaders> base_headers( |
| 2326 new net::HttpResponseHeaders(net::HttpUtil::AssembleRawHeaders( | 2370 new net::HttpResponseHeaders(net::HttpUtil::AssembleRawHeaders( |
| 2327 base_headers_string, sizeof(base_headers_string)))); | 2371 base_headers_string, sizeof(base_headers_string)))); |
| 2328 | 2372 |
| 2329 // No redirect | 2373 // No redirect |
| 2330 linked_ptr<EventResponseDelta> d0( | 2374 linked_ptr<EventResponseDelta> d0( |
| 2331 new EventResponseDelta("extid0", base::Time::FromInternalValue(0))); | 2375 new EventResponseDelta("extid0", base::Time::FromInternalValue(0))); |
| 2332 deltas.push_back(d0); | 2376 deltas.push_back(d0); |
| 2377 bool response_headers_modified0; |
| 2378 bool response_cookies_modified0; |
| 2333 scoped_refptr<net::HttpResponseHeaders> new_headers0; | 2379 scoped_refptr<net::HttpResponseHeaders> new_headers0; |
| 2334 GURL allowed_unsafe_redirect_url0; | 2380 GURL allowed_unsafe_redirect_url0; |
| 2335 MergeOnHeadersReceivedResponses(deltas, | 2381 MergeOnHeadersReceivedResponses(deltas, base_headers.get(), &new_headers0, |
| 2336 base_headers.get(), | 2382 &allowed_unsafe_redirect_url0, &warning_set, |
| 2337 &new_headers0, | 2383 &net_log, &response_headers_modified0, |
| 2338 &allowed_unsafe_redirect_url0, | 2384 &response_cookies_modified0); |
| 2339 &warning_set, | |
| 2340 &net_log); | |
| 2341 EXPECT_FALSE(new_headers0.get()); | 2385 EXPECT_FALSE(new_headers0.get()); |
| 2342 EXPECT_TRUE(allowed_unsafe_redirect_url0.is_empty()); | 2386 EXPECT_TRUE(allowed_unsafe_redirect_url0.is_empty()); |
| 2343 EXPECT_EQ(0u, warning_set.size()); | 2387 EXPECT_EQ(0u, warning_set.size()); |
| 2344 EXPECT_EQ(0u, capturing_net_log.GetSize()); | 2388 EXPECT_EQ(0u, capturing_net_log.GetSize()); |
| 2389 EXPECT_FALSE(response_headers_modified0); |
| 2390 EXPECT_FALSE(response_cookies_modified0); |
| 2345 | 2391 |
| 2346 // Single redirect. | 2392 // Single redirect. |
| 2347 GURL new_url_1("http://foo.com"); | 2393 GURL new_url_1("http://foo.com"); |
| 2348 linked_ptr<EventResponseDelta> d1( | 2394 linked_ptr<EventResponseDelta> d1( |
| 2349 new EventResponseDelta("extid1", base::Time::FromInternalValue(1000))); | 2395 new EventResponseDelta("extid1", base::Time::FromInternalValue(1000))); |
| 2350 d1->new_url = GURL(new_url_1); | 2396 d1->new_url = GURL(new_url_1); |
| 2351 deltas.push_back(d1); | 2397 deltas.push_back(d1); |
| 2352 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); | 2398 deltas.sort(&InDecreasingExtensionInstallationTimeOrder); |
| 2353 capturing_net_log.Clear(); | 2399 capturing_net_log.Clear(); |
| 2400 bool response_headers_modified1; |
| 2401 bool response_cookies_modified1; |
| 2354 scoped_refptr<net::HttpResponseHeaders> new_headers1; | 2402 scoped_refptr<net::HttpResponseHeaders> new_headers1; |
| 2355 GURL allowed_unsafe_redirect_url1; | 2403 GURL allowed_unsafe_redirect_url1; |
| 2356 MergeOnHeadersReceivedResponses(deltas, | 2404 MergeOnHeadersReceivedResponses(deltas, base_headers.get(), &new_headers1, |
| 2357 base_headers.get(), | 2405 &allowed_unsafe_redirect_url1, &warning_set, |
| 2358 &new_headers1, | 2406 &net_log, &response_headers_modified1, |
| 2359 &allowed_unsafe_redirect_url1, | 2407 &response_cookies_modified1); |
| 2360 &warning_set, | |
| 2361 &net_log); | |
| 2362 | |
| 2363 EXPECT_TRUE(new_headers1.get()); | 2408 EXPECT_TRUE(new_headers1.get()); |
| 2364 EXPECT_TRUE(new_headers1->HasHeaderValue("Location", new_url_1.spec())); | 2409 EXPECT_TRUE(new_headers1->HasHeaderValue("Location", new_url_1.spec())); |
| 2365 EXPECT_EQ(new_url_1, allowed_unsafe_redirect_url1); | 2410 EXPECT_EQ(new_url_1, allowed_unsafe_redirect_url1); |
| 2366 EXPECT_TRUE(warning_set.empty()); | 2411 EXPECT_TRUE(warning_set.empty()); |
| 2367 EXPECT_EQ(1u, capturing_net_log.GetSize()); | 2412 EXPECT_EQ(1u, capturing_net_log.GetSize()); |
| 2413 EXPECT_FALSE(response_headers_modified1); |
| 2414 EXPECT_FALSE(response_cookies_modified1); |
| 2368 } | 2415 } |
| 2369 | 2416 |
| 2370 TEST(ExtensionWebRequestHelpersTest, TestMergeOnAuthRequiredResponses) { | 2417 TEST(ExtensionWebRequestHelpersTest, TestMergeOnAuthRequiredResponses) { |
| 2371 net::BoundTestNetLog capturing_net_log; | 2418 net::BoundTestNetLog capturing_net_log; |
| 2372 net::NetLogWithSource net_log = capturing_net_log.bound(); | 2419 net::NetLogWithSource net_log = capturing_net_log.bound(); |
| 2373 WarningSet warning_set; | 2420 WarningSet warning_set; |
| 2374 EventResponseDeltas deltas; | 2421 EventResponseDeltas deltas; |
| 2375 base::string16 username = base::ASCIIToUTF16("foo"); | 2422 base::string16 username = base::ASCIIToUTF16("foo"); |
| 2376 base::string16 password = base::ASCIIToUTF16("bar"); | 2423 base::string16 password = base::ASCIIToUTF16("bar"); |
| 2377 base::string16 password2 = base::ASCIIToUTF16("baz"); | 2424 base::string16 password2 = base::ASCIIToUTF16("baz"); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2440 EXPECT_TRUE(credentials_set); | 2487 EXPECT_TRUE(credentials_set); |
| 2441 EXPECT_FALSE(auth3.Empty()); | 2488 EXPECT_FALSE(auth3.Empty()); |
| 2442 EXPECT_EQ(username, auth1.username()); | 2489 EXPECT_EQ(username, auth1.username()); |
| 2443 EXPECT_EQ(password, auth1.password()); | 2490 EXPECT_EQ(password, auth1.password()); |
| 2444 EXPECT_EQ(1u, warning_set.size()); | 2491 EXPECT_EQ(1u, warning_set.size()); |
| 2445 EXPECT_TRUE(HasWarning(warning_set, "extid2")); | 2492 EXPECT_TRUE(HasWarning(warning_set, "extid2")); |
| 2446 EXPECT_EQ(3u, capturing_net_log.GetSize()); | 2493 EXPECT_EQ(3u, capturing_net_log.GetSize()); |
| 2447 } | 2494 } |
| 2448 | 2495 |
| 2449 } // namespace extensions | 2496 } // namespace extensions |
| OLD | NEW |