| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "net/http/http_network_transaction.h" | 5 #include "net/http/http_network_transaction.h" |
| 6 | 6 |
| 7 #include <math.h> // ceil | 7 #include <math.h> // ceil |
| 8 #include <stdarg.h> | 8 #include <stdarg.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| 11 #include <limits> | 11 #include <limits> |
| 12 #include <memory> | |
| 13 #include <set> | 12 #include <set> |
| 14 #include <string> | 13 #include <string> |
| 15 #include <utility> | 14 #include <utility> |
| 16 #include <vector> | 15 #include <vector> |
| 17 | 16 |
| 18 #include "base/compiler_specific.h" | 17 #include "base/compiler_specific.h" |
| 19 #include "base/files/file_path.h" | 18 #include "base/files/file_path.h" |
| 20 #include "base/files/file_util.h" | 19 #include "base/files/file_util.h" |
| 21 #include "base/json/json_writer.h" | 20 #include "base/json/json_writer.h" |
| 22 #include "base/logging.h" | 21 #include "base/logging.h" |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 last_priority_set_(IDLE) {} | 120 last_priority_set_(IDLE) {} |
| 122 | 121 |
| 123 ~TestNetworkStreamThrottler() override { | 122 ~TestNetworkStreamThrottler() override { |
| 124 EXPECT_TRUE(outstanding_throttles_.empty()); | 123 EXPECT_TRUE(outstanding_throttles_.empty()); |
| 125 } | 124 } |
| 126 | 125 |
| 127 // NetworkThrottleManager | 126 // NetworkThrottleManager |
| 128 std::unique_ptr<Throttle> CreateThrottle(ThrottleDelegate* delegate, | 127 std::unique_ptr<Throttle> CreateThrottle(ThrottleDelegate* delegate, |
| 129 RequestPriority priority, | 128 RequestPriority priority, |
| 130 bool ignore_limits) override { | 129 bool ignore_limits) override { |
| 131 std::unique_ptr<TestThrottle> test_throttle( | 130 auto test_throttle = |
| 132 new TestThrottle(throttle_new_requests_, delegate, this)); | 131 base::MakeUnique<TestThrottle>(throttle_new_requests_, delegate, this); |
| 133 outstanding_throttles_.insert(test_throttle.get()); | 132 outstanding_throttles_.insert(test_throttle.get()); |
| 134 return std::move(test_throttle); | 133 return std::move(test_throttle); |
| 135 } | 134 } |
| 136 | 135 |
| 137 void UnthrottleAllRequests() { | 136 void UnthrottleAllRequests() { |
| 138 std::set<TestThrottle*> outstanding_throttles_copy(outstanding_throttles_); | 137 std::set<TestThrottle*> outstanding_throttles_copy(outstanding_throttles_); |
| 139 for (auto* throttle : outstanding_throttles_copy) { | 138 for (auto* throttle : outstanding_throttles_copy) { |
| 140 if (throttle->IsBlocked()) | 139 if (throttle->IsBlocked()) |
| 141 throttle->Unthrottle(); | 140 throttle->Unthrottle(); |
| 142 } | 141 } |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 361 } | 360 } |
| 362 | 361 |
| 363 // Note that the pointer written into |*throttler| will only be valid | 362 // Note that the pointer written into |*throttler| will only be valid |
| 364 // for the lifetime of the returned HttpNetworkSession. | 363 // for the lifetime of the returned HttpNetworkSession. |
| 365 std::unique_ptr<HttpNetworkSession> CreateSessionWithThrottler( | 364 std::unique_ptr<HttpNetworkSession> CreateSessionWithThrottler( |
| 366 SpdySessionDependencies* session_deps, | 365 SpdySessionDependencies* session_deps, |
| 367 TestNetworkStreamThrottler** throttler) { | 366 TestNetworkStreamThrottler** throttler) { |
| 368 std::unique_ptr<HttpNetworkSession> session( | 367 std::unique_ptr<HttpNetworkSession> session( |
| 369 SpdySessionDependencies::SpdyCreateSession(session_deps)); | 368 SpdySessionDependencies::SpdyCreateSession(session_deps)); |
| 370 | 369 |
| 371 std::unique_ptr<TestNetworkStreamThrottler> owned_throttler( | 370 auto owned_throttler = base::MakeUnique<TestNetworkStreamThrottler>(); |
| 372 new TestNetworkStreamThrottler); | |
| 373 *throttler = owned_throttler.get(); | 371 *throttler = owned_throttler.get(); |
| 374 | 372 |
| 375 HttpNetworkSessionPeer peer(session.get()); | 373 HttpNetworkSessionPeer peer(session.get()); |
| 376 peer.SetNetworkStreamThrottler(std::move(owned_throttler)); | 374 peer.SetNetworkStreamThrottler(std::move(owned_throttler)); |
| 377 | 375 |
| 378 return session; | 376 return session; |
| 379 } | 377 } |
| 380 | 378 |
| 381 } // namespace | 379 } // namespace |
| 382 | 380 |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 844 MockRead data_reads[] = { | 842 MockRead data_reads[] = { |
| 845 MockRead("hello world"), MockRead(SYNCHRONOUS, OK), | 843 MockRead("hello world"), MockRead(SYNCHRONOUS, OK), |
| 846 }; | 844 }; |
| 847 | 845 |
| 848 StaticSocketDataProvider data(data_reads, arraysize(data_reads), nullptr, 0); | 846 StaticSocketDataProvider data(data_reads, arraysize(data_reads), nullptr, 0); |
| 849 session_deps_.socket_factory->AddSocketDataProvider(&data); | 847 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 850 | 848 |
| 851 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 849 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 852 | 850 |
| 853 HttpRequestInfo request; | 851 HttpRequestInfo request; |
| 854 std::unique_ptr<HttpTransaction> trans( | 852 auto trans = |
| 855 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 853 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 856 | 854 |
| 857 request.method = "GET"; | 855 request.method = "GET"; |
| 858 request.url = GURL("http://www.example.com:2000/"); | 856 request.url = GURL("http://www.example.com:2000/"); |
| 859 TestCompletionCallback callback; | 857 TestCompletionCallback callback; |
| 860 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 858 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 861 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_INVALID_HTTP_RESPONSE)); | 859 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_INVALID_HTTP_RESPONSE)); |
| 862 } | 860 } |
| 863 | 861 |
| 864 // Response with no status line, and a weird port. Option to allow weird ports | 862 // Response with no status line, and a weird port. Option to allow weird ports |
| 865 // enabled. | 863 // enabled. |
| 866 TEST_F(HttpNetworkTransactionTest, SimpleGETNoHeadersWeirdPortAllowed) { | 864 TEST_F(HttpNetworkTransactionTest, SimpleGETNoHeadersWeirdPortAllowed) { |
| 867 MockRead data_reads[] = { | 865 MockRead data_reads[] = { |
| 868 MockRead("hello world"), MockRead(SYNCHRONOUS, OK), | 866 MockRead("hello world"), MockRead(SYNCHRONOUS, OK), |
| 869 }; | 867 }; |
| 870 | 868 |
| 871 StaticSocketDataProvider data(data_reads, arraysize(data_reads), nullptr, 0); | 869 StaticSocketDataProvider data(data_reads, arraysize(data_reads), nullptr, 0); |
| 872 session_deps_.socket_factory->AddSocketDataProvider(&data); | 870 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 873 session_deps_.http_09_on_non_default_ports_enabled = true; | 871 session_deps_.http_09_on_non_default_ports_enabled = true; |
| 874 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 872 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 875 | 873 |
| 876 HttpRequestInfo request; | 874 HttpRequestInfo request; |
| 877 std::unique_ptr<HttpTransaction> trans( | 875 auto trans = |
| 878 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 876 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 879 | 877 |
| 880 request.method = "GET"; | 878 request.method = "GET"; |
| 881 request.url = GURL("http://www.example.com:2000/"); | 879 request.url = GURL("http://www.example.com:2000/"); |
| 882 TestCompletionCallback callback; | 880 TestCompletionCallback callback; |
| 883 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 881 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 884 EXPECT_THAT(callback.GetResult(rv), IsOk()); | 882 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 885 | 883 |
| 886 const HttpResponseInfo* info = trans->GetResponseInfo(); | 884 const HttpResponseInfo* info = trans->GetResponseInfo(); |
| 887 ASSERT_TRUE(info->headers); | 885 ASSERT_TRUE(info->headers); |
| 888 EXPECT_EQ("HTTP/0.9 200 OK", info->headers->GetStatusLine()); | 886 EXPECT_EQ("HTTP/0.9 200 OK", info->headers->GetStatusLine()); |
| (...skipping 910 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1799 // Next 2 cases (KeepAliveEarlyClose and KeepAliveEarlyClose2) are regression | 1797 // Next 2 cases (KeepAliveEarlyClose and KeepAliveEarlyClose2) are regression |
| 1800 // tests. There was a bug causing HttpNetworkTransaction to hang in the | 1798 // tests. There was a bug causing HttpNetworkTransaction to hang in the |
| 1801 // destructor in such situations. | 1799 // destructor in such situations. |
| 1802 // See http://crbug.com/154712 and http://crbug.com/156609. | 1800 // See http://crbug.com/154712 and http://crbug.com/156609. |
| 1803 TEST_F(HttpNetworkTransactionTest, KeepAliveEarlyClose) { | 1801 TEST_F(HttpNetworkTransactionTest, KeepAliveEarlyClose) { |
| 1804 HttpRequestInfo request; | 1802 HttpRequestInfo request; |
| 1805 request.method = "GET"; | 1803 request.method = "GET"; |
| 1806 request.url = GURL("http://www.example.org/"); | 1804 request.url = GURL("http://www.example.org/"); |
| 1807 | 1805 |
| 1808 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 1806 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 1809 std::unique_ptr<HttpNetworkTransaction> trans( | 1807 auto trans = |
| 1810 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 1808 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 1811 | 1809 |
| 1812 MockRead data_reads[] = { | 1810 MockRead data_reads[] = { |
| 1813 MockRead("HTTP/1.0 200 OK\r\n"), | 1811 MockRead("HTTP/1.0 200 OK\r\n"), |
| 1814 MockRead("Connection: keep-alive\r\n"), | 1812 MockRead("Connection: keep-alive\r\n"), |
| 1815 MockRead("Content-Length: 100\r\n\r\n"), | 1813 MockRead("Content-Length: 100\r\n\r\n"), |
| 1816 MockRead("hello"), | 1814 MockRead("hello"), |
| 1817 MockRead(SYNCHRONOUS, 0), | 1815 MockRead(SYNCHRONOUS, 0), |
| 1818 }; | 1816 }; |
| 1819 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 1817 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 1820 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1818 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1839 base::RunLoop().RunUntilIdle(); | 1837 base::RunLoop().RunUntilIdle(); |
| 1840 EXPECT_EQ(0, GetIdleSocketCountInTransportSocketPool(session.get())); | 1838 EXPECT_EQ(0, GetIdleSocketCountInTransportSocketPool(session.get())); |
| 1841 } | 1839 } |
| 1842 | 1840 |
| 1843 TEST_F(HttpNetworkTransactionTest, KeepAliveEarlyClose2) { | 1841 TEST_F(HttpNetworkTransactionTest, KeepAliveEarlyClose2) { |
| 1844 HttpRequestInfo request; | 1842 HttpRequestInfo request; |
| 1845 request.method = "GET"; | 1843 request.method = "GET"; |
| 1846 request.url = GURL("http://www.example.org/"); | 1844 request.url = GURL("http://www.example.org/"); |
| 1847 | 1845 |
| 1848 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 1846 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 1849 std::unique_ptr<HttpNetworkTransaction> trans( | 1847 auto trans = |
| 1850 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 1848 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 1851 | 1849 |
| 1852 MockRead data_reads[] = { | 1850 MockRead data_reads[] = { |
| 1853 MockRead("HTTP/1.0 200 OK\r\n"), | 1851 MockRead("HTTP/1.0 200 OK\r\n"), |
| 1854 MockRead("Connection: keep-alive\r\n"), | 1852 MockRead("Connection: keep-alive\r\n"), |
| 1855 MockRead("Content-Length: 100\r\n\r\n"), | 1853 MockRead("Content-Length: 100\r\n\r\n"), |
| 1856 MockRead(SYNCHRONOUS, 0), | 1854 MockRead(SYNCHRONOUS, 0), |
| 1857 }; | 1855 }; |
| 1858 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 1856 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 1859 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1857 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1860 | 1858 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1946 data.set_busy_before_sync_reads(true); | 1944 data.set_busy_before_sync_reads(true); |
| 1947 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1945 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1948 | 1946 |
| 1949 const int kNumUnreadBodies = arraysize(data_writes) - 1; | 1947 const int kNumUnreadBodies = arraysize(data_writes) - 1; |
| 1950 std::string response_lines[kNumUnreadBodies]; | 1948 std::string response_lines[kNumUnreadBodies]; |
| 1951 | 1949 |
| 1952 uint32_t first_socket_log_id = NetLogSource::kInvalidId; | 1950 uint32_t first_socket_log_id = NetLogSource::kInvalidId; |
| 1953 for (size_t i = 0; i < kNumUnreadBodies; ++i) { | 1951 for (size_t i = 0; i < kNumUnreadBodies; ++i) { |
| 1954 TestCompletionCallback callback; | 1952 TestCompletionCallback callback; |
| 1955 | 1953 |
| 1956 std::unique_ptr<HttpNetworkTransaction> trans( | 1954 auto trans = base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, |
| 1957 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 1955 session.get()); |
| 1958 | 1956 |
| 1959 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 1957 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 1960 EXPECT_THAT(callback.GetResult(rv), IsOk()); | 1958 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 1961 | 1959 |
| 1962 LoadTimingInfo load_timing_info; | 1960 LoadTimingInfo load_timing_info; |
| 1963 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); | 1961 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); |
| 1964 if (i == 0) { | 1962 if (i == 0) { |
| 1965 TestLoadTimingNotReused(load_timing_info, CONNECT_TIMING_HAS_DNS_TIMES); | 1963 TestLoadTimingNotReused(load_timing_info, CONNECT_TIMING_HAS_DNS_TIMES); |
| 1966 first_socket_log_id = load_timing_info.socket_log_id; | 1964 first_socket_log_id = load_timing_info.socket_log_id; |
| 1967 } else { | 1965 } else { |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2046 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 2044 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 2047 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 2045 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 2048 data_writes2, arraysize(data_writes2)); | 2046 data_writes2, arraysize(data_writes2)); |
| 2049 session_deps_.socket_factory->AddSocketDataProvider(&data2); | 2047 session_deps_.socket_factory->AddSocketDataProvider(&data2); |
| 2050 | 2048 |
| 2051 TestCompletionCallback callback; | 2049 TestCompletionCallback callback; |
| 2052 HttpRequestInfo request1; | 2050 HttpRequestInfo request1; |
| 2053 request1.method = "HEAD"; | 2051 request1.method = "HEAD"; |
| 2054 request1.url = GURL("http://www.borked.com/"); | 2052 request1.url = GURL("http://www.borked.com/"); |
| 2055 | 2053 |
| 2056 std::unique_ptr<HttpNetworkTransaction> trans1( | 2054 auto trans1 = |
| 2057 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 2055 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 2058 int rv = trans1->Start(&request1, callback.callback(), NetLogWithSource()); | 2056 int rv = trans1->Start(&request1, callback.callback(), NetLogWithSource()); |
| 2059 EXPECT_THAT(callback.GetResult(rv), IsOk()); | 2057 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 2060 | 2058 |
| 2061 const HttpResponseInfo* response1 = trans1->GetResponseInfo(); | 2059 const HttpResponseInfo* response1 = trans1->GetResponseInfo(); |
| 2062 ASSERT_TRUE(response1); | 2060 ASSERT_TRUE(response1); |
| 2063 ASSERT_TRUE(response1->headers); | 2061 ASSERT_TRUE(response1->headers); |
| 2064 EXPECT_EQ(200, response1->headers->response_code()); | 2062 EXPECT_EQ(200, response1->headers->response_code()); |
| 2065 EXPECT_TRUE(response1->headers->IsKeepAlive()); | 2063 EXPECT_TRUE(response1->headers->IsKeepAlive()); |
| 2066 | 2064 |
| 2067 std::string response_data1; | 2065 std::string response_data1; |
| 2068 EXPECT_THAT(ReadTransaction(trans1.get(), &response_data1), IsOk()); | 2066 EXPECT_THAT(ReadTransaction(trans1.get(), &response_data1), IsOk()); |
| 2069 EXPECT_EQ("", response_data1); | 2067 EXPECT_EQ("", response_data1); |
| 2070 // Deleting the transaction attempts to release the socket back into the | 2068 // Deleting the transaction attempts to release the socket back into the |
| 2071 // socket pool. | 2069 // socket pool. |
| 2072 trans1.reset(); | 2070 trans1.reset(); |
| 2073 | 2071 |
| 2074 HttpRequestInfo request2; | 2072 HttpRequestInfo request2; |
| 2075 request2.method = "GET"; | 2073 request2.method = "GET"; |
| 2076 request2.url = GURL("http://www.borked.com/foo"); | 2074 request2.url = GURL("http://www.borked.com/foo"); |
| 2077 | 2075 |
| 2078 std::unique_ptr<HttpNetworkTransaction> trans2( | 2076 auto trans2 = |
| 2079 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 2077 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 2080 rv = trans2->Start(&request2, callback.callback(), NetLogWithSource()); | 2078 rv = trans2->Start(&request2, callback.callback(), NetLogWithSource()); |
| 2081 EXPECT_THAT(callback.GetResult(rv), IsOk()); | 2079 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 2082 | 2080 |
| 2083 const HttpResponseInfo* response2 = trans2->GetResponseInfo(); | 2081 const HttpResponseInfo* response2 = trans2->GetResponseInfo(); |
| 2084 ASSERT_TRUE(response2); | 2082 ASSERT_TRUE(response2); |
| 2085 ASSERT_TRUE(response2->headers); | 2083 ASSERT_TRUE(response2->headers); |
| 2086 EXPECT_EQ(200, response2->headers->response_code()); | 2084 EXPECT_EQ(200, response2->headers->response_code()); |
| 2087 | 2085 |
| 2088 std::string response_data2; | 2086 std::string response_data2; |
| 2089 EXPECT_THAT(ReadTransaction(trans2.get(), &response_data2), IsOk()); | 2087 EXPECT_THAT(ReadTransaction(trans2.get(), &response_data2), IsOk()); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2122 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 2120 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 2123 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 2121 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 2124 data_writes2, arraysize(data_writes2)); | 2122 data_writes2, arraysize(data_writes2)); |
| 2125 session_deps_.socket_factory->AddSocketDataProvider(&data2); | 2123 session_deps_.socket_factory->AddSocketDataProvider(&data2); |
| 2126 | 2124 |
| 2127 TestCompletionCallback callback; | 2125 TestCompletionCallback callback; |
| 2128 HttpRequestInfo request1; | 2126 HttpRequestInfo request1; |
| 2129 request1.method = "GET"; | 2127 request1.method = "GET"; |
| 2130 request1.url = GURL("http://www.borked.com/"); | 2128 request1.url = GURL("http://www.borked.com/"); |
| 2131 | 2129 |
| 2132 std::unique_ptr<HttpNetworkTransaction> trans1( | 2130 auto trans1 = |
| 2133 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 2131 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 2134 int rv = trans1->Start(&request1, callback.callback(), NetLogWithSource()); | 2132 int rv = trans1->Start(&request1, callback.callback(), NetLogWithSource()); |
| 2135 EXPECT_THAT(callback.GetResult(rv), IsOk()); | 2133 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 2136 | 2134 |
| 2137 const HttpResponseInfo* response1 = trans1->GetResponseInfo(); | 2135 const HttpResponseInfo* response1 = trans1->GetResponseInfo(); |
| 2138 ASSERT_TRUE(response1); | 2136 ASSERT_TRUE(response1); |
| 2139 ASSERT_TRUE(response1->headers); | 2137 ASSERT_TRUE(response1->headers); |
| 2140 EXPECT_EQ(200, response1->headers->response_code()); | 2138 EXPECT_EQ(200, response1->headers->response_code()); |
| 2141 EXPECT_TRUE(response1->headers->IsKeepAlive()); | 2139 EXPECT_TRUE(response1->headers->IsKeepAlive()); |
| 2142 | 2140 |
| 2143 std::string response_data1; | 2141 std::string response_data1; |
| 2144 EXPECT_THAT(ReadTransaction(trans1.get(), &response_data1), IsOk()); | 2142 EXPECT_THAT(ReadTransaction(trans1.get(), &response_data1), IsOk()); |
| 2145 EXPECT_EQ("This server is borked.", response_data1); | 2143 EXPECT_EQ("This server is borked.", response_data1); |
| 2146 // Deleting the transaction attempts to release the socket back into the | 2144 // Deleting the transaction attempts to release the socket back into the |
| 2147 // socket pool. | 2145 // socket pool. |
| 2148 trans1.reset(); | 2146 trans1.reset(); |
| 2149 | 2147 |
| 2150 HttpRequestInfo request2; | 2148 HttpRequestInfo request2; |
| 2151 request2.method = "GET"; | 2149 request2.method = "GET"; |
| 2152 request2.url = GURL("http://www.borked.com/foo"); | 2150 request2.url = GURL("http://www.borked.com/foo"); |
| 2153 | 2151 |
| 2154 std::unique_ptr<HttpNetworkTransaction> trans2( | 2152 auto trans2 = |
| 2155 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 2153 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 2156 rv = trans2->Start(&request2, callback.callback(), NetLogWithSource()); | 2154 rv = trans2->Start(&request2, callback.callback(), NetLogWithSource()); |
| 2157 EXPECT_THAT(callback.GetResult(rv), IsOk()); | 2155 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 2158 | 2156 |
| 2159 const HttpResponseInfo* response2 = trans2->GetResponseInfo(); | 2157 const HttpResponseInfo* response2 = trans2->GetResponseInfo(); |
| 2160 ASSERT_TRUE(response2); | 2158 ASSERT_TRUE(response2); |
| 2161 ASSERT_TRUE(response2->headers); | 2159 ASSERT_TRUE(response2->headers); |
| 2162 EXPECT_EQ(200, response2->headers->response_code()); | 2160 EXPECT_EQ(200, response2->headers->response_code()); |
| 2163 | 2161 |
| 2164 std::string response_data2; | 2162 std::string response_data2; |
| 2165 EXPECT_THAT(ReadTransaction(trans2.get(), &response_data2), IsOk()); | 2163 EXPECT_THAT(ReadTransaction(trans2.get(), &response_data2), IsOk()); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2198 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 2196 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 2199 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 2197 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 2200 data_writes2, arraysize(data_writes2)); | 2198 data_writes2, arraysize(data_writes2)); |
| 2201 session_deps_.socket_factory->AddSocketDataProvider(&data2); | 2199 session_deps_.socket_factory->AddSocketDataProvider(&data2); |
| 2202 | 2200 |
| 2203 TestCompletionCallback callback; | 2201 TestCompletionCallback callback; |
| 2204 HttpRequestInfo request1; | 2202 HttpRequestInfo request1; |
| 2205 request1.method = "GET"; | 2203 request1.method = "GET"; |
| 2206 request1.url = GURL("http://www.borked.com/"); | 2204 request1.url = GURL("http://www.borked.com/"); |
| 2207 | 2205 |
| 2208 std::unique_ptr<HttpNetworkTransaction> trans1( | 2206 auto trans1 = |
| 2209 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 2207 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 2210 int rv = trans1->Start(&request1, callback.callback(), NetLogWithSource()); | 2208 int rv = trans1->Start(&request1, callback.callback(), NetLogWithSource()); |
| 2211 EXPECT_THAT(callback.GetResult(rv), IsOk()); | 2209 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 2212 | 2210 |
| 2213 const HttpResponseInfo* response1 = trans1->GetResponseInfo(); | 2211 const HttpResponseInfo* response1 = trans1->GetResponseInfo(); |
| 2214 ASSERT_TRUE(response1); | 2212 ASSERT_TRUE(response1); |
| 2215 ASSERT_TRUE(response1->headers); | 2213 ASSERT_TRUE(response1->headers); |
| 2216 EXPECT_EQ(200, response1->headers->response_code()); | 2214 EXPECT_EQ(200, response1->headers->response_code()); |
| 2217 EXPECT_TRUE(response1->headers->IsKeepAlive()); | 2215 EXPECT_TRUE(response1->headers->IsKeepAlive()); |
| 2218 | 2216 |
| 2219 std::string response_data1; | 2217 std::string response_data1; |
| 2220 EXPECT_THAT(ReadTransaction(trans1.get(), &response_data1), IsOk()); | 2218 EXPECT_THAT(ReadTransaction(trans1.get(), &response_data1), IsOk()); |
| 2221 EXPECT_EQ("This server is borked.", response_data1); | 2219 EXPECT_EQ("This server is borked.", response_data1); |
| 2222 // Deleting the transaction attempts to release the socket back into the | 2220 // Deleting the transaction attempts to release the socket back into the |
| 2223 // socket pool. | 2221 // socket pool. |
| 2224 trans1.reset(); | 2222 trans1.reset(); |
| 2225 | 2223 |
| 2226 HttpRequestInfo request2; | 2224 HttpRequestInfo request2; |
| 2227 request2.method = "GET"; | 2225 request2.method = "GET"; |
| 2228 request2.url = GURL("http://www.borked.com/foo"); | 2226 request2.url = GURL("http://www.borked.com/foo"); |
| 2229 | 2227 |
| 2230 std::unique_ptr<HttpNetworkTransaction> trans2( | 2228 auto trans2 = |
| 2231 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 2229 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 2232 rv = trans2->Start(&request2, callback.callback(), NetLogWithSource()); | 2230 rv = trans2->Start(&request2, callback.callback(), NetLogWithSource()); |
| 2233 EXPECT_THAT(callback.GetResult(rv), IsOk()); | 2231 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 2234 | 2232 |
| 2235 const HttpResponseInfo* response2 = trans2->GetResponseInfo(); | 2233 const HttpResponseInfo* response2 = trans2->GetResponseInfo(); |
| 2236 ASSERT_TRUE(response2); | 2234 ASSERT_TRUE(response2); |
| 2237 ASSERT_TRUE(response2->headers); | 2235 ASSERT_TRUE(response2->headers); |
| 2238 EXPECT_EQ(200, response2->headers->response_code()); | 2236 EXPECT_EQ(200, response2->headers->response_code()); |
| 2239 | 2237 |
| 2240 std::string response_data2; | 2238 std::string response_data2; |
| 2241 EXPECT_THAT(ReadTransaction(trans2.get(), &response_data2), IsOk()); | 2239 EXPECT_THAT(ReadTransaction(trans2.get(), &response_data2), IsOk()); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 2263 }; | 2261 }; |
| 2264 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 2262 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 2265 data_writes1, arraysize(data_writes1)); | 2263 data_writes1, arraysize(data_writes1)); |
| 2266 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 2264 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 2267 | 2265 |
| 2268 TestCompletionCallback callback; | 2266 TestCompletionCallback callback; |
| 2269 HttpRequestInfo request1; | 2267 HttpRequestInfo request1; |
| 2270 request1.method = "GET"; | 2268 request1.method = "GET"; |
| 2271 request1.url = GURL("http://www.borked.com/"); | 2269 request1.url = GURL("http://www.borked.com/"); |
| 2272 | 2270 |
| 2273 std::unique_ptr<HttpNetworkTransaction> trans1( | 2271 auto trans = |
| 2274 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 2272 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 2275 int rv = trans1->Start(&request1, callback.callback(), NetLogWithSource()); | 2273 int rv = trans->Start(&request1, callback.callback(), NetLogWithSource()); |
| 2276 EXPECT_THAT(callback.GetResult(rv), IsOk()); | 2274 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 2277 | 2275 |
| 2278 const HttpResponseInfo* response1 = trans1->GetResponseInfo(); | 2276 const HttpResponseInfo* response1 = trans->GetResponseInfo(); |
| 2279 ASSERT_TRUE(response1); | 2277 ASSERT_TRUE(response1); |
| 2280 ASSERT_TRUE(response1->headers); | 2278 ASSERT_TRUE(response1->headers); |
| 2281 EXPECT_EQ(200, response1->headers->response_code()); | 2279 EXPECT_EQ(200, response1->headers->response_code()); |
| 2282 EXPECT_TRUE(response1->headers->IsKeepAlive()); | 2280 EXPECT_TRUE(response1->headers->IsKeepAlive()); |
| 2283 | 2281 |
| 2284 // Deleting the transaction creates an HttpResponseBodyDrainer to read the | 2282 // Deleting the transaction creates an HttpResponseBodyDrainer to read the |
| 2285 // response body. | 2283 // response body. |
| 2286 trans1.reset(); | 2284 trans.reset(); |
| 2287 | 2285 |
| 2288 // Let the HttpResponseBodyDrainer drain the socket. It should determine the | 2286 // Let the HttpResponseBodyDrainer drain the socket. It should determine the |
| 2289 // socket can't be reused, rather than returning it to the socket pool. | 2287 // socket can't be reused, rather than returning it to the socket pool. |
| 2290 base::RunLoop().RunUntilIdle(); | 2288 base::RunLoop().RunUntilIdle(); |
| 2291 | 2289 |
| 2292 // There should be no idle sockets in the pool. | 2290 // There should be no idle sockets in the pool. |
| 2293 EXPECT_EQ(0, GetIdleSocketCountInTransportSocketPool(session.get())); | 2291 EXPECT_EQ(0, GetIdleSocketCountInTransportSocketPool(session.get())); |
| 2294 } | 2292 } |
| 2295 | 2293 |
| 2296 // Test the request-challenge-retry sequence for basic auth. | 2294 // Test the request-challenge-retry sequence for basic auth. |
| (...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2951 data_writes1, arraysize(data_writes1)); | 2949 data_writes1, arraysize(data_writes1)); |
| 2952 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 2950 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 2953 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 2951 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 2954 data_writes2, arraysize(data_writes2)); | 2952 data_writes2, arraysize(data_writes2)); |
| 2955 session_deps_.socket_factory->AddSocketDataProvider(&data2); | 2953 session_deps_.socket_factory->AddSocketDataProvider(&data2); |
| 2956 SSLSocketDataProvider ssl(ASYNC, OK); | 2954 SSLSocketDataProvider ssl(ASYNC, OK); |
| 2957 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 2955 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 2958 | 2956 |
| 2959 TestCompletionCallback callback1; | 2957 TestCompletionCallback callback1; |
| 2960 | 2958 |
| 2961 std::unique_ptr<HttpNetworkTransaction> trans( | 2959 auto trans = |
| 2962 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 2960 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 2963 | 2961 |
| 2964 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2962 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
| 2965 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 2963 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 2966 | 2964 |
| 2967 rv = callback1.WaitForResult(); | 2965 rv = callback1.WaitForResult(); |
| 2968 EXPECT_THAT(rv, IsOk()); | 2966 EXPECT_THAT(rv, IsOk()); |
| 2969 TestNetLogEntry::List entries; | 2967 TestNetLogEntry::List entries; |
| 2970 log.GetEntries(&entries); | 2968 log.GetEntries(&entries); |
| 2971 size_t pos = ExpectLogContainsSomewhere( | 2969 size_t pos = ExpectLogContainsSomewhere( |
| 2972 entries, 0, NetLogEventType::HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, | 2970 entries, 0, NetLogEventType::HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3075 data_writes1, arraysize(data_writes1)); | 3073 data_writes1, arraysize(data_writes1)); |
| 3076 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 3074 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 3077 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 3075 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 3078 data_writes2, arraysize(data_writes2)); | 3076 data_writes2, arraysize(data_writes2)); |
| 3079 session_deps_.socket_factory->AddSocketDataProvider(&data2); | 3077 session_deps_.socket_factory->AddSocketDataProvider(&data2); |
| 3080 SSLSocketDataProvider ssl(ASYNC, OK); | 3078 SSLSocketDataProvider ssl(ASYNC, OK); |
| 3081 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 3079 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 3082 | 3080 |
| 3083 TestCompletionCallback callback1; | 3081 TestCompletionCallback callback1; |
| 3084 | 3082 |
| 3085 std::unique_ptr<HttpNetworkTransaction> trans( | 3083 auto trans = |
| 3086 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 3084 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 3087 | 3085 |
| 3088 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 3086 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
| 3089 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 3087 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 3090 | 3088 |
| 3091 rv = callback1.WaitForResult(); | 3089 rv = callback1.WaitForResult(); |
| 3092 EXPECT_THAT(rv, IsOk()); | 3090 EXPECT_THAT(rv, IsOk()); |
| 3093 TestNetLogEntry::List entries; | 3091 TestNetLogEntry::List entries; |
| 3094 log.GetEntries(&entries); | 3092 log.GetEntries(&entries); |
| 3095 size_t pos = ExpectLogContainsSomewhere( | 3093 size_t pos = ExpectLogContainsSomewhere( |
| 3096 entries, 0, NetLogEventType::HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, | 3094 entries, 0, NetLogEventType::HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, |
| (...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3428 data1.set_busy_before_sync_reads(true); | 3426 data1.set_busy_before_sync_reads(true); |
| 3429 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 3427 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 3430 SequencedSocketData data2(data_reads2, arraysize(data_reads2), data_writes2, | 3428 SequencedSocketData data2(data_reads2, arraysize(data_reads2), data_writes2, |
| 3431 arraysize(data_writes2)); | 3429 arraysize(data_writes2)); |
| 3432 session_deps_.socket_factory->AddSocketDataProvider(&data2); | 3430 session_deps_.socket_factory->AddSocketDataProvider(&data2); |
| 3433 SSLSocketDataProvider ssl(ASYNC, OK); | 3431 SSLSocketDataProvider ssl(ASYNC, OK); |
| 3434 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 3432 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 3435 | 3433 |
| 3436 TestCompletionCallback callback1; | 3434 TestCompletionCallback callback1; |
| 3437 | 3435 |
| 3438 std::unique_ptr<HttpNetworkTransaction> trans( | 3436 auto trans = |
| 3439 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 3437 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 3440 | 3438 |
| 3441 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 3439 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
| 3442 EXPECT_THAT(callback1.GetResult(rv), IsOk()); | 3440 EXPECT_THAT(callback1.GetResult(rv), IsOk()); |
| 3443 | 3441 |
| 3444 TestNetLogEntry::List entries; | 3442 TestNetLogEntry::List entries; |
| 3445 log.GetEntries(&entries); | 3443 log.GetEntries(&entries); |
| 3446 size_t pos = ExpectLogContainsSomewhere( | 3444 size_t pos = ExpectLogContainsSomewhere( |
| 3447 entries, 0, NetLogEventType::HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, | 3445 entries, 0, NetLogEventType::HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, |
| 3448 NetLogEventPhase::NONE); | 3446 NetLogEventPhase::NONE); |
| 3449 ExpectLogContainsSomewhere( | 3447 ExpectLogContainsSomewhere( |
| (...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3800 TEST_F(HttpNetworkTransactionTest, | 3798 TEST_F(HttpNetworkTransactionTest, |
| 3801 AuthAllowsDefaultCredentialsTunnelConnectionClose) { | 3799 AuthAllowsDefaultCredentialsTunnelConnectionClose) { |
| 3802 HttpRequestInfo request; | 3800 HttpRequestInfo request; |
| 3803 request.method = "GET"; | 3801 request.method = "GET"; |
| 3804 request.url = GURL("https://www.example.org/"); | 3802 request.url = GURL("https://www.example.org/"); |
| 3805 | 3803 |
| 3806 // Configure against proxy server "myproxy:70". | 3804 // Configure against proxy server "myproxy:70". |
| 3807 session_deps_.proxy_service = | 3805 session_deps_.proxy_service = |
| 3808 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"); | 3806 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"); |
| 3809 | 3807 |
| 3810 std::unique_ptr<HttpAuthHandlerMock::Factory> auth_handler_factory( | 3808 auto auth_handler_factory = base::MakeUnique<HttpAuthHandlerMock::Factory>(); |
| 3811 new HttpAuthHandlerMock::Factory()); | |
| 3812 auth_handler_factory->set_do_init_from_challenge(true); | 3809 auth_handler_factory->set_do_init_from_challenge(true); |
| 3813 std::unique_ptr<HttpAuthHandlerMock> mock_handler(new HttpAuthHandlerMock()); | 3810 auto mock_handler = base::MakeUnique<HttpAuthHandlerMock>(); |
| 3814 mock_handler->set_allows_default_credentials(true); | 3811 mock_handler->set_allows_default_credentials(true); |
| 3815 auth_handler_factory->AddMockHandler(mock_handler.release(), | 3812 auth_handler_factory->AddMockHandler(mock_handler.release(), |
| 3816 HttpAuth::AUTH_PROXY); | 3813 HttpAuth::AUTH_PROXY); |
| 3817 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); | 3814 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); |
| 3818 | 3815 |
| 3819 // Add NetLog just so can verify load timing information gets a NetLog ID. | 3816 // Add NetLog just so can verify load timing information gets a NetLog ID. |
| 3820 NetLog net_log; | 3817 NetLog net_log; |
| 3821 session_deps_.net_log = &net_log; | 3818 session_deps_.net_log = &net_log; |
| 3822 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); | 3819 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
| 3823 | 3820 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3863 | 3860 |
| 3864 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3861 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 3865 data_writes1, arraysize(data_writes1)); | 3862 data_writes1, arraysize(data_writes1)); |
| 3866 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 3863 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 3867 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 3864 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 3868 data_writes2, arraysize(data_writes2)); | 3865 data_writes2, arraysize(data_writes2)); |
| 3869 session_deps_.socket_factory->AddSocketDataProvider(&data2); | 3866 session_deps_.socket_factory->AddSocketDataProvider(&data2); |
| 3870 SSLSocketDataProvider ssl(ASYNC, OK); | 3867 SSLSocketDataProvider ssl(ASYNC, OK); |
| 3871 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 3868 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 3872 | 3869 |
| 3873 std::unique_ptr<HttpNetworkTransaction> trans( | 3870 auto trans = |
| 3874 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 3871 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 3875 | 3872 |
| 3876 TestCompletionCallback callback; | 3873 TestCompletionCallback callback; |
| 3877 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 3874 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 3878 EXPECT_THAT(callback.GetResult(rv), IsOk()); | 3875 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 3879 | 3876 |
| 3880 const HttpResponseInfo* response = trans->GetResponseInfo(); | 3877 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 3881 ASSERT_TRUE(response); | 3878 ASSERT_TRUE(response); |
| 3882 ASSERT_TRUE(response->headers); | 3879 ASSERT_TRUE(response->headers); |
| 3883 EXPECT_FALSE(response->headers->IsKeepAlive()); | 3880 EXPECT_FALSE(response->headers->IsKeepAlive()); |
| 3884 EXPECT_EQ(407, response->headers->response_code()); | 3881 EXPECT_EQ(407, response->headers->response_code()); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3917 TEST_F(HttpNetworkTransactionTest, | 3914 TEST_F(HttpNetworkTransactionTest, |
| 3918 AuthAllowsDefaultCredentialsTunnelServerClosesConnection) { | 3915 AuthAllowsDefaultCredentialsTunnelServerClosesConnection) { |
| 3919 HttpRequestInfo request; | 3916 HttpRequestInfo request; |
| 3920 request.method = "GET"; | 3917 request.method = "GET"; |
| 3921 request.url = GURL("https://www.example.org/"); | 3918 request.url = GURL("https://www.example.org/"); |
| 3922 | 3919 |
| 3923 // Configure against proxy server "myproxy:70". | 3920 // Configure against proxy server "myproxy:70". |
| 3924 session_deps_.proxy_service = | 3921 session_deps_.proxy_service = |
| 3925 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"); | 3922 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"); |
| 3926 | 3923 |
| 3927 std::unique_ptr<HttpAuthHandlerMock::Factory> auth_handler_factory( | 3924 auto auth_handler_factory = base::MakeUnique<HttpAuthHandlerMock::Factory>(); |
| 3928 new HttpAuthHandlerMock::Factory()); | |
| 3929 auth_handler_factory->set_do_init_from_challenge(true); | 3925 auth_handler_factory->set_do_init_from_challenge(true); |
| 3930 std::unique_ptr<HttpAuthHandlerMock> mock_handler(new HttpAuthHandlerMock()); | 3926 auto mock_handler = base::MakeUnique<HttpAuthHandlerMock>(); |
| 3931 mock_handler->set_allows_default_credentials(true); | 3927 mock_handler->set_allows_default_credentials(true); |
| 3932 auth_handler_factory->AddMockHandler(mock_handler.release(), | 3928 auth_handler_factory->AddMockHandler(mock_handler.release(), |
| 3933 HttpAuth::AUTH_PROXY); | 3929 HttpAuth::AUTH_PROXY); |
| 3934 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); | 3930 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); |
| 3935 | 3931 |
| 3936 // Add NetLog just so can verify load timing information gets a NetLog ID. | 3932 // Add NetLog just so can verify load timing information gets a NetLog ID. |
| 3937 NetLog net_log; | 3933 NetLog net_log; |
| 3938 session_deps_.net_log = &net_log; | 3934 session_deps_.net_log = &net_log; |
| 3939 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); | 3935 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
| 3940 | 3936 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3983 | 3979 |
| 3984 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3980 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 3985 data_writes1, arraysize(data_writes1)); | 3981 data_writes1, arraysize(data_writes1)); |
| 3986 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 3982 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 3987 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 3983 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 3988 data_writes2, arraysize(data_writes2)); | 3984 data_writes2, arraysize(data_writes2)); |
| 3989 session_deps_.socket_factory->AddSocketDataProvider(&data2); | 3985 session_deps_.socket_factory->AddSocketDataProvider(&data2); |
| 3990 SSLSocketDataProvider ssl(ASYNC, OK); | 3986 SSLSocketDataProvider ssl(ASYNC, OK); |
| 3991 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 3987 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 3992 | 3988 |
| 3993 std::unique_ptr<HttpNetworkTransaction> trans( | 3989 auto trans = |
| 3994 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 3990 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 3995 | 3991 |
| 3996 TestCompletionCallback callback; | 3992 TestCompletionCallback callback; |
| 3997 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 3993 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 3998 EXPECT_THAT(callback.GetResult(rv), IsOk()); | 3994 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 3999 | 3995 |
| 4000 const HttpResponseInfo* response = trans->GetResponseInfo(); | 3996 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 4001 ASSERT_TRUE(response); | 3997 ASSERT_TRUE(response); |
| 4002 ASSERT_TRUE(response->headers); | 3998 ASSERT_TRUE(response->headers); |
| 4003 EXPECT_TRUE(response->headers->IsKeepAlive()); | 3999 EXPECT_TRUE(response->headers->IsKeepAlive()); |
| 4004 EXPECT_EQ(407, response->headers->response_code()); | 4000 EXPECT_EQ(407, response->headers->response_code()); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4039 TEST_F(HttpNetworkTransactionTest, | 4035 TEST_F(HttpNetworkTransactionTest, |
| 4040 AuthAllowsDefaultCredentialsTunnelServerClosesConnectionTwice) { | 4036 AuthAllowsDefaultCredentialsTunnelServerClosesConnectionTwice) { |
| 4041 HttpRequestInfo request; | 4037 HttpRequestInfo request; |
| 4042 request.method = "GET"; | 4038 request.method = "GET"; |
| 4043 request.url = GURL("https://www.example.org/"); | 4039 request.url = GURL("https://www.example.org/"); |
| 4044 | 4040 |
| 4045 // Configure against proxy server "myproxy:70". | 4041 // Configure against proxy server "myproxy:70". |
| 4046 session_deps_.proxy_service = | 4042 session_deps_.proxy_service = |
| 4047 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"); | 4043 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"); |
| 4048 | 4044 |
| 4049 std::unique_ptr<HttpAuthHandlerMock::Factory> auth_handler_factory( | 4045 auto auth_handler_factory = base::MakeUnique<HttpAuthHandlerMock::Factory>(); |
| 4050 new HttpAuthHandlerMock::Factory()); | |
| 4051 auth_handler_factory->set_do_init_from_challenge(true); | 4046 auth_handler_factory->set_do_init_from_challenge(true); |
| 4052 std::unique_ptr<HttpAuthHandlerMock> mock_handler(new HttpAuthHandlerMock()); | 4047 auto mock_handler = base::MakeUnique<HttpAuthHandlerMock>(); |
| 4053 mock_handler->set_allows_default_credentials(true); | 4048 mock_handler->set_allows_default_credentials(true); |
| 4054 auth_handler_factory->AddMockHandler(mock_handler.release(), | 4049 auth_handler_factory->AddMockHandler(mock_handler.release(), |
| 4055 HttpAuth::AUTH_PROXY); | 4050 HttpAuth::AUTH_PROXY); |
| 4056 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); | 4051 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); |
| 4057 | 4052 |
| 4058 // Add NetLog just so can verify load timing information gets a NetLog ID. | 4053 // Add NetLog just so can verify load timing information gets a NetLog ID. |
| 4059 NetLog net_log; | 4054 NetLog net_log; |
| 4060 session_deps_.net_log = &net_log; | 4055 session_deps_.net_log = &net_log; |
| 4061 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); | 4056 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
| 4062 | 4057 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4098 MockRead(SYNCHRONOUS, ERR_CONNECTION_CLOSED), | 4093 MockRead(SYNCHRONOUS, ERR_CONNECTION_CLOSED), |
| 4099 }; | 4094 }; |
| 4100 | 4095 |
| 4101 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 4096 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 4102 data_writes1, arraysize(data_writes1)); | 4097 data_writes1, arraysize(data_writes1)); |
| 4103 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 4098 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 4104 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 4099 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 4105 data_writes2, arraysize(data_writes2)); | 4100 data_writes2, arraysize(data_writes2)); |
| 4106 session_deps_.socket_factory->AddSocketDataProvider(&data2); | 4101 session_deps_.socket_factory->AddSocketDataProvider(&data2); |
| 4107 | 4102 |
| 4108 std::unique_ptr<HttpNetworkTransaction> trans( | 4103 auto trans = |
| 4109 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 4104 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 4110 | 4105 |
| 4111 TestCompletionCallback callback; | 4106 TestCompletionCallback callback; |
| 4112 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 4107 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 4113 EXPECT_THAT(callback.GetResult(rv), IsOk()); | 4108 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 4114 | 4109 |
| 4115 const HttpResponseInfo* response = trans->GetResponseInfo(); | 4110 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 4116 ASSERT_TRUE(response); | 4111 ASSERT_TRUE(response); |
| 4117 ASSERT_TRUE(response->headers); | 4112 ASSERT_TRUE(response->headers); |
| 4118 EXPECT_TRUE(response->headers->IsKeepAlive()); | 4113 EXPECT_TRUE(response->headers->IsKeepAlive()); |
| 4119 EXPECT_EQ(407, response->headers->response_code()); | 4114 EXPECT_EQ(407, response->headers->response_code()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 4137 TEST_F(HttpNetworkTransactionTest, | 4132 TEST_F(HttpNetworkTransactionTest, |
| 4138 AuthAllowsDefaultCredentialsTunnelServerChallengesTwice) { | 4133 AuthAllowsDefaultCredentialsTunnelServerChallengesTwice) { |
| 4139 HttpRequestInfo request; | 4134 HttpRequestInfo request; |
| 4140 request.method = "GET"; | 4135 request.method = "GET"; |
| 4141 request.url = GURL("https://www.example.org/"); | 4136 request.url = GURL("https://www.example.org/"); |
| 4142 | 4137 |
| 4143 // Configure against proxy server "myproxy:70". | 4138 // Configure against proxy server "myproxy:70". |
| 4144 session_deps_.proxy_service = | 4139 session_deps_.proxy_service = |
| 4145 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"); | 4140 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"); |
| 4146 | 4141 |
| 4147 std::unique_ptr<HttpAuthHandlerMock::Factory> auth_handler_factory( | 4142 auto auth_handler_factory = base::MakeUnique<HttpAuthHandlerMock::Factory>(); |
| 4148 new HttpAuthHandlerMock::Factory()); | |
| 4149 auth_handler_factory->set_do_init_from_challenge(true); | 4143 auth_handler_factory->set_do_init_from_challenge(true); |
| 4150 std::unique_ptr<HttpAuthHandlerMock> mock_handler(new HttpAuthHandlerMock()); | 4144 auto mock_handler = base::MakeUnique<HttpAuthHandlerMock>(); |
| 4151 mock_handler->set_allows_default_credentials(true); | 4145 mock_handler->set_allows_default_credentials(true); |
| 4152 auth_handler_factory->AddMockHandler(mock_handler.release(), | 4146 auth_handler_factory->AddMockHandler(mock_handler.release(), |
| 4153 HttpAuth::AUTH_PROXY); | 4147 HttpAuth::AUTH_PROXY); |
| 4154 // Add another handler for the second challenge. It supports default | 4148 // Add another handler for the second challenge. It supports default |
| 4155 // credentials, but they shouldn't be used, since they were already tried. | 4149 // credentials, but they shouldn't be used, since they were already tried. |
| 4156 mock_handler.reset(new HttpAuthHandlerMock()); | 4150 mock_handler = base::MakeUnique<HttpAuthHandlerMock>(); |
| 4157 mock_handler->set_allows_default_credentials(true); | 4151 mock_handler->set_allows_default_credentials(true); |
| 4158 auth_handler_factory->AddMockHandler(mock_handler.release(), | 4152 auth_handler_factory->AddMockHandler(mock_handler.release(), |
| 4159 HttpAuth::AUTH_PROXY); | 4153 HttpAuth::AUTH_PROXY); |
| 4160 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); | 4154 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); |
| 4161 | 4155 |
| 4162 // Add NetLog just so can verify load timing information gets a NetLog ID. | 4156 // Add NetLog just so can verify load timing information gets a NetLog ID. |
| 4163 NetLog net_log; | 4157 NetLog net_log; |
| 4164 session_deps_.net_log = &net_log; | 4158 session_deps_.net_log = &net_log; |
| 4165 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); | 4159 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
| 4166 | 4160 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 4197 | 4191 |
| 4198 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 4192 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 4199 data_writes1, arraysize(data_writes1)); | 4193 data_writes1, arraysize(data_writes1)); |
| 4200 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 4194 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 4201 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 4195 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 4202 data_writes2, arraysize(data_writes2)); | 4196 data_writes2, arraysize(data_writes2)); |
| 4203 session_deps_.socket_factory->AddSocketDataProvider(&data2); | 4197 session_deps_.socket_factory->AddSocketDataProvider(&data2); |
| 4204 SSLSocketDataProvider ssl(ASYNC, OK); | 4198 SSLSocketDataProvider ssl(ASYNC, OK); |
| 4205 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 4199 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 4206 | 4200 |
| 4207 std::unique_ptr<HttpNetworkTransaction> trans( | 4201 auto trans = |
| 4208 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 4202 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 4209 | 4203 |
| 4210 TestCompletionCallback callback; | 4204 TestCompletionCallback callback; |
| 4211 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 4205 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 4212 EXPECT_THAT(callback.GetResult(rv), IsOk()); | 4206 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 4213 | 4207 |
| 4214 const HttpResponseInfo* response = trans->GetResponseInfo(); | 4208 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 4215 ASSERT_TRUE(response); | 4209 ASSERT_TRUE(response); |
| 4216 ASSERT_TRUE(response->headers); | 4210 ASSERT_TRUE(response->headers); |
| 4217 EXPECT_EQ(407, response->headers->response_code()); | 4211 EXPECT_EQ(407, response->headers->response_code()); |
| 4218 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion()); | 4212 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion()); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 4238 // A more nuanced test than GenerateAuthToken test which asserts that | 4232 // A more nuanced test than GenerateAuthToken test which asserts that |
| 4239 // ERR_INVALID_AUTH_CREDENTIALS does not cause the auth scheme to be | 4233 // ERR_INVALID_AUTH_CREDENTIALS does not cause the auth scheme to be |
| 4240 // unnecessarily invalidated, and that if the server co-operates, the | 4234 // unnecessarily invalidated, and that if the server co-operates, the |
| 4241 // authentication handshake can continue with the same scheme but with a | 4235 // authentication handshake can continue with the same scheme but with a |
| 4242 // different identity. | 4236 // different identity. |
| 4243 TEST_F(HttpNetworkTransactionTest, NonPermanentGenerateAuthTokenError) { | 4237 TEST_F(HttpNetworkTransactionTest, NonPermanentGenerateAuthTokenError) { |
| 4244 HttpRequestInfo request; | 4238 HttpRequestInfo request; |
| 4245 request.method = "GET"; | 4239 request.method = "GET"; |
| 4246 request.url = GURL("http://www.example.org/"); | 4240 request.url = GURL("http://www.example.org/"); |
| 4247 | 4241 |
| 4248 std::unique_ptr<HttpAuthHandlerMock::Factory> auth_handler_factory( | 4242 auto auth_handler_factory = base::MakeUnique<HttpAuthHandlerMock::Factory>(); |
| 4249 new HttpAuthHandlerMock::Factory()); | |
| 4250 auth_handler_factory->set_do_init_from_challenge(true); | 4243 auth_handler_factory->set_do_init_from_challenge(true); |
| 4251 | 4244 |
| 4252 // First handler. Uses default credentials, but barfs at generate auth token. | 4245 // First handler. Uses default credentials, but barfs at generate auth token. |
| 4253 std::unique_ptr<HttpAuthHandlerMock> mock_handler(new HttpAuthHandlerMock()); | 4246 auto mock_handler = base::MakeUnique<HttpAuthHandlerMock>(); |
| 4254 mock_handler->set_allows_default_credentials(true); | 4247 mock_handler->set_allows_default_credentials(true); |
| 4255 mock_handler->set_allows_explicit_credentials(true); | 4248 mock_handler->set_allows_explicit_credentials(true); |
| 4256 mock_handler->set_connection_based(true); | 4249 mock_handler->set_connection_based(true); |
| 4257 mock_handler->SetGenerateExpectation(true, ERR_INVALID_AUTH_CREDENTIALS); | 4250 mock_handler->SetGenerateExpectation(true, ERR_INVALID_AUTH_CREDENTIALS); |
| 4258 auth_handler_factory->AddMockHandler(mock_handler.release(), | 4251 auth_handler_factory->AddMockHandler(mock_handler.release(), |
| 4259 HttpAuth::AUTH_SERVER); | 4252 HttpAuth::AUTH_SERVER); |
| 4260 | 4253 |
| 4261 // Add another handler for the second challenge. It supports default | 4254 // Add another handler for the second challenge. It supports default |
| 4262 // credentials, but they shouldn't be used, since they were already tried. | 4255 // credentials, but they shouldn't be used, since they were already tried. |
| 4263 mock_handler.reset(new HttpAuthHandlerMock()); | 4256 mock_handler = base::MakeUnique<HttpAuthHandlerMock>(); |
| 4264 mock_handler->set_allows_default_credentials(true); | 4257 mock_handler->set_allows_default_credentials(true); |
| 4265 mock_handler->set_allows_explicit_credentials(true); | 4258 mock_handler->set_allows_explicit_credentials(true); |
| 4266 mock_handler->set_connection_based(true); | 4259 mock_handler->set_connection_based(true); |
| 4267 auth_handler_factory->AddMockHandler(mock_handler.release(), | 4260 auth_handler_factory->AddMockHandler(mock_handler.release(), |
| 4268 HttpAuth::AUTH_SERVER); | 4261 HttpAuth::AUTH_SERVER); |
| 4269 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); | 4262 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); |
| 4270 | 4263 |
| 4271 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); | 4264 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
| 4272 | 4265 |
| 4273 MockWrite data_writes1[] = { | 4266 MockWrite data_writes1[] = { |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4317 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 4310 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 4318 | 4311 |
| 4319 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 4312 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 4320 data_writes2, arraysize(data_writes2)); | 4313 data_writes2, arraysize(data_writes2)); |
| 4321 session_deps_.socket_factory->AddSocketDataProvider(&data2); | 4314 session_deps_.socket_factory->AddSocketDataProvider(&data2); |
| 4322 | 4315 |
| 4323 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), | 4316 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), |
| 4324 data_writes3, arraysize(data_writes3)); | 4317 data_writes3, arraysize(data_writes3)); |
| 4325 session_deps_.socket_factory->AddSocketDataProvider(&data3); | 4318 session_deps_.socket_factory->AddSocketDataProvider(&data3); |
| 4326 | 4319 |
| 4327 std::unique_ptr<HttpNetworkTransaction> trans( | 4320 auto trans = |
| 4328 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 4321 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 4329 | 4322 |
| 4330 TestCompletionCallback callback; | 4323 TestCompletionCallback callback; |
| 4331 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 4324 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 4332 EXPECT_THAT(callback.GetResult(rv), IsOk()); | 4325 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 4333 | 4326 |
| 4334 const HttpResponseInfo* response = trans->GetResponseInfo(); | 4327 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 4335 ASSERT_TRUE(response); | 4328 ASSERT_TRUE(response); |
| 4336 ASSERT_TRUE(response->headers); | 4329 ASSERT_TRUE(response->headers); |
| 4337 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion()); | 4330 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion()); |
| 4338 | 4331 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4412 MockRead(SYNCHRONOUS, "22"), | 4405 MockRead(SYNCHRONOUS, "22"), |
| 4413 }; | 4406 }; |
| 4414 | 4407 |
| 4415 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 4408 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 4416 data_writes1, arraysize(data_writes1)); | 4409 data_writes1, arraysize(data_writes1)); |
| 4417 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 4410 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 4418 SSLSocketDataProvider ssl(ASYNC, OK); | 4411 SSLSocketDataProvider ssl(ASYNC, OK); |
| 4419 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 4412 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 4420 | 4413 |
| 4421 TestCompletionCallback callback1; | 4414 TestCompletionCallback callback1; |
| 4422 std::unique_ptr<HttpNetworkTransaction> trans1( | 4415 auto trans1 = |
| 4423 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 4416 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 4424 | 4417 |
| 4425 int rv = trans1->Start(&request1, callback1.callback(), log.bound()); | 4418 int rv = trans1->Start(&request1, callback1.callback(), log.bound()); |
| 4426 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 4419 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 4427 | 4420 |
| 4428 rv = callback1.WaitForResult(); | 4421 rv = callback1.WaitForResult(); |
| 4429 EXPECT_THAT(rv, IsOk()); | 4422 EXPECT_THAT(rv, IsOk()); |
| 4430 | 4423 |
| 4431 const HttpResponseInfo* response1 = trans1->GetResponseInfo(); | 4424 const HttpResponseInfo* response1 = trans1->GetResponseInfo(); |
| 4432 ASSERT_TRUE(response1); | 4425 ASSERT_TRUE(response1); |
| 4433 EXPECT_TRUE(response1->proxy_server.is_http()); | 4426 EXPECT_TRUE(response1->proxy_server.is_http()); |
| 4434 ASSERT_TRUE(response1->headers); | 4427 ASSERT_TRUE(response1->headers); |
| 4435 EXPECT_EQ(1, response1->headers->GetContentLength()); | 4428 EXPECT_EQ(1, response1->headers->GetContentLength()); |
| 4436 | 4429 |
| 4437 LoadTimingInfo load_timing_info1; | 4430 LoadTimingInfo load_timing_info1; |
| 4438 EXPECT_TRUE(trans1->GetLoadTimingInfo(&load_timing_info1)); | 4431 EXPECT_TRUE(trans1->GetLoadTimingInfo(&load_timing_info1)); |
| 4439 TestLoadTimingNotReused(load_timing_info1, CONNECT_TIMING_HAS_SSL_TIMES); | 4432 TestLoadTimingNotReused(load_timing_info1, CONNECT_TIMING_HAS_SSL_TIMES); |
| 4440 | 4433 |
| 4441 trans1.reset(); | 4434 trans1.reset(); |
| 4442 | 4435 |
| 4443 TestCompletionCallback callback2; | 4436 TestCompletionCallback callback2; |
| 4444 std::unique_ptr<HttpNetworkTransaction> trans2( | 4437 auto trans2 = |
| 4445 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 4438 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 4446 | 4439 |
| 4447 rv = trans2->Start(&request2, callback2.callback(), log.bound()); | 4440 rv = trans2->Start(&request2, callback2.callback(), log.bound()); |
| 4448 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 4441 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 4449 | 4442 |
| 4450 rv = callback2.WaitForResult(); | 4443 rv = callback2.WaitForResult(); |
| 4451 EXPECT_THAT(rv, IsOk()); | 4444 EXPECT_THAT(rv, IsOk()); |
| 4452 | 4445 |
| 4453 const HttpResponseInfo* response2 = trans2->GetResponseInfo(); | 4446 const HttpResponseInfo* response2 = trans2->GetResponseInfo(); |
| 4454 ASSERT_TRUE(response2); | 4447 ASSERT_TRUE(response2); |
| 4455 EXPECT_TRUE(response2->proxy_server.is_http()); | 4448 EXPECT_TRUE(response2->proxy_server.is_http()); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4512 MockRead(SYNCHRONOUS, "22"), | 4505 MockRead(SYNCHRONOUS, "22"), |
| 4513 }; | 4506 }; |
| 4514 | 4507 |
| 4515 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 4508 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 4516 data_writes1, arraysize(data_writes1)); | 4509 data_writes1, arraysize(data_writes1)); |
| 4517 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 4510 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 4518 SSLSocketDataProvider ssl(ASYNC, OK); | 4511 SSLSocketDataProvider ssl(ASYNC, OK); |
| 4519 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 4512 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 4520 | 4513 |
| 4521 TestCompletionCallback callback1; | 4514 TestCompletionCallback callback1; |
| 4522 std::unique_ptr<HttpNetworkTransaction> trans1( | 4515 auto trans1 = |
| 4523 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 4516 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 4524 | 4517 |
| 4525 int rv = trans1->Start(&request1, callback1.callback(), log.bound()); | 4518 int rv = trans1->Start(&request1, callback1.callback(), log.bound()); |
| 4526 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 4519 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 4527 | 4520 |
| 4528 rv = callback1.WaitForResult(); | 4521 rv = callback1.WaitForResult(); |
| 4529 EXPECT_THAT(rv, IsOk()); | 4522 EXPECT_THAT(rv, IsOk()); |
| 4530 | 4523 |
| 4531 const HttpResponseInfo* response1 = trans1->GetResponseInfo(); | 4524 const HttpResponseInfo* response1 = trans1->GetResponseInfo(); |
| 4532 ASSERT_TRUE(response1); | 4525 ASSERT_TRUE(response1); |
| 4533 ASSERT_TRUE(response1->headers); | 4526 ASSERT_TRUE(response1->headers); |
| 4534 EXPECT_EQ(1, response1->headers->GetContentLength()); | 4527 EXPECT_EQ(1, response1->headers->GetContentLength()); |
| 4535 | 4528 |
| 4536 LoadTimingInfo load_timing_info1; | 4529 LoadTimingInfo load_timing_info1; |
| 4537 EXPECT_TRUE(trans1->GetLoadTimingInfo(&load_timing_info1)); | 4530 EXPECT_TRUE(trans1->GetLoadTimingInfo(&load_timing_info1)); |
| 4538 TestLoadTimingNotReusedWithPac(load_timing_info1, | 4531 TestLoadTimingNotReusedWithPac(load_timing_info1, |
| 4539 CONNECT_TIMING_HAS_SSL_TIMES); | 4532 CONNECT_TIMING_HAS_SSL_TIMES); |
| 4540 | 4533 |
| 4541 trans1.reset(); | 4534 trans1.reset(); |
| 4542 | 4535 |
| 4543 TestCompletionCallback callback2; | 4536 TestCompletionCallback callback2; |
| 4544 std::unique_ptr<HttpNetworkTransaction> trans2( | 4537 auto trans2 = |
| 4545 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 4538 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 4546 | 4539 |
| 4547 rv = trans2->Start(&request2, callback2.callback(), log.bound()); | 4540 rv = trans2->Start(&request2, callback2.callback(), log.bound()); |
| 4548 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 4541 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 4549 | 4542 |
| 4550 rv = callback2.WaitForResult(); | 4543 rv = callback2.WaitForResult(); |
| 4551 EXPECT_THAT(rv, IsOk()); | 4544 EXPECT_THAT(rv, IsOk()); |
| 4552 | 4545 |
| 4553 const HttpResponseInfo* response2 = trans2->GetResponseInfo(); | 4546 const HttpResponseInfo* response2 = trans2->GetResponseInfo(); |
| 4554 ASSERT_TRUE(response2); | 4547 ASSERT_TRUE(response2); |
| 4555 ASSERT_TRUE(response2->headers); | 4548 ASSERT_TRUE(response2->headers); |
| (...skipping 713 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5269 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); | 5262 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
| 5270 | 5263 |
| 5271 SSLSocketDataProvider ssl(ASYNC, OK); | 5264 SSLSocketDataProvider ssl(ASYNC, OK); |
| 5272 ssl.next_proto = kProtoHTTP2; | 5265 ssl.next_proto = kProtoHTTP2; |
| 5273 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 5266 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 5274 SSLSocketDataProvider ssl2(ASYNC, OK); | 5267 SSLSocketDataProvider ssl2(ASYNC, OK); |
| 5275 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2); | 5268 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2); |
| 5276 | 5269 |
| 5277 TestCompletionCallback callback; | 5270 TestCompletionCallback callback; |
| 5278 | 5271 |
| 5279 std::unique_ptr<HttpNetworkTransaction> trans( | 5272 auto trans = |
| 5280 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 5273 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 5281 int rv = trans->Start(&request1, callback.callback(), NetLogWithSource()); | 5274 int rv = trans->Start(&request1, callback.callback(), NetLogWithSource()); |
| 5282 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 5275 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 5283 | 5276 |
| 5284 rv = callback.WaitForResult(); | 5277 rv = callback.WaitForResult(); |
| 5285 EXPECT_THAT(rv, IsOk()); | 5278 EXPECT_THAT(rv, IsOk()); |
| 5286 | 5279 |
| 5287 LoadTimingInfo load_timing_info; | 5280 LoadTimingInfo load_timing_info; |
| 5288 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); | 5281 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); |
| 5289 TestLoadTimingNotReused(load_timing_info, CONNECT_TIMING_HAS_SSL_TIMES); | 5282 TestLoadTimingNotReused(load_timing_info, CONNECT_TIMING_HAS_SSL_TIMES); |
| 5290 | 5283 |
| 5291 const HttpResponseInfo* response = trans->GetResponseInfo(); | 5284 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 5292 ASSERT_TRUE(response); | 5285 ASSERT_TRUE(response); |
| 5293 ASSERT_TRUE(response->headers); | 5286 ASSERT_TRUE(response->headers); |
| 5294 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 5287 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 5295 | 5288 |
| 5296 std::string response_data; | 5289 std::string response_data; |
| 5297 scoped_refptr<IOBuffer> buf(new IOBuffer(256)); | 5290 scoped_refptr<IOBuffer> buf(new IOBuffer(256)); |
| 5298 EXPECT_EQ(1, trans->Read(buf.get(), 256, callback.callback())); | 5291 EXPECT_EQ(1, trans->Read(buf.get(), 256, callback.callback())); |
| 5299 trans.reset(); | 5292 trans.reset(); |
| 5300 | 5293 |
| 5301 std::unique_ptr<HttpNetworkTransaction> trans2( | 5294 auto trans2 = |
| 5302 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 5295 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 5303 rv = trans2->Start(&request2, callback.callback(), NetLogWithSource()); | 5296 rv = trans2->Start(&request2, callback.callback(), NetLogWithSource()); |
| 5304 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 5297 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 5305 | 5298 |
| 5306 rv = callback.WaitForResult(); | 5299 rv = callback.WaitForResult(); |
| 5307 EXPECT_THAT(rv, IsOk()); | 5300 EXPECT_THAT(rv, IsOk()); |
| 5308 | 5301 |
| 5309 LoadTimingInfo load_timing_info2; | 5302 LoadTimingInfo load_timing_info2; |
| 5310 EXPECT_TRUE(trans2->GetLoadTimingInfo(&load_timing_info2)); | 5303 EXPECT_TRUE(trans2->GetLoadTimingInfo(&load_timing_info2)); |
| 5311 TestLoadTimingReused(load_timing_info2); | 5304 TestLoadTimingReused(load_timing_info2); |
| 5312 | 5305 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5369 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, | 5362 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, |
| 5370 arraysize(spdy_writes)); | 5363 arraysize(spdy_writes)); |
| 5371 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); | 5364 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
| 5372 | 5365 |
| 5373 SSLSocketDataProvider ssl(ASYNC, OK); | 5366 SSLSocketDataProvider ssl(ASYNC, OK); |
| 5374 ssl.next_proto = kProtoHTTP2; | 5367 ssl.next_proto = kProtoHTTP2; |
| 5375 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 5368 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 5376 | 5369 |
| 5377 TestCompletionCallback callback; | 5370 TestCompletionCallback callback; |
| 5378 | 5371 |
| 5379 std::unique_ptr<HttpNetworkTransaction> trans( | 5372 auto trans = |
| 5380 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 5373 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 5381 int rv = trans->Start(&request1, callback.callback(), NetLogWithSource()); | 5374 int rv = trans->Start(&request1, callback.callback(), NetLogWithSource()); |
| 5382 EXPECT_THAT(callback.GetResult(rv), IsOk()); | 5375 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 5383 | 5376 |
| 5384 LoadTimingInfo load_timing_info; | 5377 LoadTimingInfo load_timing_info; |
| 5385 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); | 5378 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); |
| 5386 TestLoadTimingNotReused(load_timing_info, | 5379 TestLoadTimingNotReused(load_timing_info, |
| 5387 CONNECT_TIMING_HAS_CONNECT_TIMES_ONLY); | 5380 CONNECT_TIMING_HAS_CONNECT_TIMES_ONLY); |
| 5388 | 5381 |
| 5389 const HttpResponseInfo* response = trans->GetResponseInfo(); | 5382 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 5390 ASSERT_TRUE(response); | 5383 ASSERT_TRUE(response); |
| (...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6221 TEST_F(HttpNetworkTransactionTest, DontRecycleTransportSocketForSSLTunnel) { | 6214 TEST_F(HttpNetworkTransactionTest, DontRecycleTransportSocketForSSLTunnel) { |
| 6222 HttpRequestInfo request; | 6215 HttpRequestInfo request; |
| 6223 request.method = "GET"; | 6216 request.method = "GET"; |
| 6224 request.url = GURL("https://www.example.org/"); | 6217 request.url = GURL("https://www.example.org/"); |
| 6225 | 6218 |
| 6226 // Configure against proxy server "myproxy:70". | 6219 // Configure against proxy server "myproxy:70". |
| 6227 session_deps_.proxy_service = ProxyService::CreateFixed("myproxy:70"); | 6220 session_deps_.proxy_service = ProxyService::CreateFixed("myproxy:70"); |
| 6228 | 6221 |
| 6229 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 6222 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 6230 | 6223 |
| 6231 std::unique_ptr<HttpNetworkTransaction> trans( | 6224 auto trans = |
| 6232 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 6225 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 6233 | 6226 |
| 6234 // Since we have proxy, should try to establish tunnel. | 6227 // Since we have proxy, should try to establish tunnel. |
| 6235 MockWrite data_writes1[] = { | 6228 MockWrite data_writes1[] = { |
| 6236 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n" | 6229 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n" |
| 6237 "Host: www.example.org:443\r\n" | 6230 "Host: www.example.org:443\r\n" |
| 6238 "Proxy-Connection: keep-alive\r\n\r\n"), | 6231 "Proxy-Connection: keep-alive\r\n\r\n"), |
| 6239 }; | 6232 }; |
| 6240 | 6233 |
| 6241 // The proxy responds to the connect with a 404, using a persistent | 6234 // The proxy responds to the connect with a 404, using a persistent |
| 6242 // connection. Usually a proxy would return 501 (not implemented), | 6235 // connection. Usually a proxy would return 501 (not implemented), |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6413 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 6406 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 6414 data_writes, arraysize(data_writes)); | 6407 data_writes, arraysize(data_writes)); |
| 6415 StaticSocketDataProvider data2(data_reads, arraysize(data_reads), | 6408 StaticSocketDataProvider data2(data_reads, arraysize(data_reads), |
| 6416 data_writes, arraysize(data_writes)); | 6409 data_writes, arraysize(data_writes)); |
| 6417 session_deps_.socket_factory->AddSocketDataProvider(&data); | 6410 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 6418 session_deps_.socket_factory->AddSocketDataProvider(&data2); | 6411 session_deps_.socket_factory->AddSocketDataProvider(&data2); |
| 6419 | 6412 |
| 6420 TestCompletionCallback callback; | 6413 TestCompletionCallback callback; |
| 6421 | 6414 |
| 6422 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 6415 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 6423 std::unique_ptr<HttpNetworkTransaction> trans( | 6416 auto trans = |
| 6424 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 6417 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 6425 | 6418 |
| 6426 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 6419 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 6427 | 6420 |
| 6428 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 6421 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 6429 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 6422 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 6430 | 6423 |
| 6431 const HttpResponseInfo* response = trans->GetResponseInfo(); | 6424 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 6432 ASSERT_TRUE(response); | 6425 ASSERT_TRUE(response); |
| 6433 ASSERT_TRUE(response->headers); | 6426 ASSERT_TRUE(response->headers); |
| 6434 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 6427 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 6435 | 6428 |
| 6436 EXPECT_EQ(0, GetIdleSocketCountInTransportSocketPool(session.get())); | 6429 EXPECT_EQ(0, GetIdleSocketCountInTransportSocketPool(session.get())); |
| 6437 | 6430 |
| 6438 std::string response_data; | 6431 std::string response_data; |
| 6439 rv = ReadTransaction(trans.get(), &response_data); | 6432 rv = ReadTransaction(trans.get(), &response_data); |
| 6440 EXPECT_THAT(rv, IsOk()); | 6433 EXPECT_THAT(rv, IsOk()); |
| 6441 EXPECT_EQ("hello world", response_data); | 6434 EXPECT_EQ("hello world", response_data); |
| 6442 | 6435 |
| 6443 // Empty the current queue. This is necessary because idle sockets are | 6436 // Empty the current queue. This is necessary because idle sockets are |
| 6444 // added to the connection pool asynchronously with a PostTask. | 6437 // added to the connection pool asynchronously with a PostTask. |
| 6445 base::RunLoop().RunUntilIdle(); | 6438 base::RunLoop().RunUntilIdle(); |
| 6446 | 6439 |
| 6447 // We now check to make sure the socket was added back to the pool. | 6440 // We now check to make sure the socket was added back to the pool. |
| 6448 EXPECT_EQ(1, GetIdleSocketCountInSSLSocketPool(session.get())); | 6441 EXPECT_EQ(1, GetIdleSocketCountInSSLSocketPool(session.get())); |
| 6449 | 6442 |
| 6450 // Now start the second transaction, which should reuse the previous socket. | 6443 // Now start the second transaction, which should reuse the previous socket. |
| 6451 | 6444 |
| 6452 trans.reset(new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 6445 trans = |
| 6446 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 6453 | 6447 |
| 6454 rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 6448 rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 6455 | 6449 |
| 6456 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 6450 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 6457 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 6451 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 6458 | 6452 |
| 6459 response = trans->GetResponseInfo(); | 6453 response = trans->GetResponseInfo(); |
| 6460 ASSERT_TRUE(response); | 6454 ASSERT_TRUE(response); |
| 6461 ASSERT_TRUE(response->headers); | 6455 ASSERT_TRUE(response->headers); |
| 6462 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 6456 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| (...skipping 1614 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8077 // Negotiate SPDY to the proxy | 8071 // Negotiate SPDY to the proxy |
| 8078 SSLSocketDataProvider proxy(ASYNC, OK); | 8072 SSLSocketDataProvider proxy(ASYNC, OK); |
| 8079 proxy.next_proto = kProtoHTTP2; | 8073 proxy.next_proto = kProtoHTTP2; |
| 8080 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); | 8074 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); |
| 8081 // Vanilla SSL to the server | 8075 // Vanilla SSL to the server |
| 8082 SSLSocketDataProvider server(ASYNC, OK); | 8076 SSLSocketDataProvider server(ASYNC, OK); |
| 8083 session_deps_.socket_factory->AddSSLSocketDataProvider(&server); | 8077 session_deps_.socket_factory->AddSSLSocketDataProvider(&server); |
| 8084 | 8078 |
| 8085 TestCompletionCallback callback1; | 8079 TestCompletionCallback callback1; |
| 8086 | 8080 |
| 8087 std::unique_ptr<HttpNetworkTransaction> trans( | 8081 auto trans = |
| 8088 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 8082 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 8089 | 8083 |
| 8090 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 8084 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
| 8091 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 8085 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 8092 | 8086 |
| 8093 rv = callback1.WaitForResult(); | 8087 rv = callback1.WaitForResult(); |
| 8094 EXPECT_THAT(rv, IsOk()); | 8088 EXPECT_THAT(rv, IsOk()); |
| 8095 TestNetLogEntry::List entries; | 8089 TestNetLogEntry::List entries; |
| 8096 log.GetEntries(&entries); | 8090 log.GetEntries(&entries); |
| 8097 size_t pos = ExpectLogContainsSomewhere( | 8091 size_t pos = ExpectLogContainsSomewhere( |
| 8098 entries, 0, NetLogEventType::HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, | 8092 entries, 0, NetLogEventType::HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8136 CONNECT_TIMING_HAS_SSL_TIMES); | 8130 CONNECT_TIMING_HAS_SSL_TIMES); |
| 8137 | 8131 |
| 8138 trans.reset(); | 8132 trans.reset(); |
| 8139 session->CloseAllConnections(); | 8133 session->CloseAllConnections(); |
| 8140 } | 8134 } |
| 8141 | 8135 |
| 8142 // Test that an explicitly trusted SPDY proxy can push a resource from an | 8136 // Test that an explicitly trusted SPDY proxy can push a resource from an |
| 8143 // origin that is different from that of its associated resource. | 8137 // origin that is different from that of its associated resource. |
| 8144 TEST_F(HttpNetworkTransactionTest, CrossOriginSPDYProxyPush) { | 8138 TEST_F(HttpNetworkTransactionTest, CrossOriginSPDYProxyPush) { |
| 8145 // Configure the proxy delegate to allow cross-origin SPDY pushes. | 8139 // Configure the proxy delegate to allow cross-origin SPDY pushes. |
| 8146 std::unique_ptr<TestProxyDelegate> proxy_delegate(new TestProxyDelegate()); | 8140 auto proxy_delegate = base::MakeUnique<TestProxyDelegate>(); |
| 8147 proxy_delegate->set_trusted_spdy_proxy(net::ProxyServer::FromURI( | 8141 proxy_delegate->set_trusted_spdy_proxy(net::ProxyServer::FromURI( |
| 8148 "https://myproxy:443", net::ProxyServer::SCHEME_HTTP)); | 8142 "https://myproxy:443", net::ProxyServer::SCHEME_HTTP)); |
| 8149 HttpRequestInfo request; | 8143 HttpRequestInfo request; |
| 8150 HttpRequestInfo push_request; | 8144 HttpRequestInfo push_request; |
| 8151 | 8145 |
| 8152 request.method = "GET"; | 8146 request.method = "GET"; |
| 8153 request.url = GURL("http://www.example.org/"); | 8147 request.url = GURL("http://www.example.org/"); |
| 8154 push_request.method = "GET"; | 8148 push_request.method = "GET"; |
| 8155 push_request.url = GURL("http://www.another-origin.com/foo.dat"); | 8149 push_request.url = GURL("http://www.another-origin.com/foo.dat"); |
| 8156 | 8150 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8194 }; | 8188 }; |
| 8195 | 8189 |
| 8196 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, | 8190 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, |
| 8197 arraysize(spdy_writes)); | 8191 arraysize(spdy_writes)); |
| 8198 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); | 8192 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
| 8199 // Negotiate SPDY to the proxy | 8193 // Negotiate SPDY to the proxy |
| 8200 SSLSocketDataProvider proxy(ASYNC, OK); | 8194 SSLSocketDataProvider proxy(ASYNC, OK); |
| 8201 proxy.next_proto = kProtoHTTP2; | 8195 proxy.next_proto = kProtoHTTP2; |
| 8202 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); | 8196 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); |
| 8203 | 8197 |
| 8204 std::unique_ptr<HttpNetworkTransaction> trans( | 8198 auto trans = |
| 8205 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 8199 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 8206 TestCompletionCallback callback; | 8200 TestCompletionCallback callback; |
| 8207 int rv = trans->Start(&request, callback.callback(), log.bound()); | 8201 int rv = trans->Start(&request, callback.callback(), log.bound()); |
| 8208 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 8202 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 8209 | 8203 |
| 8210 rv = callback.WaitForResult(); | 8204 rv = callback.WaitForResult(); |
| 8211 EXPECT_THAT(rv, IsOk()); | 8205 EXPECT_THAT(rv, IsOk()); |
| 8212 const HttpResponseInfo* response = trans->GetResponseInfo(); | 8206 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 8213 | 8207 |
| 8214 std::unique_ptr<HttpNetworkTransaction> push_trans( | 8208 auto push_trans = |
| 8215 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 8209 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 8216 rv = push_trans->Start(&push_request, callback.callback(), log.bound()); | 8210 rv = push_trans->Start(&push_request, callback.callback(), log.bound()); |
| 8217 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 8211 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 8218 | 8212 |
| 8219 rv = callback.WaitForResult(); | 8213 rv = callback.WaitForResult(); |
| 8220 EXPECT_THAT(rv, IsOk()); | 8214 EXPECT_THAT(rv, IsOk()); |
| 8221 const HttpResponseInfo* push_response = push_trans->GetResponseInfo(); | 8215 const HttpResponseInfo* push_response = push_trans->GetResponseInfo(); |
| 8222 | 8216 |
| 8223 ASSERT_TRUE(response); | 8217 ASSERT_TRUE(response); |
| 8224 EXPECT_TRUE(response->headers->IsKeepAlive()); | 8218 EXPECT_TRUE(response->headers->IsKeepAlive()); |
| 8225 | 8219 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 8253 push_load_timing_info.socket_log_id); | 8247 push_load_timing_info.socket_log_id); |
| 8254 | 8248 |
| 8255 trans.reset(); | 8249 trans.reset(); |
| 8256 push_trans.reset(); | 8250 push_trans.reset(); |
| 8257 session->CloseAllConnections(); | 8251 session->CloseAllConnections(); |
| 8258 } | 8252 } |
| 8259 | 8253 |
| 8260 // Test that an explicitly trusted SPDY proxy cannot push HTTPS content. | 8254 // Test that an explicitly trusted SPDY proxy cannot push HTTPS content. |
| 8261 TEST_F(HttpNetworkTransactionTest, CrossOriginProxyPushCorrectness) { | 8255 TEST_F(HttpNetworkTransactionTest, CrossOriginProxyPushCorrectness) { |
| 8262 // Configure the proxy delegate to allow cross-origin SPDY pushes. | 8256 // Configure the proxy delegate to allow cross-origin SPDY pushes. |
| 8263 std::unique_ptr<TestProxyDelegate> proxy_delegate(new TestProxyDelegate()); | 8257 auto proxy_delegate = base::MakeUnique<TestProxyDelegate>(); |
| 8264 proxy_delegate->set_trusted_spdy_proxy(net::ProxyServer::FromURI( | 8258 proxy_delegate->set_trusted_spdy_proxy(net::ProxyServer::FromURI( |
| 8265 "https://myproxy:443", net::ProxyServer::SCHEME_HTTP)); | 8259 "https://myproxy:443", net::ProxyServer::SCHEME_HTTP)); |
| 8266 HttpRequestInfo request; | 8260 HttpRequestInfo request; |
| 8267 | 8261 |
| 8268 request.method = "GET"; | 8262 request.method = "GET"; |
| 8269 request.url = GURL("http://www.example.org/"); | 8263 request.url = GURL("http://www.example.org/"); |
| 8270 | 8264 |
| 8271 session_deps_.proxy_service = | 8265 session_deps_.proxy_service = |
| 8272 ProxyService::CreateFixed("https://myproxy:443"); | 8266 ProxyService::CreateFixed("https://myproxy:443"); |
| 8273 BoundTestNetLog log; | 8267 BoundTestNetLog log; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 8304 }; | 8298 }; |
| 8305 | 8299 |
| 8306 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, | 8300 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, |
| 8307 arraysize(spdy_writes)); | 8301 arraysize(spdy_writes)); |
| 8308 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); | 8302 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
| 8309 // Negotiate SPDY to the proxy | 8303 // Negotiate SPDY to the proxy |
| 8310 SSLSocketDataProvider proxy(ASYNC, OK); | 8304 SSLSocketDataProvider proxy(ASYNC, OK); |
| 8311 proxy.next_proto = kProtoHTTP2; | 8305 proxy.next_proto = kProtoHTTP2; |
| 8312 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); | 8306 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); |
| 8313 | 8307 |
| 8314 std::unique_ptr<HttpNetworkTransaction> trans( | 8308 auto trans = |
| 8315 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 8309 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 8316 TestCompletionCallback callback; | 8310 TestCompletionCallback callback; |
| 8317 int rv = trans->Start(&request, callback.callback(), log.bound()); | 8311 int rv = trans->Start(&request, callback.callback(), log.bound()); |
| 8318 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 8312 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 8319 | 8313 |
| 8320 rv = callback.WaitForResult(); | 8314 rv = callback.WaitForResult(); |
| 8321 EXPECT_THAT(rv, IsOk()); | 8315 EXPECT_THAT(rv, IsOk()); |
| 8322 const HttpResponseInfo* response = trans->GetResponseInfo(); | 8316 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 8323 | 8317 |
| 8324 ASSERT_TRUE(response); | 8318 ASSERT_TRUE(response); |
| 8325 EXPECT_TRUE(response->headers->IsKeepAlive()); | 8319 EXPECT_TRUE(response->headers->IsKeepAlive()); |
| 8326 | 8320 |
| 8327 EXPECT_EQ(200, response->headers->response_code()); | 8321 EXPECT_EQ(200, response->headers->response_code()); |
| 8328 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion()); | 8322 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion()); |
| 8329 | 8323 |
| 8330 std::string response_data; | 8324 std::string response_data; |
| 8331 rv = ReadTransaction(trans.get(), &response_data); | 8325 rv = ReadTransaction(trans.get(), &response_data); |
| 8332 EXPECT_THAT(rv, IsOk()); | 8326 EXPECT_THAT(rv, IsOk()); |
| 8333 EXPECT_EQ("hello!", response_data); | 8327 EXPECT_EQ("hello!", response_data); |
| 8334 | 8328 |
| 8335 trans.reset(); | 8329 trans.reset(); |
| 8336 session->CloseAllConnections(); | 8330 session->CloseAllConnections(); |
| 8337 } | 8331 } |
| 8338 | 8332 |
| 8339 // Test that an explicitly trusted SPDY proxy can push same-origin HTTPS | 8333 // Test that an explicitly trusted SPDY proxy can push same-origin HTTPS |
| 8340 // resources. | 8334 // resources. |
| 8341 TEST_F(HttpNetworkTransactionTest, SameOriginProxyPushCorrectness) { | 8335 TEST_F(HttpNetworkTransactionTest, SameOriginProxyPushCorrectness) { |
| 8342 // Configure the proxy delegate to allow cross-origin SPDY pushes. | 8336 // Configure the proxy delegate to allow cross-origin SPDY pushes. |
| 8343 std::unique_ptr<TestProxyDelegate> proxy_delegate(new TestProxyDelegate()); | 8337 auto proxy_delegate = base::MakeUnique<TestProxyDelegate>(); |
| 8344 proxy_delegate->set_trusted_spdy_proxy( | 8338 proxy_delegate->set_trusted_spdy_proxy( |
| 8345 net::ProxyServer::FromURI("myproxy:70", net::ProxyServer::SCHEME_HTTP)); | 8339 net::ProxyServer::FromURI("myproxy:70", net::ProxyServer::SCHEME_HTTP)); |
| 8346 | 8340 |
| 8347 HttpRequestInfo request; | 8341 HttpRequestInfo request; |
| 8348 | 8342 |
| 8349 request.method = "GET"; | 8343 request.method = "GET"; |
| 8350 request.url = GURL("http://www.example.org/"); | 8344 request.url = GURL("http://www.example.org/"); |
| 8351 | 8345 |
| 8352 // Configure against https proxy server "myproxy:70". | 8346 // Configure against https proxy server "myproxy:70". |
| 8353 session_deps_.proxy_service = ProxyService::CreateFixed("https://myproxy:70"); | 8347 session_deps_.proxy_service = ProxyService::CreateFixed("https://myproxy:70"); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8391 }; | 8385 }; |
| 8392 | 8386 |
| 8393 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, | 8387 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, |
| 8394 arraysize(spdy_writes)); | 8388 arraysize(spdy_writes)); |
| 8395 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); | 8389 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
| 8396 // Negotiate SPDY to the proxy | 8390 // Negotiate SPDY to the proxy |
| 8397 SSLSocketDataProvider proxy(ASYNC, OK); | 8391 SSLSocketDataProvider proxy(ASYNC, OK); |
| 8398 proxy.next_proto = kProtoHTTP2; | 8392 proxy.next_proto = kProtoHTTP2; |
| 8399 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); | 8393 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); |
| 8400 | 8394 |
| 8401 std::unique_ptr<HttpNetworkTransaction> trans( | 8395 auto trans = |
| 8402 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 8396 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 8403 TestCompletionCallback callback; | 8397 TestCompletionCallback callback; |
| 8404 int rv = trans->Start(&request, callback.callback(), log.bound()); | 8398 int rv = trans->Start(&request, callback.callback(), log.bound()); |
| 8405 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 8399 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 8406 | 8400 |
| 8407 rv = callback.WaitForResult(); | 8401 rv = callback.WaitForResult(); |
| 8408 EXPECT_THAT(rv, IsOk()); | 8402 EXPECT_THAT(rv, IsOk()); |
| 8409 const HttpResponseInfo* response = trans->GetResponseInfo(); | 8403 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 8410 | 8404 |
| 8411 ASSERT_TRUE(response); | 8405 ASSERT_TRUE(response); |
| 8412 EXPECT_TRUE(response->headers->IsKeepAlive()); | 8406 EXPECT_TRUE(response->headers->IsKeepAlive()); |
| (...skipping 876 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9289 }; | 9283 }; |
| 9290 | 9284 |
| 9291 for (size_t i = 0; i < arraysize(tests); ++i) { | 9285 for (size_t i = 0; i < arraysize(tests); ++i) { |
| 9292 session_deps_.proxy_service = | 9286 session_deps_.proxy_service = |
| 9293 ProxyService::CreateFixed(tests[i].proxy_server); | 9287 ProxyService::CreateFixed(tests[i].proxy_server); |
| 9294 std::unique_ptr<HttpNetworkSession> session( | 9288 std::unique_ptr<HttpNetworkSession> session( |
| 9295 SetupSessionForGroupNameTests(&session_deps_)); | 9289 SetupSessionForGroupNameTests(&session_deps_)); |
| 9296 | 9290 |
| 9297 HttpNetworkSessionPeer peer(session.get()); | 9291 HttpNetworkSessionPeer peer(session.get()); |
| 9298 CaptureGroupNameTransportSocketPool* transport_conn_pool = | 9292 CaptureGroupNameTransportSocketPool* transport_conn_pool = |
| 9299 new CaptureGroupNameTransportSocketPool(NULL, NULL); | 9293 new CaptureGroupNameTransportSocketPool(nullptr, nullptr); |
| 9300 CaptureGroupNameSSLSocketPool* ssl_conn_pool = | 9294 CaptureGroupNameSSLSocketPool* ssl_conn_pool = |
| 9301 new CaptureGroupNameSSLSocketPool(NULL, NULL); | 9295 new CaptureGroupNameSSLSocketPool(nullptr, nullptr); |
| 9302 std::unique_ptr<MockClientSocketPoolManager> mock_pool_manager( | 9296 auto mock_pool_manager = base::MakeUnique<MockClientSocketPoolManager>(); |
| 9303 new MockClientSocketPoolManager); | |
| 9304 mock_pool_manager->SetTransportSocketPool(transport_conn_pool); | 9297 mock_pool_manager->SetTransportSocketPool(transport_conn_pool); |
| 9305 mock_pool_manager->SetSSLSocketPool(ssl_conn_pool); | 9298 mock_pool_manager->SetSSLSocketPool(ssl_conn_pool); |
| 9306 peer.SetClientSocketPoolManager(std::move(mock_pool_manager)); | 9299 peer.SetClientSocketPoolManager(std::move(mock_pool_manager)); |
| 9307 | 9300 |
| 9308 EXPECT_EQ(ERR_IO_PENDING, | 9301 EXPECT_EQ(ERR_IO_PENDING, |
| 9309 GroupNameTransactionHelper(tests[i].url, session.get())); | 9302 GroupNameTransactionHelper(tests[i].url, session.get())); |
| 9310 if (tests[i].ssl) | 9303 if (tests[i].ssl) |
| 9311 EXPECT_EQ(tests[i].expected_group_name, | 9304 EXPECT_EQ(tests[i].expected_group_name, |
| 9312 ssl_conn_pool->last_group_name_received()); | 9305 ssl_conn_pool->last_group_name_received()); |
| 9313 else | 9306 else |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9354 std::unique_ptr<HttpNetworkSession> session( | 9347 std::unique_ptr<HttpNetworkSession> session( |
| 9355 SetupSessionForGroupNameTests(&session_deps_)); | 9348 SetupSessionForGroupNameTests(&session_deps_)); |
| 9356 | 9349 |
| 9357 HttpNetworkSessionPeer peer(session.get()); | 9350 HttpNetworkSessionPeer peer(session.get()); |
| 9358 | 9351 |
| 9359 HostPortPair proxy_host("http_proxy", 80); | 9352 HostPortPair proxy_host("http_proxy", 80); |
| 9360 CaptureGroupNameHttpProxySocketPool* http_proxy_pool = | 9353 CaptureGroupNameHttpProxySocketPool* http_proxy_pool = |
| 9361 new CaptureGroupNameHttpProxySocketPool(NULL, NULL); | 9354 new CaptureGroupNameHttpProxySocketPool(NULL, NULL); |
| 9362 CaptureGroupNameSSLSocketPool* ssl_conn_pool = | 9355 CaptureGroupNameSSLSocketPool* ssl_conn_pool = |
| 9363 new CaptureGroupNameSSLSocketPool(NULL, NULL); | 9356 new CaptureGroupNameSSLSocketPool(NULL, NULL); |
| 9364 | 9357 auto mock_pool_manager = base::MakeUnique<MockClientSocketPoolManager>(); |
| 9365 std::unique_ptr<MockClientSocketPoolManager> mock_pool_manager( | |
| 9366 new MockClientSocketPoolManager); | |
| 9367 mock_pool_manager->SetSocketPoolForHTTPProxy( | 9358 mock_pool_manager->SetSocketPoolForHTTPProxy( |
| 9368 proxy_host, base::WrapUnique(http_proxy_pool)); | 9359 proxy_host, base::WrapUnique(http_proxy_pool)); |
| 9369 mock_pool_manager->SetSocketPoolForSSLWithProxy( | 9360 mock_pool_manager->SetSocketPoolForSSLWithProxy( |
| 9370 proxy_host, base::WrapUnique(ssl_conn_pool)); | 9361 proxy_host, base::WrapUnique(ssl_conn_pool)); |
| 9371 peer.SetClientSocketPoolManager(std::move(mock_pool_manager)); | 9362 peer.SetClientSocketPoolManager(std::move(mock_pool_manager)); |
| 9372 | 9363 |
| 9373 EXPECT_EQ(ERR_IO_PENDING, | 9364 EXPECT_EQ(ERR_IO_PENDING, |
| 9374 GroupNameTransactionHelper(tests[i].url, session.get())); | 9365 GroupNameTransactionHelper(tests[i].url, session.get())); |
| 9375 if (tests[i].ssl) | 9366 if (tests[i].ssl) |
| 9376 EXPECT_EQ(tests[i].expected_group_name, | 9367 EXPECT_EQ(tests[i].expected_group_name, |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9424 std::unique_ptr<HttpNetworkSession> session( | 9415 std::unique_ptr<HttpNetworkSession> session( |
| 9425 SetupSessionForGroupNameTests(&session_deps_)); | 9416 SetupSessionForGroupNameTests(&session_deps_)); |
| 9426 | 9417 |
| 9427 HttpNetworkSessionPeer peer(session.get()); | 9418 HttpNetworkSessionPeer peer(session.get()); |
| 9428 | 9419 |
| 9429 HostPortPair proxy_host("socks_proxy", 1080); | 9420 HostPortPair proxy_host("socks_proxy", 1080); |
| 9430 CaptureGroupNameSOCKSSocketPool* socks_conn_pool = | 9421 CaptureGroupNameSOCKSSocketPool* socks_conn_pool = |
| 9431 new CaptureGroupNameSOCKSSocketPool(NULL, NULL); | 9422 new CaptureGroupNameSOCKSSocketPool(NULL, NULL); |
| 9432 CaptureGroupNameSSLSocketPool* ssl_conn_pool = | 9423 CaptureGroupNameSSLSocketPool* ssl_conn_pool = |
| 9433 new CaptureGroupNameSSLSocketPool(NULL, NULL); | 9424 new CaptureGroupNameSSLSocketPool(NULL, NULL); |
| 9434 | 9425 auto mock_pool_manager = base::MakeUnique<MockClientSocketPoolManager>(); |
| 9435 std::unique_ptr<MockClientSocketPoolManager> mock_pool_manager( | |
| 9436 new MockClientSocketPoolManager); | |
| 9437 mock_pool_manager->SetSocketPoolForSOCKSProxy( | 9426 mock_pool_manager->SetSocketPoolForSOCKSProxy( |
| 9438 proxy_host, base::WrapUnique(socks_conn_pool)); | 9427 proxy_host, base::WrapUnique(socks_conn_pool)); |
| 9439 mock_pool_manager->SetSocketPoolForSSLWithProxy( | 9428 mock_pool_manager->SetSocketPoolForSSLWithProxy( |
| 9440 proxy_host, base::WrapUnique(ssl_conn_pool)); | 9429 proxy_host, base::WrapUnique(ssl_conn_pool)); |
| 9441 peer.SetClientSocketPoolManager(std::move(mock_pool_manager)); | 9430 peer.SetClientSocketPoolManager(std::move(mock_pool_manager)); |
| 9442 | 9431 |
| 9443 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 9432 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 9444 | 9433 |
| 9445 EXPECT_EQ(ERR_IO_PENDING, | 9434 EXPECT_EQ(ERR_IO_PENDING, |
| 9446 GroupNameTransactionHelper(tests[i].url, session.get())); | 9435 GroupNameTransactionHelper(tests[i].url, session.get())); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9481 // bypass the cache, the DNS cache is not used. | 9470 // bypass the cache, the DNS cache is not used. |
| 9482 void HttpNetworkTransactionTest::BypassHostCacheOnRefreshHelper( | 9471 void HttpNetworkTransactionTest::BypassHostCacheOnRefreshHelper( |
| 9483 int load_flags) { | 9472 int load_flags) { |
| 9484 // Issue a request, asking to bypass the cache(s). | 9473 // Issue a request, asking to bypass the cache(s). |
| 9485 HttpRequestInfo request_info; | 9474 HttpRequestInfo request_info; |
| 9486 request_info.method = "GET"; | 9475 request_info.method = "GET"; |
| 9487 request_info.load_flags = load_flags; | 9476 request_info.load_flags = load_flags; |
| 9488 request_info.url = GURL("http://www.example.org/"); | 9477 request_info.url = GURL("http://www.example.org/"); |
| 9489 | 9478 |
| 9490 // Select a host resolver that does caching. | 9479 // Select a host resolver that does caching. |
| 9491 session_deps_.host_resolver.reset(new MockCachingHostResolver); | 9480 session_deps_.host_resolver = base::MakeUnique<MockCachingHostResolver>(); |
| 9492 | 9481 |
| 9493 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 9482 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 9494 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 9483 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 9495 | 9484 |
| 9496 // Warm up the host cache so it has an entry for "www.example.org". | 9485 // Warm up the host cache so it has an entry for "www.example.org". |
| 9497 AddressList addrlist; | 9486 AddressList addrlist; |
| 9498 TestCompletionCallback callback; | 9487 TestCompletionCallback callback; |
| 9499 std::unique_ptr<HostResolver::Request> request1; | 9488 std::unique_ptr<HostResolver::Request> request1; |
| 9500 int rv = session_deps_.host_resolver->Resolve( | 9489 int rv = session_deps_.host_resolver->Resolve( |
| 9501 HostResolver::RequestInfo(HostPortPair("www.example.org", 80)), | 9490 HostResolver::RequestInfo(HostPortPair("www.example.org", 80)), |
| (...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9876 std::vector<std::unique_ptr<UploadElementReader>> element_readers; | 9865 std::vector<std::unique_ptr<UploadElementReader>> element_readers; |
| 9877 element_readers.push_back(base::WrapUnique(fake_reader)); | 9866 element_readers.push_back(base::WrapUnique(fake_reader)); |
| 9878 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); | 9867 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); |
| 9879 | 9868 |
| 9880 HttpRequestInfo request; | 9869 HttpRequestInfo request; |
| 9881 request.method = "POST"; | 9870 request.method = "POST"; |
| 9882 request.url = GURL("http://www.example.org/upload"); | 9871 request.url = GURL("http://www.example.org/upload"); |
| 9883 request.upload_data_stream = &upload_data_stream; | 9872 request.upload_data_stream = &upload_data_stream; |
| 9884 | 9873 |
| 9885 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 9874 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 9886 std::unique_ptr<HttpNetworkTransaction> trans( | 9875 auto trans = |
| 9887 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 9876 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 9888 | 9877 |
| 9889 StaticSocketDataProvider data; | 9878 StaticSocketDataProvider data; |
| 9890 session_deps_.socket_factory->AddSocketDataProvider(&data); | 9879 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 9891 | 9880 |
| 9892 TestCompletionCallback callback; | 9881 TestCompletionCallback callback; |
| 9893 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 9882 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 9894 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 9883 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 9895 base::RunLoop().RunUntilIdle(); | 9884 base::RunLoop().RunUntilIdle(); |
| 9896 | 9885 |
| 9897 // Transaction is pending on request body initialization. | 9886 // Transaction is pending on request body initialization. |
| (...skipping 981 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10879 StaticSocketDataProvider hanging_non_alternate_protocol_socket( | 10868 StaticSocketDataProvider hanging_non_alternate_protocol_socket( |
| 10880 NULL, 0, NULL, 0); | 10869 NULL, 0, NULL, 0); |
| 10881 hanging_non_alternate_protocol_socket.set_connect_data( | 10870 hanging_non_alternate_protocol_socket.set_connect_data( |
| 10882 never_finishing_connect); | 10871 never_finishing_connect); |
| 10883 session_deps_.socket_factory->AddSocketDataProvider( | 10872 session_deps_.socket_factory->AddSocketDataProvider( |
| 10884 &hanging_non_alternate_protocol_socket); | 10873 &hanging_non_alternate_protocol_socket); |
| 10885 | 10874 |
| 10886 TestCompletionCallback callback; | 10875 TestCompletionCallback callback; |
| 10887 | 10876 |
| 10888 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10877 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10889 std::unique_ptr<HttpNetworkTransaction> trans( | 10878 auto trans = |
| 10890 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10879 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 10891 | 10880 |
| 10892 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 10881 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 10893 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10882 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 10894 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10883 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 10895 | 10884 |
| 10896 const HttpResponseInfo* response = trans->GetResponseInfo(); | 10885 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 10897 ASSERT_TRUE(response); | 10886 ASSERT_TRUE(response); |
| 10898 ASSERT_TRUE(response->headers); | 10887 ASSERT_TRUE(response->headers); |
| 10899 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 10888 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 10900 | 10889 |
| 10901 std::string response_data; | 10890 std::string response_data; |
| 10902 ASSERT_THAT(ReadTransaction(trans.get(), &response_data), IsOk()); | 10891 ASSERT_THAT(ReadTransaction(trans.get(), &response_data), IsOk()); |
| 10903 EXPECT_EQ("hello world", response_data); | 10892 EXPECT_EQ("hello world", response_data); |
| 10904 | 10893 |
| 10905 trans.reset(new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10894 trans = |
| 10895 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 10906 | 10896 |
| 10907 rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 10897 rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 10908 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10898 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 10909 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10899 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 10910 | 10900 |
| 10911 response = trans->GetResponseInfo(); | 10901 response = trans->GetResponseInfo(); |
| 10912 ASSERT_TRUE(response); | 10902 ASSERT_TRUE(response); |
| 10913 ASSERT_TRUE(response->headers); | 10903 ASSERT_TRUE(response->headers); |
| 10914 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine()); | 10904 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine()); |
| 10915 EXPECT_TRUE(response->was_fetched_via_spdy); | 10905 EXPECT_TRUE(response->was_fetched_via_spdy); |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11062 | 11052 |
| 11063 // 2nd request is just a copy of the first one, over HTTP/1.1 again. | 11053 // 2nd request is just a copy of the first one, over HTTP/1.1 again. |
| 11064 StaticSocketDataProvider second_transaction(data_reads, arraysize(data_reads), | 11054 StaticSocketDataProvider second_transaction(data_reads, arraysize(data_reads), |
| 11065 NULL, 0); | 11055 NULL, 0); |
| 11066 session_deps_.socket_factory->AddSocketDataProvider(&second_transaction); | 11056 session_deps_.socket_factory->AddSocketDataProvider(&second_transaction); |
| 11067 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 11057 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 11068 | 11058 |
| 11069 TestCompletionCallback callback; | 11059 TestCompletionCallback callback; |
| 11070 | 11060 |
| 11071 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 11061 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 11072 std::unique_ptr<HttpNetworkTransaction> trans( | 11062 auto trans = |
| 11073 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 11063 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 11074 | 11064 |
| 11075 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 11065 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 11076 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 11066 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 11077 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 11067 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 11078 | 11068 |
| 11079 const HttpResponseInfo* response = trans->GetResponseInfo(); | 11069 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 11080 ASSERT_TRUE(response); | 11070 ASSERT_TRUE(response); |
| 11081 ASSERT_TRUE(response->headers); | 11071 ASSERT_TRUE(response->headers); |
| 11082 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 11072 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 11083 | 11073 |
| 11084 std::string response_data; | 11074 std::string response_data; |
| 11085 ASSERT_THAT(ReadTransaction(trans.get(), &response_data), IsOk()); | 11075 ASSERT_THAT(ReadTransaction(trans.get(), &response_data), IsOk()); |
| 11086 EXPECT_EQ("hello world", response_data); | 11076 EXPECT_EQ("hello world", response_data); |
| 11087 | 11077 |
| 11088 trans.reset(new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 11078 trans = |
| 11079 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 11089 | 11080 |
| 11090 rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 11081 rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 11091 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 11082 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 11092 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 11083 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 11093 | 11084 |
| 11094 response = trans->GetResponseInfo(); | 11085 response = trans->GetResponseInfo(); |
| 11095 ASSERT_TRUE(response); | 11086 ASSERT_TRUE(response); |
| 11096 ASSERT_TRUE(response->headers); | 11087 ASSERT_TRUE(response->headers); |
| 11097 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 11088 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 11098 EXPECT_FALSE(response->was_fetched_via_spdy); | 11089 EXPECT_FALSE(response->was_fetched_via_spdy); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11130 class CapturingProxyResolverFactory : public ProxyResolverFactory { | 11121 class CapturingProxyResolverFactory : public ProxyResolverFactory { |
| 11131 public: | 11122 public: |
| 11132 explicit CapturingProxyResolverFactory(CapturingProxyResolver* resolver) | 11123 explicit CapturingProxyResolverFactory(CapturingProxyResolver* resolver) |
| 11133 : ProxyResolverFactory(false), resolver_(resolver) {} | 11124 : ProxyResolverFactory(false), resolver_(resolver) {} |
| 11134 | 11125 |
| 11135 int CreateProxyResolver( | 11126 int CreateProxyResolver( |
| 11136 const scoped_refptr<ProxyResolverScriptData>& pac_script, | 11127 const scoped_refptr<ProxyResolverScriptData>& pac_script, |
| 11137 std::unique_ptr<ProxyResolver>* resolver, | 11128 std::unique_ptr<ProxyResolver>* resolver, |
| 11138 const net::CompletionCallback& callback, | 11129 const net::CompletionCallback& callback, |
| 11139 std::unique_ptr<Request>* request) override { | 11130 std::unique_ptr<Request>* request) override { |
| 11140 resolver->reset(new ForwardingProxyResolver(resolver_)); | 11131 *resolver = base::MakeUnique<ForwardingProxyResolver>(resolver_); |
| 11141 return OK; | 11132 return OK; |
| 11142 } | 11133 } |
| 11143 | 11134 |
| 11144 private: | 11135 private: |
| 11145 ProxyResolver* resolver_; | 11136 ProxyResolver* resolver_; |
| 11146 }; | 11137 }; |
| 11147 | 11138 |
| 11148 // Test that proxy is resolved using the origin url, | 11139 // Test that proxy is resolved using the origin url, |
| 11149 // regardless of the alternative server. | 11140 // regardless of the alternative server. |
| 11150 TEST_F(HttpNetworkTransactionTest, UseOriginNotAlternativeForProxy) { | 11141 TEST_F(HttpNetworkTransactionTest, UseOriginNotAlternativeForProxy) { |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11230 // Origin host bypasses proxy, no resolution should have happened. | 11221 // Origin host bypasses proxy, no resolution should have happened. |
| 11231 ASSERT_TRUE(capturing_proxy_resolver.resolved().empty()); | 11222 ASSERT_TRUE(capturing_proxy_resolver.resolved().empty()); |
| 11232 } | 11223 } |
| 11233 | 11224 |
| 11234 TEST_F(HttpNetworkTransactionTest, UseAlternativeServiceForTunneledNpnSpdy) { | 11225 TEST_F(HttpNetworkTransactionTest, UseAlternativeServiceForTunneledNpnSpdy) { |
| 11235 ProxyConfig proxy_config; | 11226 ProxyConfig proxy_config; |
| 11236 proxy_config.set_auto_detect(true); | 11227 proxy_config.set_auto_detect(true); |
| 11237 proxy_config.set_pac_url(GURL("http://fooproxyurl")); | 11228 proxy_config.set_pac_url(GURL("http://fooproxyurl")); |
| 11238 | 11229 |
| 11239 CapturingProxyResolver capturing_proxy_resolver; | 11230 CapturingProxyResolver capturing_proxy_resolver; |
| 11240 session_deps_.proxy_service.reset( | 11231 session_deps_.proxy_service = base::MakeUnique<ProxyService>( |
| 11241 new ProxyService(base::MakeUnique<ProxyConfigServiceFixed>(proxy_config), | 11232 base::MakeUnique<ProxyConfigServiceFixed>(proxy_config), |
| 11242 base::MakeUnique<CapturingProxyResolverFactory>( | 11233 base::MakeUnique<CapturingProxyResolverFactory>( |
| 11243 &capturing_proxy_resolver), | 11234 &capturing_proxy_resolver), |
| 11244 NULL)); | 11235 nullptr); |
| 11245 TestNetLog net_log; | 11236 TestNetLog net_log; |
| 11246 session_deps_.net_log = &net_log; | 11237 session_deps_.net_log = &net_log; |
| 11247 | 11238 |
| 11248 HttpRequestInfo request; | 11239 HttpRequestInfo request; |
| 11249 request.method = "GET"; | 11240 request.method = "GET"; |
| 11250 request.url = GURL("https://www.example.org/"); | 11241 request.url = GURL("https://www.example.org/"); |
| 11251 | 11242 |
| 11252 MockRead data_reads[] = { | 11243 MockRead data_reads[] = { |
| 11253 MockRead("HTTP/1.1 200 OK\r\n"), | 11244 MockRead("HTTP/1.1 200 OK\r\n"), |
| 11254 MockRead(kAlternativeServiceHttpHeader), | 11245 MockRead(kAlternativeServiceHttpHeader), |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11294 StaticSocketDataProvider hanging_non_alternate_protocol_socket( | 11285 StaticSocketDataProvider hanging_non_alternate_protocol_socket( |
| 11295 NULL, 0, NULL, 0); | 11286 NULL, 0, NULL, 0); |
| 11296 hanging_non_alternate_protocol_socket.set_connect_data( | 11287 hanging_non_alternate_protocol_socket.set_connect_data( |
| 11297 never_finishing_connect); | 11288 never_finishing_connect); |
| 11298 session_deps_.socket_factory->AddSocketDataProvider( | 11289 session_deps_.socket_factory->AddSocketDataProvider( |
| 11299 &hanging_non_alternate_protocol_socket); | 11290 &hanging_non_alternate_protocol_socket); |
| 11300 | 11291 |
| 11301 TestCompletionCallback callback; | 11292 TestCompletionCallback callback; |
| 11302 | 11293 |
| 11303 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 11294 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 11304 std::unique_ptr<HttpNetworkTransaction> trans( | 11295 auto trans = |
| 11305 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 11296 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 11306 | 11297 |
| 11307 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 11298 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 11308 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 11299 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 11309 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 11300 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 11310 | 11301 |
| 11311 const HttpResponseInfo* response = trans->GetResponseInfo(); | 11302 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 11312 ASSERT_TRUE(response); | 11303 ASSERT_TRUE(response); |
| 11313 ASSERT_TRUE(response->headers); | 11304 ASSERT_TRUE(response->headers); |
| 11314 EXPECT_EQ("HTTP/0.9 200 OK", response->headers->GetStatusLine()); | 11305 EXPECT_EQ("HTTP/0.9 200 OK", response->headers->GetStatusLine()); |
| 11315 EXPECT_FALSE(response->was_fetched_via_spdy); | 11306 EXPECT_FALSE(response->was_fetched_via_spdy); |
| 11316 EXPECT_TRUE(response->was_alpn_negotiated); | 11307 EXPECT_TRUE(response->was_alpn_negotiated); |
| 11317 | 11308 |
| 11318 std::string response_data; | 11309 std::string response_data; |
| 11319 ASSERT_THAT(ReadTransaction(trans.get(), &response_data), IsOk()); | 11310 ASSERT_THAT(ReadTransaction(trans.get(), &response_data), IsOk()); |
| 11320 EXPECT_EQ("hello world", response_data); | 11311 EXPECT_EQ("hello world", response_data); |
| 11321 | 11312 |
| 11322 trans.reset(new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 11313 trans = |
| 11314 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 11323 | 11315 |
| 11324 rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 11316 rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 11325 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 11317 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 11326 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 11318 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 11327 | 11319 |
| 11328 response = trans->GetResponseInfo(); | 11320 response = trans->GetResponseInfo(); |
| 11329 ASSERT_TRUE(response); | 11321 ASSERT_TRUE(response); |
| 11330 ASSERT_TRUE(response->headers); | 11322 ASSERT_TRUE(response->headers); |
| 11331 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine()); | 11323 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine()); |
| 11332 EXPECT_TRUE(response->was_fetched_via_spdy); | 11324 EXPECT_TRUE(response->was_fetched_via_spdy); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11380 }; | 11372 }; |
| 11381 | 11373 |
| 11382 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, | 11374 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, |
| 11383 arraysize(spdy_writes)); | 11375 arraysize(spdy_writes)); |
| 11384 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); | 11376 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
| 11385 | 11377 |
| 11386 TestCompletionCallback callback; | 11378 TestCompletionCallback callback; |
| 11387 | 11379 |
| 11388 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 11380 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 11389 | 11381 |
| 11390 std::unique_ptr<HttpNetworkTransaction> trans( | 11382 auto trans = |
| 11391 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 11383 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 11392 | 11384 |
| 11393 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 11385 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 11394 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 11386 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 11395 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 11387 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 11396 | 11388 |
| 11397 const HttpResponseInfo* response = trans->GetResponseInfo(); | 11389 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 11398 ASSERT_TRUE(response); | 11390 ASSERT_TRUE(response); |
| 11399 ASSERT_TRUE(response->headers); | 11391 ASSERT_TRUE(response->headers); |
| 11400 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 11392 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 11401 | 11393 |
| 11402 std::string response_data; | 11394 std::string response_data; |
| 11403 ASSERT_THAT(ReadTransaction(trans.get(), &response_data), IsOk()); | 11395 ASSERT_THAT(ReadTransaction(trans.get(), &response_data), IsOk()); |
| 11404 EXPECT_EQ("hello world", response_data); | 11396 EXPECT_EQ("hello world", response_data); |
| 11405 | 11397 |
| 11406 // Set up an initial SpdySession in the pool to reuse. | 11398 // Set up an initial SpdySession in the pool to reuse. |
| 11407 HostPortPair host_port_pair("www.example.org", 443); | 11399 HostPortPair host_port_pair("www.example.org", 443); |
| 11408 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), | 11400 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
| 11409 PRIVACY_MODE_DISABLED); | 11401 PRIVACY_MODE_DISABLED); |
| 11410 base::WeakPtr<SpdySession> spdy_session = | 11402 base::WeakPtr<SpdySession> spdy_session = |
| 11411 CreateSecureSpdySession(session.get(), key, NetLogWithSource()); | 11403 CreateSecureSpdySession(session.get(), key, NetLogWithSource()); |
| 11412 | 11404 |
| 11413 trans.reset(new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 11405 trans = |
| 11406 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 11414 | 11407 |
| 11415 rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 11408 rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 11416 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 11409 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 11417 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 11410 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 11418 | 11411 |
| 11419 response = trans->GetResponseInfo(); | 11412 response = trans->GetResponseInfo(); |
| 11420 ASSERT_TRUE(response); | 11413 ASSERT_TRUE(response); |
| 11421 ASSERT_TRUE(response->headers); | 11414 ASSERT_TRUE(response->headers); |
| 11422 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine()); | 11415 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine()); |
| 11423 EXPECT_TRUE(response->was_fetched_via_spdy); | 11416 EXPECT_TRUE(response->was_fetched_via_spdy); |
| (...skipping 889 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12313 } | 12306 } |
| 12314 | 12307 |
| 12315 // Add an SSL sequence if necessary. | 12308 // Add an SSL sequence if necessary. |
| 12316 if (round >= test_config.first_ssl_round) | 12309 if (round >= test_config.first_ssl_round) |
| 12317 session_deps_.socket_factory->AddSSLSocketDataProvider( | 12310 session_deps_.socket_factory->AddSSLSocketDataProvider( |
| 12318 &ssl_socket_data_provider); | 12311 &ssl_socket_data_provider); |
| 12319 } | 12312 } |
| 12320 | 12313 |
| 12321 std::vector<std::unique_ptr<StaticSocketDataProvider>> data_providers; | 12314 std::vector<std::unique_ptr<StaticSocketDataProvider>> data_providers; |
| 12322 for (size_t i = 0; i < mock_reads.size(); ++i) { | 12315 for (size_t i = 0; i < mock_reads.size(); ++i) { |
| 12323 data_providers.push_back(base::WrapUnique(new StaticSocketDataProvider( | 12316 data_providers.push_back(base::MakeUnique<StaticSocketDataProvider>( |
| 12324 mock_reads[i].data(), mock_reads[i].size(), mock_writes[i].data(), | 12317 mock_reads[i].data(), mock_reads[i].size(), mock_writes[i].data(), |
| 12325 mock_writes[i].size()))); | 12318 mock_writes[i].size())); |
| 12326 session_deps_.socket_factory->AddSocketDataProvider( | 12319 session_deps_.socket_factory->AddSocketDataProvider( |
| 12327 data_providers.back().get()); | 12320 data_providers.back().get()); |
| 12328 } | 12321 } |
| 12329 | 12322 |
| 12330 // Transaction must be created after DataProviders, so it's destroyed before | 12323 // Transaction must be created after DataProviders, so it's destroyed before |
| 12331 // they are as well. | 12324 // they are as well. |
| 12332 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 12325 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 12333 | 12326 |
| 12334 for (int round = 0; round < test_config.num_auth_rounds; ++round) { | 12327 for (int round = 0; round < test_config.num_auth_rounds; ++round) { |
| 12335 SCOPED_TRACE(round); | 12328 SCOPED_TRACE(round); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12393 | 12386 |
| 12394 // Use a TCP Socket Pool with only one connection per group. This is used | 12387 // Use a TCP Socket Pool with only one connection per group. This is used |
| 12395 // to validate that the TCP socket is not released to the pool between | 12388 // to validate that the TCP socket is not released to the pool between |
| 12396 // each round of multi-round authentication. | 12389 // each round of multi-round authentication. |
| 12397 HttpNetworkSessionPeer session_peer(session.get()); | 12390 HttpNetworkSessionPeer session_peer(session.get()); |
| 12398 TransportClientSocketPool* transport_pool = new TransportClientSocketPool( | 12391 TransportClientSocketPool* transport_pool = new TransportClientSocketPool( |
| 12399 50, // Max sockets for pool | 12392 50, // Max sockets for pool |
| 12400 1, // Max sockets per group | 12393 1, // Max sockets per group |
| 12401 session_deps_.host_resolver.get(), session_deps_.socket_factory.get(), | 12394 session_deps_.host_resolver.get(), session_deps_.socket_factory.get(), |
| 12402 NULL, session_deps_.net_log); | 12395 NULL, session_deps_.net_log); |
| 12403 std::unique_ptr<MockClientSocketPoolManager> mock_pool_manager( | 12396 auto mock_pool_manager = base::MakeUnique<MockClientSocketPoolManager>(); |
| 12404 new MockClientSocketPoolManager); | |
| 12405 mock_pool_manager->SetTransportSocketPool(transport_pool); | 12397 mock_pool_manager->SetTransportSocketPool(transport_pool); |
| 12406 session_peer.SetClientSocketPoolManager(std::move(mock_pool_manager)); | 12398 session_peer.SetClientSocketPoolManager(std::move(mock_pool_manager)); |
| 12407 | 12399 |
| 12408 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 12400 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 12409 TestCompletionCallback callback; | 12401 TestCompletionCallback callback; |
| 12410 | 12402 |
| 12411 const MockWrite kGet( | 12403 const MockWrite kGet( |
| 12412 "GET / HTTP/1.1\r\n" | 12404 "GET / HTTP/1.1\r\n" |
| 12413 "Host: www.example.com\r\n" | 12405 "Host: www.example.com\r\n" |
| 12414 "Connection: keep-alive\r\n\r\n"); | 12406 "Connection: keep-alive\r\n\r\n"); |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12681 MockRead(SYNCHRONOUS, "hello world"), | 12673 MockRead(SYNCHRONOUS, "hello world"), |
| 12682 MockRead(SYNCHRONOUS, OK), | 12674 MockRead(SYNCHRONOUS, OK), |
| 12683 }; | 12675 }; |
| 12684 | 12676 |
| 12685 HttpRequestInfo request; | 12677 HttpRequestInfo request; |
| 12686 request.method = "GET"; | 12678 request.method = "GET"; |
| 12687 request.url = GURL("http://www.example.org/"); | 12679 request.url = GURL("http://www.example.org/"); |
| 12688 | 12680 |
| 12689 session_deps_.host_resolver->set_synchronous_mode(true); | 12681 session_deps_.host_resolver->set_synchronous_mode(true); |
| 12690 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 12682 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 12691 std::unique_ptr<HttpNetworkTransaction> trans( | 12683 auto trans = |
| 12692 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 12684 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 12693 | 12685 |
| 12694 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 12686 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 12695 data.set_connect_data(mock_connect); | 12687 data.set_connect_data(mock_connect); |
| 12696 session_deps_.socket_factory->AddSocketDataProvider(&data); | 12688 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 12697 | 12689 |
| 12698 TestCompletionCallback callback; | 12690 TestCompletionCallback callback; |
| 12699 | 12691 |
| 12700 BoundTestNetLog log; | 12692 BoundTestNetLog log; |
| 12701 int rv = trans->Start(&request, callback.callback(), log.bound()); | 12693 int rv = trans->Start(&request, callback.callback(), log.bound()); |
| 12702 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 12694 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| (...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13430 ASSERT_FALSE(session->ssl_client_auth_cache()->Lookup( | 13422 ASSERT_FALSE(session->ssl_client_auth_cache()->Lookup( |
| 13431 HostPortPair("proxy", 70), &client_cert, &client_private_key)); | 13423 HostPortPair("proxy", 70), &client_cert, &client_private_key)); |
| 13432 ASSERT_FALSE(session->ssl_client_auth_cache()->Lookup( | 13424 ASSERT_FALSE(session->ssl_client_auth_cache()->Lookup( |
| 13433 HostPortPair("www.example.com", 443), &client_cert, | 13425 HostPortPair("www.example.com", 443), &client_cert, |
| 13434 &client_private_key)); | 13426 &client_private_key)); |
| 13435 } | 13427 } |
| 13436 } | 13428 } |
| 13437 | 13429 |
| 13438 TEST_F(HttpNetworkTransactionTest, UseIPConnectionPooling) { | 13430 TEST_F(HttpNetworkTransactionTest, UseIPConnectionPooling) { |
| 13439 // Set up a special HttpNetworkSession with a MockCachingHostResolver. | 13431 // Set up a special HttpNetworkSession with a MockCachingHostResolver. |
| 13440 session_deps_.host_resolver.reset(new MockCachingHostResolver()); | 13432 session_deps_.host_resolver = base::MakeUnique<MockCachingHostResolver>(); |
| 13441 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13433 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 13442 | 13434 |
| 13443 AddSSLSocketData(); | 13435 AddSSLSocketData(); |
| 13444 | 13436 |
| 13445 SpdySerializedFrame host1_req( | 13437 SpdySerializedFrame host1_req( |
| 13446 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); | 13438 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); |
| 13447 spdy_util_.UpdateWithStreamDestruction(1); | 13439 spdy_util_.UpdateWithStreamDestruction(1); |
| 13448 SpdySerializedFrame host2_req( | 13440 SpdySerializedFrame host2_req( |
| 13449 spdy_util_.ConstructSpdyGet("https://mail.example.com", 3, LOWEST)); | 13441 spdy_util_.ConstructSpdyGet("https://mail.example.com", 3, LOWEST)); |
| 13450 MockWrite spdy_writes[] = { | 13442 MockWrite spdy_writes[] = { |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13515 ASSERT_TRUE(response->headers); | 13507 ASSERT_TRUE(response->headers); |
| 13516 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine()); | 13508 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine()); |
| 13517 EXPECT_TRUE(response->was_fetched_via_spdy); | 13509 EXPECT_TRUE(response->was_fetched_via_spdy); |
| 13518 EXPECT_TRUE(response->was_alpn_negotiated); | 13510 EXPECT_TRUE(response->was_alpn_negotiated); |
| 13519 ASSERT_THAT(ReadTransaction(&trans2, &response_data), IsOk()); | 13511 ASSERT_THAT(ReadTransaction(&trans2, &response_data), IsOk()); |
| 13520 EXPECT_EQ("hello!", response_data); | 13512 EXPECT_EQ("hello!", response_data); |
| 13521 } | 13513 } |
| 13522 | 13514 |
| 13523 TEST_F(HttpNetworkTransactionTest, UseIPConnectionPoolingAfterResolution) { | 13515 TEST_F(HttpNetworkTransactionTest, UseIPConnectionPoolingAfterResolution) { |
| 13524 // Set up a special HttpNetworkSession with a MockCachingHostResolver. | 13516 // Set up a special HttpNetworkSession with a MockCachingHostResolver. |
| 13525 session_deps_.host_resolver.reset(new MockCachingHostResolver()); | 13517 session_deps_.host_resolver = base::MakeUnique<MockCachingHostResolver>(); |
| 13526 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13518 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 13527 | 13519 |
| 13528 AddSSLSocketData(); | 13520 AddSSLSocketData(); |
| 13529 | 13521 |
| 13530 SpdySerializedFrame host1_req( | 13522 SpdySerializedFrame host1_req( |
| 13531 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); | 13523 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); |
| 13532 spdy_util_.UpdateWithStreamDestruction(1); | 13524 spdy_util_.UpdateWithStreamDestruction(1); |
| 13533 SpdySerializedFrame host2_req( | 13525 SpdySerializedFrame host2_req( |
| 13534 spdy_util_.ConstructSpdyGet("https://mail.example.com", 3, LOWEST)); | 13526 spdy_util_.ConstructSpdyGet("https://mail.example.com", 3, LOWEST)); |
| 13535 MockWrite spdy_writes[] = { | 13527 MockWrite spdy_writes[] = { |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13597 // The server might not be able to serve an IP pooled request, and might send a | 13589 // The server might not be able to serve an IP pooled request, and might send a |
| 13598 // 421 Misdirected Request response status to indicate this. | 13590 // 421 Misdirected Request response status to indicate this. |
| 13599 // HttpNetworkTransaction should reset the request and retry without IP pooling. | 13591 // HttpNetworkTransaction should reset the request and retry without IP pooling. |
| 13600 TEST_F(HttpNetworkTransactionTest, RetryWithoutConnectionPooling) { | 13592 TEST_F(HttpNetworkTransactionTest, RetryWithoutConnectionPooling) { |
| 13601 // Two hosts resolve to the same IP address. | 13593 // Two hosts resolve to the same IP address. |
| 13602 const std::string ip_addr = "1.2.3.4"; | 13594 const std::string ip_addr = "1.2.3.4"; |
| 13603 IPAddress ip; | 13595 IPAddress ip; |
| 13604 ASSERT_TRUE(ip.AssignFromIPLiteral(ip_addr)); | 13596 ASSERT_TRUE(ip.AssignFromIPLiteral(ip_addr)); |
| 13605 IPEndPoint peer_addr = IPEndPoint(ip, 443); | 13597 IPEndPoint peer_addr = IPEndPoint(ip, 443); |
| 13606 | 13598 |
| 13607 session_deps_.host_resolver.reset(new MockCachingHostResolver()); | 13599 session_deps_.host_resolver = base::MakeUnique<MockCachingHostResolver>(); |
| 13608 session_deps_.host_resolver->rules()->AddRule("www.example.org", ip_addr); | 13600 session_deps_.host_resolver->rules()->AddRule("www.example.org", ip_addr); |
| 13609 session_deps_.host_resolver->rules()->AddRule("mail.example.org", ip_addr); | 13601 session_deps_.host_resolver->rules()->AddRule("mail.example.org", ip_addr); |
| 13610 | 13602 |
| 13611 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13603 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 13612 | 13604 |
| 13613 // Two requests on the first connection. | 13605 // Two requests on the first connection. |
| 13614 SpdySerializedFrame req1( | 13606 SpdySerializedFrame req1( |
| 13615 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); | 13607 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); |
| 13616 spdy_util_.UpdateWithStreamDestruction(1); | 13608 spdy_util_.UpdateWithStreamDestruction(1); |
| 13617 SpdySerializedFrame req2( | 13609 SpdySerializedFrame req2( |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13725 // Test that HTTP 421 responses are properly returned to the caller if received | 13717 // Test that HTTP 421 responses are properly returned to the caller if received |
| 13726 // on the retry as well. HttpNetworkTransaction should not infinite loop or lose | 13718 // on the retry as well. HttpNetworkTransaction should not infinite loop or lose |
| 13727 // portions of the response. | 13719 // portions of the response. |
| 13728 TEST_F(HttpNetworkTransactionTest, ReturnHTTP421OnRetry) { | 13720 TEST_F(HttpNetworkTransactionTest, ReturnHTTP421OnRetry) { |
| 13729 // Two hosts resolve to the same IP address. | 13721 // Two hosts resolve to the same IP address. |
| 13730 const std::string ip_addr = "1.2.3.4"; | 13722 const std::string ip_addr = "1.2.3.4"; |
| 13731 IPAddress ip; | 13723 IPAddress ip; |
| 13732 ASSERT_TRUE(ip.AssignFromIPLiteral(ip_addr)); | 13724 ASSERT_TRUE(ip.AssignFromIPLiteral(ip_addr)); |
| 13733 IPEndPoint peer_addr = IPEndPoint(ip, 443); | 13725 IPEndPoint peer_addr = IPEndPoint(ip, 443); |
| 13734 | 13726 |
| 13735 session_deps_.host_resolver.reset(new MockCachingHostResolver()); | 13727 session_deps_.host_resolver = base::MakeUnique<MockCachingHostResolver>(); |
| 13736 session_deps_.host_resolver->rules()->AddRule("www.example.org", ip_addr); | 13728 session_deps_.host_resolver->rules()->AddRule("www.example.org", ip_addr); |
| 13737 session_deps_.host_resolver->rules()->AddRule("mail.example.org", ip_addr); | 13729 session_deps_.host_resolver->rules()->AddRule("mail.example.org", ip_addr); |
| 13738 | 13730 |
| 13739 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13731 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 13740 | 13732 |
| 13741 // Two requests on the first connection. | 13733 // Two requests on the first connection. |
| 13742 SpdySerializedFrame req1( | 13734 SpdySerializedFrame req1( |
| 13743 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); | 13735 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); |
| 13744 spdy_util_.UpdateWithStreamDestruction(1); | 13736 spdy_util_.UpdateWithStreamDestruction(1); |
| 13745 SpdySerializedFrame req2( | 13737 SpdySerializedFrame req2( |
| (...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14483 | 14475 |
| 14484 SequencedSocketData data2(reads2, arraysize(reads2), writes2, | 14476 SequencedSocketData data2(reads2, arraysize(reads2), writes2, |
| 14485 arraysize(writes2)); | 14477 arraysize(writes2)); |
| 14486 MockConnect connect_data2(ASYNC, OK); | 14478 MockConnect connect_data2(ASYNC, OK); |
| 14487 data2.set_connect_data(connect_data2); | 14479 data2.set_connect_data(connect_data2); |
| 14488 | 14480 |
| 14489 // Set up a proxy config that sends HTTP requests to a proxy, and | 14481 // Set up a proxy config that sends HTTP requests to a proxy, and |
| 14490 // all others direct. | 14482 // all others direct. |
| 14491 ProxyConfig proxy_config; | 14483 ProxyConfig proxy_config; |
| 14492 proxy_config.proxy_rules().ParseFromString("http=https://proxy:443"); | 14484 proxy_config.proxy_rules().ParseFromString("http=https://proxy:443"); |
| 14493 session_deps_.proxy_service.reset(new ProxyService( | 14485 session_deps_.proxy_service = base::MakeUnique<ProxyService>( |
| 14494 base::WrapUnique(new ProxyConfigServiceFixed(proxy_config)), nullptr, | 14486 base::MakeUnique<ProxyConfigServiceFixed>(proxy_config), nullptr, |
| 14495 NULL)); | 14487 nullptr); |
| 14496 | 14488 |
| 14497 SSLSocketDataProvider ssl1(ASYNC, OK); // to the proxy | 14489 SSLSocketDataProvider ssl1(ASYNC, OK); // to the proxy |
| 14498 ssl1.next_proto = kProtoHTTP2; | 14490 ssl1.next_proto = kProtoHTTP2; |
| 14499 // Load a valid cert. Note, that this does not need to | 14491 // Load a valid cert. Note, that this does not need to |
| 14500 // be valid for proxy because the MockSSLClientSocket does | 14492 // be valid for proxy because the MockSSLClientSocket does |
| 14501 // not actually verify it. But SpdySession will use this | 14493 // not actually verify it. But SpdySession will use this |
| 14502 // to see if it is valid for the new origin | 14494 // to see if it is valid for the new origin |
| 14503 ssl1.cert = ImportCertFromFile(GetTestCertsDirectory(), "ok_cert.pem"); | 14495 ssl1.cert = ImportCertFromFile(GetTestCertsDirectory(), "ok_cert.pem"); |
| 14504 ASSERT_TRUE(ssl1.cert); | 14496 ASSERT_TRUE(ssl1.cert); |
| 14505 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1); | 14497 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1); |
| 14506 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 14498 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 14507 | 14499 |
| 14508 SSLSocketDataProvider ssl2(ASYNC, OK); // to the server | 14500 SSLSocketDataProvider ssl2(ASYNC, OK); // to the server |
| 14509 ssl2.next_proto = kProtoHTTP2; | 14501 ssl2.next_proto = kProtoHTTP2; |
| 14510 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2); | 14502 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2); |
| 14511 session_deps_.socket_factory->AddSocketDataProvider(&data2); | 14503 session_deps_.socket_factory->AddSocketDataProvider(&data2); |
| 14512 | 14504 |
| 14513 session_deps_.host_resolver.reset(new MockCachingHostResolver()); | 14505 session_deps_.host_resolver = base::MakeUnique<MockCachingHostResolver>(); |
| 14514 session_deps_.host_resolver->rules()->AddRule("news.example.org", ip_addr); | 14506 session_deps_.host_resolver->rules()->AddRule("news.example.org", ip_addr); |
| 14515 session_deps_.host_resolver->rules()->AddRule("proxy", ip_addr); | 14507 session_deps_.host_resolver->rules()->AddRule("proxy", ip_addr); |
| 14516 | 14508 |
| 14517 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); | 14509 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
| 14518 | 14510 |
| 14519 // Start the first transaction to set up the SpdySession | 14511 // Start the first transaction to set up the SpdySession |
| 14520 HttpRequestInfo request1; | 14512 HttpRequestInfo request1; |
| 14521 request1.method = "GET"; | 14513 request1.method = "GET"; |
| 14522 request1.url = GURL(url1); | 14514 request1.url = GURL(url1); |
| 14523 request1.load_flags = 0; | 14515 request1.load_flags = 0; |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14644 SpdySerializedFrame host1_resp_body( | 14636 SpdySerializedFrame host1_resp_body( |
| 14645 spdy_util_.ConstructSpdyDataFrame(1, true)); | 14637 spdy_util_.ConstructSpdyDataFrame(1, true)); |
| 14646 MockRead spdy1_reads[] = { | 14638 MockRead spdy1_reads[] = { |
| 14647 CreateMockRead(host1_resp, 1), CreateMockRead(host1_resp_body, 2), | 14639 CreateMockRead(host1_resp, 1), CreateMockRead(host1_resp_body, 2), |
| 14648 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3), | 14640 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3), |
| 14649 }; | 14641 }; |
| 14650 | 14642 |
| 14651 // Use a separate test instance for the separate SpdySession that will be | 14643 // Use a separate test instance for the separate SpdySession that will be |
| 14652 // created. | 14644 // created. |
| 14653 SpdyTestUtil spdy_util_2; | 14645 SpdyTestUtil spdy_util_2; |
| 14654 std::unique_ptr<SequencedSocketData> spdy1_data( | 14646 auto spdy1_data = base::MakeUnique<SequencedSocketData>( |
| 14655 new SequencedSocketData(spdy1_reads, arraysize(spdy1_reads), spdy1_writes, | 14647 spdy1_reads, arraysize(spdy1_reads), spdy1_writes, |
| 14656 arraysize(spdy1_writes))); | 14648 arraysize(spdy1_writes)); |
| 14657 session_deps_.socket_factory->AddSocketDataProvider(spdy1_data.get()); | 14649 session_deps_.socket_factory->AddSocketDataProvider(spdy1_data.get()); |
| 14658 | 14650 |
| 14659 SpdySerializedFrame host2_req( | 14651 SpdySerializedFrame host2_req( |
| 14660 spdy_util_2.ConstructSpdyGet("https://www.b.com", 1, DEFAULT_PRIORITY)); | 14652 spdy_util_2.ConstructSpdyGet("https://www.b.com", 1, DEFAULT_PRIORITY)); |
| 14661 MockWrite spdy2_writes[] = { | 14653 MockWrite spdy2_writes[] = { |
| 14662 CreateMockWrite(host2_req, 0), | 14654 CreateMockWrite(host2_req, 0), |
| 14663 }; | 14655 }; |
| 14664 SpdySerializedFrame host2_resp(spdy_util_2.ConstructSpdyGetReply(NULL, 0, 1)); | 14656 SpdySerializedFrame host2_resp(spdy_util_2.ConstructSpdyGetReply(NULL, 0, 1)); |
| 14665 SpdySerializedFrame host2_resp_body( | 14657 SpdySerializedFrame host2_resp_body( |
| 14666 spdy_util_2.ConstructSpdyDataFrame(1, true)); | 14658 spdy_util_2.ConstructSpdyDataFrame(1, true)); |
| 14667 MockRead spdy2_reads[] = { | 14659 MockRead spdy2_reads[] = { |
| 14668 CreateMockRead(host2_resp, 1), CreateMockRead(host2_resp_body, 2), | 14660 CreateMockRead(host2_resp, 1), CreateMockRead(host2_resp_body, 2), |
| 14669 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3), | 14661 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3), |
| 14670 }; | 14662 }; |
| 14671 | 14663 |
| 14672 std::unique_ptr<SequencedSocketData> spdy2_data( | 14664 auto spdy2_data = base::MakeUnique<SequencedSocketData>( |
| 14673 new SequencedSocketData(spdy2_reads, arraysize(spdy2_reads), spdy2_writes, | 14665 spdy2_reads, arraysize(spdy2_reads), spdy2_writes, |
| 14674 arraysize(spdy2_writes))); | 14666 arraysize(spdy2_writes)); |
| 14675 session_deps_.socket_factory->AddSocketDataProvider(spdy2_data.get()); | 14667 session_deps_.socket_factory->AddSocketDataProvider(spdy2_data.get()); |
| 14676 | 14668 |
| 14677 MockWrite http_write[] = { | 14669 MockWrite http_write[] = { |
| 14678 MockWrite("GET / HTTP/1.1\r\n" | 14670 MockWrite("GET / HTTP/1.1\r\n" |
| 14679 "Host: www.a.com\r\n" | 14671 "Host: www.a.com\r\n" |
| 14680 "Connection: keep-alive\r\n\r\n"), | 14672 "Connection: keep-alive\r\n\r\n"), |
| 14681 }; | 14673 }; |
| 14682 | 14674 |
| 14683 MockRead http_read[] = { | 14675 MockRead http_read[] = { |
| 14684 MockRead("HTTP/1.1 200 OK\r\n"), | 14676 MockRead("HTTP/1.1 200 OK\r\n"), |
| 14685 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 14677 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 14686 MockRead("Content-Length: 6\r\n\r\n"), | 14678 MockRead("Content-Length: 6\r\n\r\n"), |
| 14687 MockRead("hello!"), | 14679 MockRead("hello!"), |
| 14688 }; | 14680 }; |
| 14689 StaticSocketDataProvider http_data(http_read, arraysize(http_read), | 14681 StaticSocketDataProvider http_data(http_read, arraysize(http_read), |
| 14690 http_write, arraysize(http_write)); | 14682 http_write, arraysize(http_write)); |
| 14691 session_deps_.socket_factory->AddSocketDataProvider(&http_data); | 14683 session_deps_.socket_factory->AddSocketDataProvider(&http_data); |
| 14692 | 14684 |
| 14693 HostPortPair host_port_pair_a("www.a.com", 443); | 14685 HostPortPair host_port_pair_a("www.a.com", 443); |
| 14694 SpdySessionKey spdy_session_key_a( | 14686 SpdySessionKey spdy_session_key_a( |
| 14695 host_port_pair_a, ProxyServer::Direct(), PRIVACY_MODE_DISABLED); | 14687 host_port_pair_a, ProxyServer::Direct(), PRIVACY_MODE_DISABLED); |
| 14696 EXPECT_FALSE( | 14688 EXPECT_FALSE( |
| 14697 HasSpdySession(session->spdy_session_pool(), spdy_session_key_a)); | 14689 HasSpdySession(session->spdy_session_pool(), spdy_session_key_a)); |
| 14698 | 14690 |
| 14699 TestCompletionCallback callback; | 14691 TestCompletionCallback callback; |
| 14700 HttpRequestInfo request1; | 14692 HttpRequestInfo request1; |
| 14701 request1.method = "GET"; | 14693 request1.method = "GET"; |
| 14702 request1.url = GURL("https://www.a.com/"); | 14694 request1.url = GURL("https://www.a.com/"); |
| 14703 request1.load_flags = 0; | 14695 request1.load_flags = 0; |
| 14704 std::unique_ptr<HttpNetworkTransaction> trans( | 14696 auto trans = |
| 14705 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 14697 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 14706 | 14698 |
| 14707 int rv = trans->Start(&request1, callback.callback(), NetLogWithSource()); | 14699 int rv = trans->Start(&request1, callback.callback(), NetLogWithSource()); |
| 14708 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 14700 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 14709 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 14701 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 14710 | 14702 |
| 14711 const HttpResponseInfo* response = trans->GetResponseInfo(); | 14703 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 14712 ASSERT_TRUE(response); | 14704 ASSERT_TRUE(response); |
| 14713 ASSERT_TRUE(response->headers); | 14705 ASSERT_TRUE(response->headers); |
| 14714 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine()); | 14706 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine()); |
| 14715 EXPECT_TRUE(response->was_fetched_via_spdy); | 14707 EXPECT_TRUE(response->was_fetched_via_spdy); |
| 14716 EXPECT_TRUE(response->was_alpn_negotiated); | 14708 EXPECT_TRUE(response->was_alpn_negotiated); |
| 14717 | 14709 |
| 14718 std::string response_data; | 14710 std::string response_data; |
| 14719 ASSERT_THAT(ReadTransaction(trans.get(), &response_data), IsOk()); | 14711 ASSERT_THAT(ReadTransaction(trans.get(), &response_data), IsOk()); |
| 14720 EXPECT_EQ("hello!", response_data); | 14712 EXPECT_EQ("hello!", response_data); |
| 14721 trans.reset(); | 14713 trans.reset(); |
| 14722 EXPECT_TRUE( | 14714 EXPECT_TRUE( |
| 14723 HasSpdySession(session->spdy_session_pool(), spdy_session_key_a)); | 14715 HasSpdySession(session->spdy_session_pool(), spdy_session_key_a)); |
| 14724 | 14716 |
| 14725 HostPortPair host_port_pair_b("www.b.com", 443); | 14717 HostPortPair host_port_pair_b("www.b.com", 443); |
| 14726 SpdySessionKey spdy_session_key_b( | 14718 SpdySessionKey spdy_session_key_b( |
| 14727 host_port_pair_b, ProxyServer::Direct(), PRIVACY_MODE_DISABLED); | 14719 host_port_pair_b, ProxyServer::Direct(), PRIVACY_MODE_DISABLED); |
| 14728 EXPECT_FALSE( | 14720 EXPECT_FALSE( |
| 14729 HasSpdySession(session->spdy_session_pool(), spdy_session_key_b)); | 14721 HasSpdySession(session->spdy_session_pool(), spdy_session_key_b)); |
| 14730 HttpRequestInfo request2; | 14722 HttpRequestInfo request2; |
| 14731 request2.method = "GET"; | 14723 request2.method = "GET"; |
| 14732 request2.url = GURL("https://www.b.com/"); | 14724 request2.url = GURL("https://www.b.com/"); |
| 14733 request2.load_flags = 0; | 14725 request2.load_flags = 0; |
| 14734 trans.reset(new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 14726 trans = |
| 14727 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 14735 | 14728 |
| 14736 rv = trans->Start(&request2, callback.callback(), NetLogWithSource()); | 14729 rv = trans->Start(&request2, callback.callback(), NetLogWithSource()); |
| 14737 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 14730 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 14738 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 14731 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 14739 | 14732 |
| 14740 response = trans->GetResponseInfo(); | 14733 response = trans->GetResponseInfo(); |
| 14741 ASSERT_TRUE(response); | 14734 ASSERT_TRUE(response); |
| 14742 ASSERT_TRUE(response->headers); | 14735 ASSERT_TRUE(response->headers); |
| 14743 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine()); | 14736 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine()); |
| 14744 EXPECT_TRUE(response->was_fetched_via_spdy); | 14737 EXPECT_TRUE(response->was_fetched_via_spdy); |
| 14745 EXPECT_TRUE(response->was_alpn_negotiated); | 14738 EXPECT_TRUE(response->was_alpn_negotiated); |
| 14746 ASSERT_THAT(ReadTransaction(trans.get(), &response_data), IsOk()); | 14739 ASSERT_THAT(ReadTransaction(trans.get(), &response_data), IsOk()); |
| 14747 EXPECT_EQ("hello!", response_data); | 14740 EXPECT_EQ("hello!", response_data); |
| 14748 EXPECT_FALSE( | 14741 EXPECT_FALSE( |
| 14749 HasSpdySession(session->spdy_session_pool(), spdy_session_key_a)); | 14742 HasSpdySession(session->spdy_session_pool(), spdy_session_key_a)); |
| 14750 EXPECT_TRUE( | 14743 EXPECT_TRUE( |
| 14751 HasSpdySession(session->spdy_session_pool(), spdy_session_key_b)); | 14744 HasSpdySession(session->spdy_session_pool(), spdy_session_key_b)); |
| 14752 | 14745 |
| 14753 HostPortPair host_port_pair_a1("www.a.com", 80); | 14746 HostPortPair host_port_pair_a1("www.a.com", 80); |
| 14754 SpdySessionKey spdy_session_key_a1( | 14747 SpdySessionKey spdy_session_key_a1( |
| 14755 host_port_pair_a1, ProxyServer::Direct(), PRIVACY_MODE_DISABLED); | 14748 host_port_pair_a1, ProxyServer::Direct(), PRIVACY_MODE_DISABLED); |
| 14756 EXPECT_FALSE( | 14749 EXPECT_FALSE( |
| 14757 HasSpdySession(session->spdy_session_pool(), spdy_session_key_a1)); | 14750 HasSpdySession(session->spdy_session_pool(), spdy_session_key_a1)); |
| 14758 HttpRequestInfo request3; | 14751 HttpRequestInfo request3; |
| 14759 request3.method = "GET"; | 14752 request3.method = "GET"; |
| 14760 request3.url = GURL("http://www.a.com/"); | 14753 request3.url = GURL("http://www.a.com/"); |
| 14761 request3.load_flags = 0; | 14754 request3.load_flags = 0; |
| 14762 trans.reset(new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 14755 trans = |
| 14756 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 14763 | 14757 |
| 14764 rv = trans->Start(&request3, callback.callback(), NetLogWithSource()); | 14758 rv = trans->Start(&request3, callback.callback(), NetLogWithSource()); |
| 14765 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 14759 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 14766 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 14760 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 14767 | 14761 |
| 14768 response = trans->GetResponseInfo(); | 14762 response = trans->GetResponseInfo(); |
| 14769 ASSERT_TRUE(response); | 14763 ASSERT_TRUE(response); |
| 14770 ASSERT_TRUE(response->headers); | 14764 ASSERT_TRUE(response->headers); |
| 14771 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 14765 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 14772 EXPECT_FALSE(response->was_fetched_via_spdy); | 14766 EXPECT_FALSE(response->was_fetched_via_spdy); |
| (...skipping 987 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15760 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, | 15754 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, |
| 15761 arraysize(data_writes)); | 15755 arraysize(data_writes)); |
| 15762 session_deps_.socket_factory->AddSocketDataProvider(&data); | 15756 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 15763 | 15757 |
| 15764 TestCompletionCallback callback; | 15758 TestCompletionCallback callback; |
| 15765 HttpRequestInfo request1; | 15759 HttpRequestInfo request1; |
| 15766 request1.method = "GET"; | 15760 request1.method = "GET"; |
| 15767 request1.url = GURL("http://www.foo.com/"); | 15761 request1.url = GURL("http://www.foo.com/"); |
| 15768 request1.load_flags = 0; | 15762 request1.load_flags = 0; |
| 15769 | 15763 |
| 15770 std::unique_ptr<HttpNetworkTransaction> trans1( | 15764 auto trans1 = |
| 15771 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 15765 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 15772 int rv = trans1->Start(&request1, callback.callback(), NetLogWithSource()); | 15766 int rv = trans1->Start(&request1, callback.callback(), NetLogWithSource()); |
| 15773 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 15767 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 15774 | 15768 |
| 15775 rv = callback.WaitForResult(); | 15769 rv = callback.WaitForResult(); |
| 15776 EXPECT_THAT(rv, IsOk()); | 15770 EXPECT_THAT(rv, IsOk()); |
| 15777 | 15771 |
| 15778 const HttpResponseInfo* response1 = trans1->GetResponseInfo(); | 15772 const HttpResponseInfo* response1 = trans1->GetResponseInfo(); |
| 15779 ASSERT_TRUE(response1); | 15773 ASSERT_TRUE(response1); |
| 15780 | 15774 |
| 15781 EXPECT_TRUE(response1->headers); | 15775 EXPECT_TRUE(response1->headers); |
| 15782 EXPECT_EQ("HTTP/1.1 200 Peachy", response1->headers->GetStatusLine()); | 15776 EXPECT_EQ("HTTP/1.1 200 Peachy", response1->headers->GetStatusLine()); |
| 15783 | 15777 |
| 15784 std::string response_data1; | 15778 std::string response_data1; |
| 15785 rv = ReadTransaction(trans1.get(), &response_data1); | 15779 rv = ReadTransaction(trans1.get(), &response_data1); |
| 15786 EXPECT_THAT(rv, IsOk()); | 15780 EXPECT_THAT(rv, IsOk()); |
| 15787 EXPECT_EQ("first response", response_data1); | 15781 EXPECT_EQ("first response", response_data1); |
| 15788 // Delete the transaction to release the socket back into the socket pool. | 15782 // Delete the transaction to release the socket back into the socket pool. |
| 15789 trans1.reset(); | 15783 trans1.reset(); |
| 15790 | 15784 |
| 15791 std::vector<std::unique_ptr<UploadElementReader>> element_readers; | 15785 std::vector<std::unique_ptr<UploadElementReader>> element_readers; |
| 15792 element_readers.push_back( | 15786 element_readers.push_back( |
| 15793 base::WrapUnique(new UploadBytesElementReader("foo", 3))); | 15787 base::MakeUnique<UploadBytesElementReader>("foo", 3)); |
| 15794 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); | 15788 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); |
| 15795 | 15789 |
| 15796 HttpRequestInfo request2; | 15790 HttpRequestInfo request2; |
| 15797 request2.method = "POST"; | 15791 request2.method = "POST"; |
| 15798 request2.url = GURL("http://www.foo.com/"); | 15792 request2.url = GURL("http://www.foo.com/"); |
| 15799 request2.upload_data_stream = &upload_data_stream; | 15793 request2.upload_data_stream = &upload_data_stream; |
| 15800 request2.load_flags = 0; | 15794 request2.load_flags = 0; |
| 15801 | 15795 |
| 15802 HttpNetworkTransaction trans2(DEFAULT_PRIORITY, session.get()); | 15796 HttpNetworkTransaction trans2(DEFAULT_PRIORITY, session.get()); |
| 15803 rv = trans2.Start(&request2, callback.callback(), NetLogWithSource()); | 15797 rv = trans2.Start(&request2, callback.callback(), NetLogWithSource()); |
| (...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16193 MockRead("Connection: Upgrade\r\n"), | 16187 MockRead("Connection: Upgrade\r\n"), |
| 16194 MockRead("Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=\r\n\r\n"), | 16188 MockRead("Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=\r\n\r\n"), |
| 16195 }; | 16189 }; |
| 16196 | 16190 |
| 16197 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, | 16191 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, |
| 16198 arraysize(data_writes)); | 16192 arraysize(data_writes)); |
| 16199 session_deps_.socket_factory->AddSocketDataProvider(&data); | 16193 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 16200 SSLSocketDataProvider ssl(ASYNC, OK); | 16194 SSLSocketDataProvider ssl(ASYNC, OK); |
| 16201 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 16195 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 16202 | 16196 |
| 16203 std::unique_ptr<HttpNetworkTransaction> trans( | 16197 auto trans = |
| 16204 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 16198 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 16205 FakeWebSocketStreamCreateHelper websocket_stream_create_helper; | 16199 FakeWebSocketStreamCreateHelper websocket_stream_create_helper; |
| 16206 trans->SetWebSocketHandshakeStreamCreateHelper( | 16200 trans->SetWebSocketHandshakeStreamCreateHelper( |
| 16207 &websocket_stream_create_helper); | 16201 &websocket_stream_create_helper); |
| 16208 | 16202 |
| 16209 { | 16203 { |
| 16210 TestCompletionCallback callback; | 16204 TestCompletionCallback callback; |
| 16211 | 16205 |
| 16212 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 16206 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 16213 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 16207 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 16214 | 16208 |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16292 }; | 16286 }; |
| 16293 | 16287 |
| 16294 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, | 16288 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, |
| 16295 arraysize(data_writes)); | 16289 arraysize(data_writes)); |
| 16296 session_deps_.socket_factory->AddSocketDataProvider(&data); | 16290 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 16297 | 16291 |
| 16298 session->http_auth_cache()->Add( | 16292 session->http_auth_cache()->Add( |
| 16299 GURL("http://myproxy:70/"), "MyRealm1", HttpAuth::AUTH_SCHEME_BASIC, | 16293 GURL("http://myproxy:70/"), "MyRealm1", HttpAuth::AUTH_SCHEME_BASIC, |
| 16300 "Basic realm=MyRealm1", AuthCredentials(kFoo, kBar), "/"); | 16294 "Basic realm=MyRealm1", AuthCredentials(kFoo, kBar), "/"); |
| 16301 | 16295 |
| 16302 std::unique_ptr<HttpNetworkTransaction> trans( | 16296 auto trans = |
| 16303 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 16297 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 16304 FakeWebSocketStreamCreateHelper websocket_stream_create_helper; | 16298 FakeWebSocketStreamCreateHelper websocket_stream_create_helper; |
| 16305 trans->SetWebSocketHandshakeStreamCreateHelper( | 16299 trans->SetWebSocketHandshakeStreamCreateHelper( |
| 16306 &websocket_stream_create_helper); | 16300 &websocket_stream_create_helper); |
| 16307 | 16301 |
| 16308 TestCompletionCallback callback; | 16302 TestCompletionCallback callback; |
| 16309 | 16303 |
| 16310 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 16304 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 16311 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 16305 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 16312 | 16306 |
| 16313 rv = callback.WaitForResult(); | 16307 rv = callback.WaitForResult(); |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16466 TEST_F(HttpNetworkTransactionTest, ThrottlingUnthrottled) { | 16460 TEST_F(HttpNetworkTransactionTest, ThrottlingUnthrottled) { |
| 16467 TestNetworkStreamThrottler* throttler(nullptr); | 16461 TestNetworkStreamThrottler* throttler(nullptr); |
| 16468 std::unique_ptr<HttpNetworkSession> session( | 16462 std::unique_ptr<HttpNetworkSession> session( |
| 16469 CreateSessionWithThrottler(&session_deps_, &throttler)); | 16463 CreateSessionWithThrottler(&session_deps_, &throttler)); |
| 16470 | 16464 |
| 16471 // Send a simple request and make sure it goes through. | 16465 // Send a simple request and make sure it goes through. |
| 16472 HttpRequestInfo request; | 16466 HttpRequestInfo request; |
| 16473 request.method = "GET"; | 16467 request.method = "GET"; |
| 16474 request.url = GURL("http://www.example.org/"); | 16468 request.url = GURL("http://www.example.org/"); |
| 16475 | 16469 |
| 16476 std::unique_ptr<HttpTransaction> trans( | 16470 auto trans = |
| 16477 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 16471 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 16478 | 16472 |
| 16479 MockWrite data_writes[] = { | 16473 MockWrite data_writes[] = { |
| 16480 MockWrite("GET / HTTP/1.1\r\n" | 16474 MockWrite("GET / HTTP/1.1\r\n" |
| 16481 "Host: www.example.org\r\n" | 16475 "Host: www.example.org\r\n" |
| 16482 "Connection: keep-alive\r\n\r\n"), | 16476 "Connection: keep-alive\r\n\r\n"), |
| 16483 }; | 16477 }; |
| 16484 MockRead data_reads[] = { | 16478 MockRead data_reads[] = { |
| 16485 MockRead("HTTP/1.0 200 OK\r\n\r\n"), MockRead("hello world"), | 16479 MockRead("HTTP/1.0 200 OK\r\n\r\n"), MockRead("hello world"), |
| 16486 MockRead(SYNCHRONOUS, OK), | 16480 MockRead(SYNCHRONOUS, OK), |
| 16487 }; | 16481 }; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 16515 MockRead("HTTP/1.0 200 OK\r\n\r\n"), MockRead("hello world"), | 16509 MockRead("HTTP/1.0 200 OK\r\n\r\n"), MockRead("hello world"), |
| 16516 MockRead(SYNCHRONOUS, OK), | 16510 MockRead(SYNCHRONOUS, OK), |
| 16517 }; | 16511 }; |
| 16518 StaticSocketDataProvider reads(data_reads, arraysize(data_reads), data_writes, | 16512 StaticSocketDataProvider reads(data_reads, arraysize(data_reads), data_writes, |
| 16519 arraysize(data_writes)); | 16513 arraysize(data_writes)); |
| 16520 session_deps_.socket_factory->AddSocketDataProvider(&reads); | 16514 session_deps_.socket_factory->AddSocketDataProvider(&reads); |
| 16521 | 16515 |
| 16522 // Start a request that will be throttled at start; confirm it | 16516 // Start a request that will be throttled at start; confirm it |
| 16523 // doesn't complete. | 16517 // doesn't complete. |
| 16524 throttler->set_throttle_new_requests(true); | 16518 throttler->set_throttle_new_requests(true); |
| 16525 std::unique_ptr<HttpTransaction> trans( | 16519 auto trans = |
| 16526 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 16520 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 16527 | 16521 |
| 16528 TestCompletionCallback callback; | 16522 TestCompletionCallback callback; |
| 16529 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 16523 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 16530 EXPECT_EQ(ERR_IO_PENDING, rv); | 16524 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 16531 | 16525 |
| 16532 base::RunLoop().RunUntilIdle(); | 16526 base::RunLoop().RunUntilIdle(); |
| 16533 EXPECT_EQ(LOAD_STATE_THROTTLED, trans->GetLoadState()); | 16527 EXPECT_EQ(LOAD_STATE_THROTTLED, trans->GetLoadState()); |
| 16534 EXPECT_FALSE(callback.have_result()); | 16528 EXPECT_FALSE(callback.have_result()); |
| 16535 | 16529 |
| 16536 // Confirm the request goes on to complete when unthrottled. | 16530 // Confirm the request goes on to complete when unthrottled. |
| (...skipping 23 matching lines...) Expand all Loading... |
| 16560 MockRead("HTTP/1.0 200 OK\r\n\r\n"), MockRead("hello world"), | 16554 MockRead("HTTP/1.0 200 OK\r\n\r\n"), MockRead("hello world"), |
| 16561 MockRead(SYNCHRONOUS, OK), | 16555 MockRead(SYNCHRONOUS, OK), |
| 16562 }; | 16556 }; |
| 16563 StaticSocketDataProvider reads(data_reads, arraysize(data_reads), data_writes, | 16557 StaticSocketDataProvider reads(data_reads, arraysize(data_reads), data_writes, |
| 16564 arraysize(data_writes)); | 16558 arraysize(data_writes)); |
| 16565 session_deps_.socket_factory->AddSocketDataProvider(&reads); | 16559 session_deps_.socket_factory->AddSocketDataProvider(&reads); |
| 16566 | 16560 |
| 16567 // Start a request that will be throttled at start; confirm it | 16561 // Start a request that will be throttled at start; confirm it |
| 16568 // doesn't complete. | 16562 // doesn't complete. |
| 16569 throttler->set_throttle_new_requests(true); | 16563 throttler->set_throttle_new_requests(true); |
| 16570 std::unique_ptr<HttpTransaction> trans( | 16564 auto trans = |
| 16571 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 16565 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 16572 | 16566 |
| 16573 TestCompletionCallback callback; | 16567 TestCompletionCallback callback; |
| 16574 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 16568 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 16575 EXPECT_EQ(ERR_IO_PENDING, rv); | 16569 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 16576 | 16570 |
| 16577 base::RunLoop().RunUntilIdle(); | 16571 base::RunLoop().RunUntilIdle(); |
| 16578 EXPECT_EQ(LOAD_STATE_THROTTLED, trans->GetLoadState()); | 16572 EXPECT_EQ(LOAD_STATE_THROTTLED, trans->GetLoadState()); |
| 16579 EXPECT_FALSE(callback.have_result()); | 16573 EXPECT_FALSE(callback.have_result()); |
| 16580 | 16574 |
| 16581 EXPECT_EQ(1u, throttler->num_outstanding_requests()); | 16575 EXPECT_EQ(1u, throttler->num_outstanding_requests()); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 16601 }; | 16595 }; |
| 16602 MockRead data_reads[] = { | 16596 MockRead data_reads[] = { |
| 16603 MockRead("HTTP/1.0 200 OK\r\n\r\n"), MockRead("hello world"), | 16597 MockRead("HTTP/1.0 200 OK\r\n\r\n"), MockRead("hello world"), |
| 16604 MockRead(SYNCHRONOUS, OK), | 16598 MockRead(SYNCHRONOUS, OK), |
| 16605 }; | 16599 }; |
| 16606 StaticSocketDataProvider reads(data_reads, arraysize(data_reads), data_writes, | 16600 StaticSocketDataProvider reads(data_reads, arraysize(data_reads), data_writes, |
| 16607 arraysize(data_writes)); | 16601 arraysize(data_writes)); |
| 16608 session_deps_.socket_factory->AddSocketDataProvider(&reads); | 16602 session_deps_.socket_factory->AddSocketDataProvider(&reads); |
| 16609 | 16603 |
| 16610 throttler->set_throttle_new_requests(true); | 16604 throttler->set_throttle_new_requests(true); |
| 16611 std::unique_ptr<HttpTransaction> trans( | 16605 auto trans = base::MakeUnique<HttpNetworkTransaction>(IDLE, session.get()); |
| 16612 new HttpNetworkTransaction(IDLE, session.get())); | |
| 16613 // Start the transaction to associate a throttle with it. | 16606 // Start the transaction to associate a throttle with it. |
| 16614 TestCompletionCallback callback; | 16607 TestCompletionCallback callback; |
| 16615 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 16608 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 16616 EXPECT_EQ(ERR_IO_PENDING, rv); | 16609 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 16617 | 16610 |
| 16618 EXPECT_EQ(0, throttler->num_set_priority_calls()); | 16611 EXPECT_EQ(0, throttler->num_set_priority_calls()); |
| 16619 trans->SetPriority(LOW); | 16612 trans->SetPriority(LOW); |
| 16620 EXPECT_EQ(1, throttler->num_set_priority_calls()); | 16613 EXPECT_EQ(1, throttler->num_set_priority_calls()); |
| 16621 EXPECT_EQ(LOW, throttler->last_priority_set()); | 16614 EXPECT_EQ(LOW, throttler->last_priority_set()); |
| 16622 | 16615 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 16651 arraysize(data_writes)); | 16644 arraysize(data_writes)); |
| 16652 session_deps_.socket_factory->AddSocketDataProvider(&reads); | 16645 session_deps_.socket_factory->AddSocketDataProvider(&reads); |
| 16653 | 16646 |
| 16654 StaticSocketDataProvider reads1(data_reads, arraysize(data_reads), | 16647 StaticSocketDataProvider reads1(data_reads, arraysize(data_reads), |
| 16655 data_writes, arraysize(data_writes)); | 16648 data_writes, arraysize(data_writes)); |
| 16656 session_deps_.socket_factory->AddSocketDataProvider(&reads1); | 16649 session_deps_.socket_factory->AddSocketDataProvider(&reads1); |
| 16657 | 16650 |
| 16658 // Start a request that will be throttled at start; confirm it | 16651 // Start a request that will be throttled at start; confirm it |
| 16659 // doesn't complete. | 16652 // doesn't complete. |
| 16660 throttler->set_throttle_new_requests(true); | 16653 throttler->set_throttle_new_requests(true); |
| 16661 std::unique_ptr<HttpTransaction> trans( | 16654 auto trans = |
| 16662 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 16655 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 16663 | 16656 |
| 16664 TestCompletionCallback callback; | 16657 TestCompletionCallback callback; |
| 16665 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 16658 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 16666 EXPECT_EQ(ERR_IO_PENDING, rv); | 16659 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 16667 | 16660 |
| 16668 base::RunLoop().RunUntilIdle(); | 16661 base::RunLoop().RunUntilIdle(); |
| 16669 EXPECT_EQ(LOAD_STATE_THROTTLED, trans->GetLoadState()); | 16662 EXPECT_EQ(LOAD_STATE_THROTTLED, trans->GetLoadState()); |
| 16670 EXPECT_FALSE(callback.have_result()); | 16663 EXPECT_FALSE(callback.have_result()); |
| 16671 | 16664 |
| 16672 // Create a new request, call SetPriority on it to unthrottle, | 16665 // Create a new request, call SetPriority on it to unthrottle, |
| 16673 // and make sure that allows the original request to complete. | 16666 // and make sure that allows the original request to complete. |
| 16674 std::unique_ptr<HttpTransaction> trans1( | 16667 auto trans1 = base::MakeUnique<HttpNetworkTransaction>(LOW, session.get()); |
| 16675 new HttpNetworkTransaction(LOW, session.get())); | |
| 16676 throttler->set_priority_change_closure( | 16668 throttler->set_priority_change_closure( |
| 16677 base::Bind(&TestNetworkStreamThrottler::UnthrottleAllRequests, | 16669 base::Bind(&TestNetworkStreamThrottler::UnthrottleAllRequests, |
| 16678 base::Unretained(throttler))); | 16670 base::Unretained(throttler))); |
| 16679 | 16671 |
| 16680 // Start the transaction to associate a throttle with it. | 16672 // Start the transaction to associate a throttle with it. |
| 16681 TestCompletionCallback callback1; | 16673 TestCompletionCallback callback1; |
| 16682 rv = trans1->Start(&request, callback1.callback(), NetLogWithSource()); | 16674 rv = trans1->Start(&request, callback1.callback(), NetLogWithSource()); |
| 16683 EXPECT_EQ(ERR_IO_PENDING, rv); | 16675 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 16684 | 16676 |
| 16685 trans1->SetPriority(IDLE); | 16677 trans1->SetPriority(IDLE); |
| 16686 | 16678 |
| 16687 base::RunLoop().RunUntilIdle(); | 16679 base::RunLoop().RunUntilIdle(); |
| 16688 ASSERT_TRUE(callback.have_result()); | 16680 ASSERT_TRUE(callback.have_result()); |
| 16689 EXPECT_EQ(OK, callback.WaitForResult()); | 16681 EXPECT_EQ(OK, callback.WaitForResult()); |
| 16690 ASSERT_TRUE(callback1.have_result()); | 16682 ASSERT_TRUE(callback1.have_result()); |
| 16691 EXPECT_EQ(OK, callback1.WaitForResult()); | 16683 EXPECT_EQ(OK, callback1.WaitForResult()); |
| 16692 } | 16684 } |
| 16693 | 16685 |
| 16694 // Transaction will be destroyed when the unique_ptr goes out of scope. | 16686 // Transaction will be destroyed when the unique_ptr goes out of scope. |
| 16695 void DestroyTransaction(std::unique_ptr<HttpTransaction> transaction) {} | 16687 void DestroyTransaction(std::unique_ptr<HttpNetworkTransaction> transaction) {} |
| 16696 | 16688 |
| 16697 // Confirm that destroying a transaction from a SetPriority call by the | 16689 // Confirm that destroying a transaction from a SetPriority call by the |
| 16698 // throttler works properly. | 16690 // throttler works properly. |
| 16699 TEST_F(HttpNetworkTransactionTest, ThrottlingPrioritySetDestroy) { | 16691 TEST_F(HttpNetworkTransactionTest, ThrottlingPrioritySetDestroy) { |
| 16700 TestNetworkStreamThrottler* throttler(nullptr); | 16692 TestNetworkStreamThrottler* throttler(nullptr); |
| 16701 std::unique_ptr<HttpNetworkSession> session( | 16693 std::unique_ptr<HttpNetworkSession> session( |
| 16702 CreateSessionWithThrottler(&session_deps_, &throttler)); | 16694 CreateSessionWithThrottler(&session_deps_, &throttler)); |
| 16703 | 16695 |
| 16704 // Send a simple request and make sure it goes through. | 16696 // Send a simple request and make sure it goes through. |
| 16705 HttpRequestInfo request; | 16697 HttpRequestInfo request; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 16719 arraysize(data_writes)); | 16711 arraysize(data_writes)); |
| 16720 session_deps_.socket_factory->AddSocketDataProvider(&reads); | 16712 session_deps_.socket_factory->AddSocketDataProvider(&reads); |
| 16721 | 16713 |
| 16722 StaticSocketDataProvider reads1(data_reads, arraysize(data_reads), | 16714 StaticSocketDataProvider reads1(data_reads, arraysize(data_reads), |
| 16723 data_writes, arraysize(data_writes)); | 16715 data_writes, arraysize(data_writes)); |
| 16724 session_deps_.socket_factory->AddSocketDataProvider(&reads1); | 16716 session_deps_.socket_factory->AddSocketDataProvider(&reads1); |
| 16725 | 16717 |
| 16726 // Start a request that will be throttled at start; confirm it | 16718 // Start a request that will be throttled at start; confirm it |
| 16727 // doesn't complete. | 16719 // doesn't complete. |
| 16728 throttler->set_throttle_new_requests(true); | 16720 throttler->set_throttle_new_requests(true); |
| 16729 std::unique_ptr<HttpTransaction> trans( | 16721 auto trans = |
| 16730 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 16722 base::MakeUnique<HttpNetworkTransaction>(DEFAULT_PRIORITY, session.get()); |
| 16731 | 16723 |
| 16732 TestCompletionCallback callback; | 16724 TestCompletionCallback callback; |
| 16733 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); | 16725 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 16734 EXPECT_EQ(ERR_IO_PENDING, rv); | 16726 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 16735 | 16727 |
| 16736 base::RunLoop().RunUntilIdle(); | 16728 base::RunLoop().RunUntilIdle(); |
| 16737 EXPECT_EQ(LOAD_STATE_THROTTLED, trans->GetLoadState()); | 16729 EXPECT_EQ(LOAD_STATE_THROTTLED, trans->GetLoadState()); |
| 16738 EXPECT_FALSE(callback.have_result()); | 16730 EXPECT_FALSE(callback.have_result()); |
| 16739 | 16731 |
| 16740 // Arrange for the set priority call on the above transaction to delete | 16732 // Arrange for the set priority call on the above transaction to delete |
| 16741 // the transaction. | 16733 // the transaction. |
| 16742 HttpTransaction* trans_ptr(trans.get()); | 16734 HttpNetworkTransaction* trans_ptr(trans.get()); |
| 16743 throttler->set_priority_change_closure( | 16735 throttler->set_priority_change_closure( |
| 16744 base::Bind(&DestroyTransaction, base::Passed(&trans))); | 16736 base::Bind(&DestroyTransaction, base::Passed(&trans))); |
| 16745 | 16737 |
| 16746 // Call it and check results (partially a "doesn't crash" test). | 16738 // Call it and check results (partially a "doesn't crash" test). |
| 16747 trans_ptr->SetPriority(IDLE); | 16739 trans_ptr->SetPriority(IDLE); |
| 16748 trans_ptr = nullptr; // No longer a valid pointer. | 16740 trans_ptr = nullptr; // No longer a valid pointer. |
| 16749 | 16741 |
| 16750 base::RunLoop().RunUntilIdle(); | 16742 base::RunLoop().RunUntilIdle(); |
| 16751 ASSERT_FALSE(callback.have_result()); | 16743 ASSERT_FALSE(callback.have_result()); |
| 16752 } | 16744 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 16763 ssl.token_binding_key_param = TB_PARAM_ECDSAP256; | 16755 ssl.token_binding_key_param = TB_PARAM_ECDSAP256; |
| 16764 ssl.next_proto = kProtoHTTP2; | 16756 ssl.next_proto = kProtoHTTP2; |
| 16765 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 16757 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 16766 | 16758 |
| 16767 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 16759 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
| 16768 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true)); | 16760 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true)); |
| 16769 MockRead reads[] = {CreateMockRead(resp), CreateMockRead(body), | 16761 MockRead reads[] = {CreateMockRead(resp), CreateMockRead(body), |
| 16770 MockRead(ASYNC, ERR_IO_PENDING)}; | 16762 MockRead(ASYNC, ERR_IO_PENDING)}; |
| 16771 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); | 16763 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
| 16772 session_deps_.socket_factory->AddSocketDataProvider(&data); | 16764 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 16773 session_deps_.channel_id_service.reset( | 16765 session_deps_.channel_id_service = |
| 16774 new ChannelIDService(new DefaultChannelIDStore(nullptr))); | 16766 base::MakeUnique<ChannelIDService>(new DefaultChannelIDStore(nullptr)); |
| 16775 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 16767 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 16776 | 16768 |
| 16777 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 16769 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 16778 TestCompletionCallback callback; | 16770 TestCompletionCallback callback; |
| 16779 EXPECT_EQ(ERR_IO_PENDING, | 16771 EXPECT_EQ(ERR_IO_PENDING, |
| 16780 trans.Start(&request, callback.callback(), NetLogWithSource())); | 16772 trans.Start(&request, callback.callback(), NetLogWithSource())); |
| 16781 | 16773 |
| 16782 NetTestSuite::GetScopedTaskEnvironment()->RunUntilIdle(); | 16774 NetTestSuite::GetScopedTaskEnvironment()->RunUntilIdle(); |
| 16783 | 16775 |
| 16784 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); | 16776 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16855 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip", | 16847 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip", |
| 16856 "", false); | 16848 "", false); |
| 16857 } | 16849 } |
| 16858 | 16850 |
| 16859 TEST_F(HttpNetworkTransactionTest, MatchContentEncoding4) { | 16851 TEST_F(HttpNetworkTransactionTest, MatchContentEncoding4) { |
| 16860 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip", | 16852 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip", |
| 16861 "www.foo.com/other", true); | 16853 "www.foo.com/other", true); |
| 16862 } | 16854 } |
| 16863 | 16855 |
| 16864 } // namespace net | 16856 } // namespace net |
| OLD | NEW |