Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(455)

Side by Side Diff: net/http/http_network_transaction_unittest.cc

Issue 2904643002: Remove some naked |new| statements in favor of MakeUnique. (Closed)
Patch Set: Revert changes in one test where it caused a crash. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698