OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/http/http_network_transaction.h" | 5 #include "net/http/http_network_transaction.h" |
6 | 6 |
7 #include <math.h> // ceil | 7 #include <math.h> // ceil |
8 #include <stdarg.h> | 8 #include <stdarg.h> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 #include "net/http/http_basic_state.h" | 43 #include "net/http/http_basic_state.h" |
44 #include "net/http/http_basic_stream.h" | 44 #include "net/http/http_basic_stream.h" |
45 #include "net/http/http_network_session.h" | 45 #include "net/http/http_network_session.h" |
46 #include "net/http/http_network_session_peer.h" | 46 #include "net/http/http_network_session_peer.h" |
47 #include "net/http/http_request_headers.h" | 47 #include "net/http/http_request_headers.h" |
48 #include "net/http/http_server_properties_impl.h" | 48 #include "net/http/http_server_properties_impl.h" |
49 #include "net/http/http_stream.h" | 49 #include "net/http/http_stream.h" |
50 #include "net/http/http_stream_factory.h" | 50 #include "net/http/http_stream_factory.h" |
51 #include "net/http/http_stream_parser.h" | 51 #include "net/http/http_stream_parser.h" |
52 #include "net/http/http_transaction_test_util.h" | 52 #include "net/http/http_transaction_test_util.h" |
53 #include "net/log/capturing_net_log.h" | |
54 #include "net/log/net_log.h" | 53 #include "net/log/net_log.h" |
55 #include "net/log/net_log_unittest.h" | 54 #include "net/log/net_log_unittest.h" |
| 55 #include "net/log/test_net_log.h" |
56 #include "net/proxy/mock_proxy_resolver.h" | 56 #include "net/proxy/mock_proxy_resolver.h" |
57 #include "net/proxy/proxy_config_service_fixed.h" | 57 #include "net/proxy/proxy_config_service_fixed.h" |
58 #include "net/proxy/proxy_info.h" | 58 #include "net/proxy/proxy_info.h" |
59 #include "net/proxy/proxy_resolver.h" | 59 #include "net/proxy/proxy_resolver.h" |
60 #include "net/proxy/proxy_service.h" | 60 #include "net/proxy/proxy_service.h" |
61 #include "net/socket/client_socket_factory.h" | 61 #include "net/socket/client_socket_factory.h" |
62 #include "net/socket/client_socket_pool_manager.h" | 62 #include "net/socket/client_socket_pool_manager.h" |
63 #include "net/socket/mock_client_socket_pool_manager.h" | 63 #include "net/socket/mock_client_socket_pool_manager.h" |
64 #include "net/socket/next_proto.h" | 64 #include "net/socket/next_proto.h" |
65 #include "net/socket/socket_test_util.h" | 65 #include "net/socket/socket_test_util.h" |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 | 310 |
311 SimpleGetHelperResult SimpleGetHelperForData(StaticSocketDataProvider* data[], | 311 SimpleGetHelperResult SimpleGetHelperForData(StaticSocketDataProvider* data[], |
312 size_t data_count) { | 312 size_t data_count) { |
313 SimpleGetHelperResult out; | 313 SimpleGetHelperResult out; |
314 | 314 |
315 HttpRequestInfo request; | 315 HttpRequestInfo request; |
316 request.method = "GET"; | 316 request.method = "GET"; |
317 request.url = GURL("http://www.google.com/"); | 317 request.url = GURL("http://www.google.com/"); |
318 request.load_flags = 0; | 318 request.load_flags = 0; |
319 | 319 |
320 CapturingBoundNetLog log; | 320 BoundTestNetLog log; |
321 session_deps_.net_log = log.bound().net_log(); | 321 session_deps_.net_log = log.bound().net_log(); |
322 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 322 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
323 scoped_ptr<HttpTransaction> trans( | 323 scoped_ptr<HttpTransaction> trans( |
324 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 324 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
325 | 325 |
326 for (size_t i = 0; i < data_count; ++i) { | 326 for (size_t i = 0; i < data_count; ++i) { |
327 session_deps_.socket_factory->AddSocketDataProvider(data[i]); | 327 session_deps_.socket_factory->AddSocketDataProvider(data[i]); |
328 } | 328 } |
329 | 329 |
330 TestCompletionCallback callback; | 330 TestCompletionCallback callback; |
(...skipping 20 matching lines...) Expand all Loading... |
351 return out; | 351 return out; |
352 } | 352 } |
353 out.status_line = response->headers->GetStatusLine(); | 353 out.status_line = response->headers->GetStatusLine(); |
354 | 354 |
355 EXPECT_EQ("127.0.0.1", response->socket_address.host()); | 355 EXPECT_EQ("127.0.0.1", response->socket_address.host()); |
356 EXPECT_EQ(80, response->socket_address.port()); | 356 EXPECT_EQ(80, response->socket_address.port()); |
357 | 357 |
358 rv = ReadTransaction(trans.get(), &out.response_data); | 358 rv = ReadTransaction(trans.get(), &out.response_data); |
359 EXPECT_EQ(OK, rv); | 359 EXPECT_EQ(OK, rv); |
360 | 360 |
361 net::CapturingNetLog::CapturedEntryList entries; | 361 net::TestNetLog::CapturedEntryList entries; |
362 log.GetEntries(&entries); | 362 log.GetEntries(&entries); |
363 size_t pos = ExpectLogContainsSomewhere( | 363 size_t pos = ExpectLogContainsSomewhere( |
364 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_REQUEST_HEADERS, | 364 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_REQUEST_HEADERS, |
365 NetLog::PHASE_NONE); | 365 NetLog::PHASE_NONE); |
366 ExpectLogContainsSomewhere( | 366 ExpectLogContainsSomewhere( |
367 entries, pos, | 367 entries, pos, |
368 NetLog::TYPE_HTTP_TRANSACTION_READ_RESPONSE_HEADERS, | 368 NetLog::TYPE_HTTP_TRANSACTION_READ_RESPONSE_HEADERS, |
369 NetLog::PHASE_NONE); | 369 NetLog::PHASE_NONE); |
370 | 370 |
371 std::string line; | 371 std::string line; |
(...skipping 894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1266 } | 1266 } |
1267 | 1267 |
1268 void HttpNetworkTransactionTest::KeepAliveConnectionResendRequestTest( | 1268 void HttpNetworkTransactionTest::KeepAliveConnectionResendRequestTest( |
1269 const MockWrite* write_failure, | 1269 const MockWrite* write_failure, |
1270 const MockRead* read_failure) { | 1270 const MockRead* read_failure) { |
1271 HttpRequestInfo request; | 1271 HttpRequestInfo request; |
1272 request.method = "GET"; | 1272 request.method = "GET"; |
1273 request.url = GURL("http://www.foo.com/"); | 1273 request.url = GURL("http://www.foo.com/"); |
1274 request.load_flags = 0; | 1274 request.load_flags = 0; |
1275 | 1275 |
1276 CapturingNetLog net_log; | 1276 TestNetLog net_log; |
1277 session_deps_.net_log = &net_log; | 1277 session_deps_.net_log = &net_log; |
1278 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 1278 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
1279 | 1279 |
1280 // Written data for successfully sending both requests. | 1280 // Written data for successfully sending both requests. |
1281 MockWrite data1_writes[] = { | 1281 MockWrite data1_writes[] = { |
1282 MockWrite("GET / HTTP/1.1\r\n" | 1282 MockWrite("GET / HTTP/1.1\r\n" |
1283 "Host: www.foo.com\r\n" | 1283 "Host: www.foo.com\r\n" |
1284 "Connection: keep-alive\r\n\r\n"), | 1284 "Connection: keep-alive\r\n\r\n"), |
1285 MockWrite("GET / HTTP/1.1\r\n" | 1285 MockWrite("GET / HTTP/1.1\r\n" |
1286 "Host: www.foo.com\r\n" | 1286 "Host: www.foo.com\r\n" |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1356 | 1356 |
1357 void HttpNetworkTransactionTest::PreconnectErrorResendRequestTest( | 1357 void HttpNetworkTransactionTest::PreconnectErrorResendRequestTest( |
1358 const MockWrite* write_failure, | 1358 const MockWrite* write_failure, |
1359 const MockRead* read_failure, | 1359 const MockRead* read_failure, |
1360 bool use_spdy) { | 1360 bool use_spdy) { |
1361 HttpRequestInfo request; | 1361 HttpRequestInfo request; |
1362 request.method = "GET"; | 1362 request.method = "GET"; |
1363 request.url = GURL("https://www.foo.com/"); | 1363 request.url = GURL("https://www.foo.com/"); |
1364 request.load_flags = 0; | 1364 request.load_flags = 0; |
1365 | 1365 |
1366 CapturingNetLog net_log; | 1366 TestNetLog net_log; |
1367 session_deps_.net_log = &net_log; | 1367 session_deps_.net_log = &net_log; |
1368 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 1368 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
1369 | 1369 |
1370 SSLSocketDataProvider ssl1(ASYNC, OK); | 1370 SSLSocketDataProvider ssl1(ASYNC, OK); |
1371 SSLSocketDataProvider ssl2(ASYNC, OK); | 1371 SSLSocketDataProvider ssl2(ASYNC, OK); |
1372 if (use_spdy) { | 1372 if (use_spdy) { |
1373 ssl1.SetNextProto(GetParam()); | 1373 ssl1.SetNextProto(GetParam()); |
1374 ssl2.SetNextProto(GetParam()); | 1374 ssl2.SetNextProto(GetParam()); |
1375 } | 1375 } |
1376 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1); | 1376 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1); |
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1770 } | 1770 } |
1771 | 1771 |
1772 // Test that we correctly reuse a keep-alive connection after not explicitly | 1772 // Test that we correctly reuse a keep-alive connection after not explicitly |
1773 // reading the body. | 1773 // reading the body. |
1774 TEST_P(HttpNetworkTransactionTest, KeepAliveAfterUnreadBody) { | 1774 TEST_P(HttpNetworkTransactionTest, KeepAliveAfterUnreadBody) { |
1775 HttpRequestInfo request; | 1775 HttpRequestInfo request; |
1776 request.method = "GET"; | 1776 request.method = "GET"; |
1777 request.url = GURL("http://www.foo.com/"); | 1777 request.url = GURL("http://www.foo.com/"); |
1778 request.load_flags = 0; | 1778 request.load_flags = 0; |
1779 | 1779 |
1780 CapturingNetLog net_log; | 1780 TestNetLog net_log; |
1781 session_deps_.net_log = &net_log; | 1781 session_deps_.net_log = &net_log; |
1782 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 1782 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
1783 | 1783 |
1784 // Note that because all these reads happen in the same | 1784 // Note that because all these reads happen in the same |
1785 // StaticSocketDataProvider, it shows that the same socket is being reused for | 1785 // StaticSocketDataProvider, it shows that the same socket is being reused for |
1786 // all transactions. | 1786 // all transactions. |
1787 MockRead data1_reads[] = { | 1787 MockRead data1_reads[] = { |
1788 MockRead("HTTP/1.1 204 No Content\r\n\r\n"), | 1788 MockRead("HTTP/1.1 204 No Content\r\n\r\n"), |
1789 MockRead("HTTP/1.1 205 Reset Content\r\n\r\n"), | 1789 MockRead("HTTP/1.1 205 Reset Content\r\n\r\n"), |
1790 MockRead("HTTP/1.1 304 Not Modified\r\n\r\n"), | 1790 MockRead("HTTP/1.1 304 Not Modified\r\n\r\n"), |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1879 } | 1879 } |
1880 | 1880 |
1881 // Test the request-challenge-retry sequence for basic auth. | 1881 // Test the request-challenge-retry sequence for basic auth. |
1882 // (basic auth is the easiest to mock, because it has no randomness). | 1882 // (basic auth is the easiest to mock, because it has no randomness). |
1883 TEST_P(HttpNetworkTransactionTest, BasicAuth) { | 1883 TEST_P(HttpNetworkTransactionTest, BasicAuth) { |
1884 HttpRequestInfo request; | 1884 HttpRequestInfo request; |
1885 request.method = "GET"; | 1885 request.method = "GET"; |
1886 request.url = GURL("http://www.google.com/"); | 1886 request.url = GURL("http://www.google.com/"); |
1887 request.load_flags = 0; | 1887 request.load_flags = 0; |
1888 | 1888 |
1889 CapturingNetLog log; | 1889 TestNetLog log; |
1890 session_deps_.net_log = &log; | 1890 session_deps_.net_log = &log; |
1891 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 1891 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
1892 scoped_ptr<HttpTransaction> trans( | 1892 scoped_ptr<HttpTransaction> trans( |
1893 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 1893 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
1894 | 1894 |
1895 MockWrite data_writes1[] = { | 1895 MockWrite data_writes1[] = { |
1896 MockWrite("GET / HTTP/1.1\r\n" | 1896 MockWrite("GET / HTTP/1.1\r\n" |
1897 "Host: www.google.com\r\n" | 1897 "Host: www.google.com\r\n" |
1898 "Connection: keep-alive\r\n\r\n"), | 1898 "Connection: keep-alive\r\n\r\n"), |
1899 }; | 1899 }; |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2026 } | 2026 } |
2027 | 2027 |
2028 // Test the request-challenge-retry sequence for basic auth, over a keep-alive | 2028 // Test the request-challenge-retry sequence for basic auth, over a keep-alive |
2029 // connection. | 2029 // connection. |
2030 TEST_P(HttpNetworkTransactionTest, BasicAuthKeepAlive) { | 2030 TEST_P(HttpNetworkTransactionTest, BasicAuthKeepAlive) { |
2031 HttpRequestInfo request; | 2031 HttpRequestInfo request; |
2032 request.method = "GET"; | 2032 request.method = "GET"; |
2033 request.url = GURL("http://www.google.com/"); | 2033 request.url = GURL("http://www.google.com/"); |
2034 request.load_flags = 0; | 2034 request.load_flags = 0; |
2035 | 2035 |
2036 CapturingNetLog log; | 2036 TestNetLog log; |
2037 session_deps_.net_log = &log; | 2037 session_deps_.net_log = &log; |
2038 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 2038 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
2039 | 2039 |
2040 MockWrite data_writes1[] = { | 2040 MockWrite data_writes1[] = { |
2041 MockWrite("GET / HTTP/1.1\r\n" | 2041 MockWrite("GET / HTTP/1.1\r\n" |
2042 "Host: www.google.com\r\n" | 2042 "Host: www.google.com\r\n" |
2043 "Connection: keep-alive\r\n\r\n"), | 2043 "Connection: keep-alive\r\n\r\n"), |
2044 | 2044 |
2045 // After calling trans->RestartWithAuth(), this is the request we should | 2045 // After calling trans->RestartWithAuth(), this is the request we should |
2046 // be issuing -- the final header line contains the credentials. | 2046 // be issuing -- the final header line contains the credentials. |
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2376 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyNoKeepAliveHttp10) { | 2376 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyNoKeepAliveHttp10) { |
2377 HttpRequestInfo request; | 2377 HttpRequestInfo request; |
2378 request.method = "GET"; | 2378 request.method = "GET"; |
2379 request.url = GURL("https://www.google.com/"); | 2379 request.url = GURL("https://www.google.com/"); |
2380 // when the no authentication data flag is set. | 2380 // when the no authentication data flag is set. |
2381 request.load_flags = net::LOAD_DO_NOT_SEND_AUTH_DATA; | 2381 request.load_flags = net::LOAD_DO_NOT_SEND_AUTH_DATA; |
2382 | 2382 |
2383 // Configure against proxy server "myproxy:70". | 2383 // Configure against proxy server "myproxy:70". |
2384 session_deps_.proxy_service.reset( | 2384 session_deps_.proxy_service.reset( |
2385 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); | 2385 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); |
2386 CapturingBoundNetLog log; | 2386 BoundTestNetLog log; |
2387 session_deps_.net_log = log.bound().net_log(); | 2387 session_deps_.net_log = log.bound().net_log(); |
2388 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 2388 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
2389 | 2389 |
2390 // Since we have proxy, should try to establish tunnel. | 2390 // Since we have proxy, should try to establish tunnel. |
2391 MockWrite data_writes1[] = { | 2391 MockWrite data_writes1[] = { |
2392 MockWrite( | 2392 MockWrite( |
2393 "CONNECT www.google.com:443 HTTP/1.1\r\n" | 2393 "CONNECT www.google.com:443 HTTP/1.1\r\n" |
2394 "Host: www.google.com\r\n" | 2394 "Host: www.google.com\r\n" |
2395 "Proxy-Connection: keep-alive\r\n\r\n"), | 2395 "Proxy-Connection: keep-alive\r\n\r\n"), |
2396 | 2396 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2432 TestCompletionCallback callback1; | 2432 TestCompletionCallback callback1; |
2433 | 2433 |
2434 scoped_ptr<HttpTransaction> trans( | 2434 scoped_ptr<HttpTransaction> trans( |
2435 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 2435 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
2436 | 2436 |
2437 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2437 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
2438 EXPECT_EQ(ERR_IO_PENDING, rv); | 2438 EXPECT_EQ(ERR_IO_PENDING, rv); |
2439 | 2439 |
2440 rv = callback1.WaitForResult(); | 2440 rv = callback1.WaitForResult(); |
2441 EXPECT_EQ(OK, rv); | 2441 EXPECT_EQ(OK, rv); |
2442 net::CapturingNetLog::CapturedEntryList entries; | 2442 net::TestNetLog::CapturedEntryList entries; |
2443 log.GetEntries(&entries); | 2443 log.GetEntries(&entries); |
2444 size_t pos = ExpectLogContainsSomewhere( | 2444 size_t pos = ExpectLogContainsSomewhere( |
2445 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, | 2445 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, |
2446 NetLog::PHASE_NONE); | 2446 NetLog::PHASE_NONE); |
2447 ExpectLogContainsSomewhere( | 2447 ExpectLogContainsSomewhere( |
2448 entries, pos, NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, | 2448 entries, pos, NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, |
2449 NetLog::PHASE_NONE); | 2449 NetLog::PHASE_NONE); |
2450 | 2450 |
2451 const HttpResponseInfo* response = trans->GetResponseInfo(); | 2451 const HttpResponseInfo* response = trans->GetResponseInfo(); |
2452 ASSERT_TRUE(response != NULL); | 2452 ASSERT_TRUE(response != NULL); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2494 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyNoKeepAliveHttp11) { | 2494 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyNoKeepAliveHttp11) { |
2495 HttpRequestInfo request; | 2495 HttpRequestInfo request; |
2496 request.method = "GET"; | 2496 request.method = "GET"; |
2497 request.url = GURL("https://www.google.com/"); | 2497 request.url = GURL("https://www.google.com/"); |
2498 // when the no authentication data flag is set. | 2498 // when the no authentication data flag is set. |
2499 request.load_flags = net::LOAD_DO_NOT_SEND_AUTH_DATA; | 2499 request.load_flags = net::LOAD_DO_NOT_SEND_AUTH_DATA; |
2500 | 2500 |
2501 // Configure against proxy server "myproxy:70". | 2501 // Configure against proxy server "myproxy:70". |
2502 session_deps_.proxy_service.reset( | 2502 session_deps_.proxy_service.reset( |
2503 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); | 2503 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); |
2504 CapturingBoundNetLog log; | 2504 BoundTestNetLog log; |
2505 session_deps_.net_log = log.bound().net_log(); | 2505 session_deps_.net_log = log.bound().net_log(); |
2506 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 2506 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
2507 | 2507 |
2508 // Since we have proxy, should try to establish tunnel. | 2508 // Since we have proxy, should try to establish tunnel. |
2509 MockWrite data_writes1[] = { | 2509 MockWrite data_writes1[] = { |
2510 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 2510 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
2511 "Host: www.google.com\r\n" | 2511 "Host: www.google.com\r\n" |
2512 "Proxy-Connection: keep-alive\r\n\r\n"), | 2512 "Proxy-Connection: keep-alive\r\n\r\n"), |
2513 | 2513 |
2514 // After calling trans->RestartWithAuth(), this is the request we should | 2514 // After calling trans->RestartWithAuth(), this is the request we should |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2548 TestCompletionCallback callback1; | 2548 TestCompletionCallback callback1; |
2549 | 2549 |
2550 scoped_ptr<HttpTransaction> trans( | 2550 scoped_ptr<HttpTransaction> trans( |
2551 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 2551 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
2552 | 2552 |
2553 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2553 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
2554 EXPECT_EQ(ERR_IO_PENDING, rv); | 2554 EXPECT_EQ(ERR_IO_PENDING, rv); |
2555 | 2555 |
2556 rv = callback1.WaitForResult(); | 2556 rv = callback1.WaitForResult(); |
2557 EXPECT_EQ(OK, rv); | 2557 EXPECT_EQ(OK, rv); |
2558 net::CapturingNetLog::CapturedEntryList entries; | 2558 net::TestNetLog::CapturedEntryList entries; |
2559 log.GetEntries(&entries); | 2559 log.GetEntries(&entries); |
2560 size_t pos = ExpectLogContainsSomewhere( | 2560 size_t pos = ExpectLogContainsSomewhere( |
2561 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, | 2561 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, |
2562 NetLog::PHASE_NONE); | 2562 NetLog::PHASE_NONE); |
2563 ExpectLogContainsSomewhere( | 2563 ExpectLogContainsSomewhere( |
2564 entries, pos, | 2564 entries, pos, |
2565 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, | 2565 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, |
2566 NetLog::PHASE_NONE); | 2566 NetLog::PHASE_NONE); |
2567 | 2567 |
2568 const HttpResponseInfo* response = trans->GetResponseInfo(); | 2568 const HttpResponseInfo* response = trans->GetResponseInfo(); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2611 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyKeepAliveHttp10) { | 2611 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyKeepAliveHttp10) { |
2612 HttpRequestInfo request; | 2612 HttpRequestInfo request; |
2613 request.method = "GET"; | 2613 request.method = "GET"; |
2614 request.url = GURL("https://www.google.com/"); | 2614 request.url = GURL("https://www.google.com/"); |
2615 // Ensure that proxy authentication is attempted even | 2615 // Ensure that proxy authentication is attempted even |
2616 // when the no authentication data flag is set. | 2616 // when the no authentication data flag is set. |
2617 request.load_flags = net::LOAD_DO_NOT_SEND_AUTH_DATA; | 2617 request.load_flags = net::LOAD_DO_NOT_SEND_AUTH_DATA; |
2618 | 2618 |
2619 // Configure against proxy server "myproxy:70". | 2619 // Configure against proxy server "myproxy:70". |
2620 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); | 2620 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); |
2621 CapturingBoundNetLog log; | 2621 BoundTestNetLog log; |
2622 session_deps_.net_log = log.bound().net_log(); | 2622 session_deps_.net_log = log.bound().net_log(); |
2623 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 2623 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
2624 | 2624 |
2625 scoped_ptr<HttpTransaction> trans( | 2625 scoped_ptr<HttpTransaction> trans( |
2626 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 2626 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
2627 | 2627 |
2628 // Since we have proxy, should try to establish tunnel. | 2628 // Since we have proxy, should try to establish tunnel. |
2629 MockWrite data_writes1[] = { | 2629 MockWrite data_writes1[] = { |
2630 MockWrite( | 2630 MockWrite( |
2631 "CONNECT www.google.com:443 HTTP/1.1\r\n" | 2631 "CONNECT www.google.com:443 HTTP/1.1\r\n" |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2664 data_writes1, arraysize(data_writes1)); | 2664 data_writes1, arraysize(data_writes1)); |
2665 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 2665 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
2666 | 2666 |
2667 TestCompletionCallback callback1; | 2667 TestCompletionCallback callback1; |
2668 | 2668 |
2669 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2669 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
2670 EXPECT_EQ(ERR_IO_PENDING, rv); | 2670 EXPECT_EQ(ERR_IO_PENDING, rv); |
2671 | 2671 |
2672 rv = callback1.WaitForResult(); | 2672 rv = callback1.WaitForResult(); |
2673 EXPECT_EQ(OK, rv); | 2673 EXPECT_EQ(OK, rv); |
2674 net::CapturingNetLog::CapturedEntryList entries; | 2674 net::TestNetLog::CapturedEntryList entries; |
2675 log.GetEntries(&entries); | 2675 log.GetEntries(&entries); |
2676 size_t pos = ExpectLogContainsSomewhere( | 2676 size_t pos = ExpectLogContainsSomewhere( |
2677 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, | 2677 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, |
2678 NetLog::PHASE_NONE); | 2678 NetLog::PHASE_NONE); |
2679 ExpectLogContainsSomewhere( | 2679 ExpectLogContainsSomewhere( |
2680 entries, pos, NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, | 2680 entries, pos, NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, |
2681 NetLog::PHASE_NONE); | 2681 NetLog::PHASE_NONE); |
2682 | 2682 |
2683 const HttpResponseInfo* response = trans->GetResponseInfo(); | 2683 const HttpResponseInfo* response = trans->GetResponseInfo(); |
2684 ASSERT_TRUE(response); | 2684 ASSERT_TRUE(response); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2718 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyKeepAliveHttp11) { | 2718 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyKeepAliveHttp11) { |
2719 HttpRequestInfo request; | 2719 HttpRequestInfo request; |
2720 request.method = "GET"; | 2720 request.method = "GET"; |
2721 request.url = GURL("https://www.google.com/"); | 2721 request.url = GURL("https://www.google.com/"); |
2722 // Ensure that proxy authentication is attempted even | 2722 // Ensure that proxy authentication is attempted even |
2723 // when the no authentication data flag is set. | 2723 // when the no authentication data flag is set. |
2724 request.load_flags = net::LOAD_DO_NOT_SEND_AUTH_DATA; | 2724 request.load_flags = net::LOAD_DO_NOT_SEND_AUTH_DATA; |
2725 | 2725 |
2726 // Configure against proxy server "myproxy:70". | 2726 // Configure against proxy server "myproxy:70". |
2727 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); | 2727 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); |
2728 CapturingBoundNetLog log; | 2728 BoundTestNetLog log; |
2729 session_deps_.net_log = log.bound().net_log(); | 2729 session_deps_.net_log = log.bound().net_log(); |
2730 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 2730 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
2731 | 2731 |
2732 scoped_ptr<HttpTransaction> trans( | 2732 scoped_ptr<HttpTransaction> trans( |
2733 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 2733 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
2734 | 2734 |
2735 // Since we have proxy, should try to establish tunnel. | 2735 // Since we have proxy, should try to establish tunnel. |
2736 MockWrite data_writes1[] = { | 2736 MockWrite data_writes1[] = { |
2737 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 2737 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
2738 "Host: www.google.com\r\n" | 2738 "Host: www.google.com\r\n" |
(...skipping 28 matching lines...) Expand all Loading... |
2767 data_writes1, arraysize(data_writes1)); | 2767 data_writes1, arraysize(data_writes1)); |
2768 session_deps_.socket_factory->AddSocketDataProvider(&data1); | 2768 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
2769 | 2769 |
2770 TestCompletionCallback callback1; | 2770 TestCompletionCallback callback1; |
2771 | 2771 |
2772 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2772 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
2773 EXPECT_EQ(ERR_IO_PENDING, rv); | 2773 EXPECT_EQ(ERR_IO_PENDING, rv); |
2774 | 2774 |
2775 rv = callback1.WaitForResult(); | 2775 rv = callback1.WaitForResult(); |
2776 EXPECT_EQ(OK, rv); | 2776 EXPECT_EQ(OK, rv); |
2777 net::CapturingNetLog::CapturedEntryList entries; | 2777 net::TestNetLog::CapturedEntryList entries; |
2778 log.GetEntries(&entries); | 2778 log.GetEntries(&entries); |
2779 size_t pos = ExpectLogContainsSomewhere( | 2779 size_t pos = ExpectLogContainsSomewhere( |
2780 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, | 2780 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, |
2781 NetLog::PHASE_NONE); | 2781 NetLog::PHASE_NONE); |
2782 ExpectLogContainsSomewhere( | 2782 ExpectLogContainsSomewhere( |
2783 entries, pos, | 2783 entries, pos, |
2784 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, | 2784 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, |
2785 NetLog::PHASE_NONE); | 2785 NetLog::PHASE_NONE); |
2786 | 2786 |
2787 const HttpResponseInfo* response = trans->GetResponseInfo(); | 2787 const HttpResponseInfo* response = trans->GetResponseInfo(); |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2986 // a non-authenticating proxy - there is nothing to indicate whether the | 2986 // a non-authenticating proxy - there is nothing to indicate whether the |
2987 // response came from the proxy or the server, so it is treated as if the proxy | 2987 // response came from the proxy or the server, so it is treated as if the proxy |
2988 // issued the challenge. | 2988 // issued the challenge. |
2989 TEST_P(HttpNetworkTransactionTest, | 2989 TEST_P(HttpNetworkTransactionTest, |
2990 HttpsServerRequestsProxyAuthThroughProxy) { | 2990 HttpsServerRequestsProxyAuthThroughProxy) { |
2991 HttpRequestInfo request; | 2991 HttpRequestInfo request; |
2992 request.method = "GET"; | 2992 request.method = "GET"; |
2993 request.url = GURL("https://www.google.com/"); | 2993 request.url = GURL("https://www.google.com/"); |
2994 | 2994 |
2995 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); | 2995 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); |
2996 CapturingBoundNetLog log; | 2996 BoundTestNetLog log; |
2997 session_deps_.net_log = log.bound().net_log(); | 2997 session_deps_.net_log = log.bound().net_log(); |
2998 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 2998 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
2999 | 2999 |
3000 // Since we have proxy, should try to establish tunnel. | 3000 // Since we have proxy, should try to establish tunnel. |
3001 MockWrite data_writes1[] = { | 3001 MockWrite data_writes1[] = { |
3002 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 3002 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
3003 "Host: www.google.com\r\n" | 3003 "Host: www.google.com\r\n" |
3004 "Proxy-Connection: keep-alive\r\n\r\n"), | 3004 "Proxy-Connection: keep-alive\r\n\r\n"), |
3005 | 3005 |
3006 MockWrite("GET / HTTP/1.1\r\n" | 3006 MockWrite("GET / HTTP/1.1\r\n" |
(...skipping 19 matching lines...) Expand all Loading... |
3026 TestCompletionCallback callback1; | 3026 TestCompletionCallback callback1; |
3027 | 3027 |
3028 scoped_ptr<HttpTransaction> trans( | 3028 scoped_ptr<HttpTransaction> trans( |
3029 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 3029 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
3030 | 3030 |
3031 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 3031 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
3032 EXPECT_EQ(ERR_IO_PENDING, rv); | 3032 EXPECT_EQ(ERR_IO_PENDING, rv); |
3033 | 3033 |
3034 rv = callback1.WaitForResult(); | 3034 rv = callback1.WaitForResult(); |
3035 EXPECT_EQ(ERR_UNEXPECTED_PROXY_AUTH, rv); | 3035 EXPECT_EQ(ERR_UNEXPECTED_PROXY_AUTH, rv); |
3036 net::CapturingNetLog::CapturedEntryList entries; | 3036 net::TestNetLog::CapturedEntryList entries; |
3037 log.GetEntries(&entries); | 3037 log.GetEntries(&entries); |
3038 size_t pos = ExpectLogContainsSomewhere( | 3038 size_t pos = ExpectLogContainsSomewhere( |
3039 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, | 3039 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, |
3040 NetLog::PHASE_NONE); | 3040 NetLog::PHASE_NONE); |
3041 ExpectLogContainsSomewhere( | 3041 ExpectLogContainsSomewhere( |
3042 entries, pos, | 3042 entries, pos, |
3043 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, | 3043 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, |
3044 NetLog::PHASE_NONE); | 3044 NetLog::PHASE_NONE); |
3045 } | 3045 } |
3046 | 3046 |
3047 // Test the load timing for HTTPS requests with an HTTP proxy. | 3047 // Test the load timing for HTTPS requests with an HTTP proxy. |
3048 TEST_P(HttpNetworkTransactionTest, HttpProxyLoadTimingNoPacTwoRequests) { | 3048 TEST_P(HttpNetworkTransactionTest, HttpProxyLoadTimingNoPacTwoRequests) { |
3049 HttpRequestInfo request1; | 3049 HttpRequestInfo request1; |
3050 request1.method = "GET"; | 3050 request1.method = "GET"; |
3051 request1.url = GURL("https://www.google.com/1"); | 3051 request1.url = GURL("https://www.google.com/1"); |
3052 | 3052 |
3053 HttpRequestInfo request2; | 3053 HttpRequestInfo request2; |
3054 request2.method = "GET"; | 3054 request2.method = "GET"; |
3055 request2.url = GURL("https://www.google.com/2"); | 3055 request2.url = GURL("https://www.google.com/2"); |
3056 | 3056 |
3057 // Configure against proxy server "myproxy:70". | 3057 // Configure against proxy server "myproxy:70". |
3058 session_deps_.proxy_service.reset( | 3058 session_deps_.proxy_service.reset( |
3059 ProxyService::CreateFixed("PROXY myproxy:70")); | 3059 ProxyService::CreateFixed("PROXY myproxy:70")); |
3060 CapturingBoundNetLog log; | 3060 BoundTestNetLog log; |
3061 session_deps_.net_log = log.bound().net_log(); | 3061 session_deps_.net_log = log.bound().net_log(); |
3062 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 3062 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
3063 | 3063 |
3064 // Since we have proxy, should try to establish tunnel. | 3064 // Since we have proxy, should try to establish tunnel. |
3065 MockWrite data_writes1[] = { | 3065 MockWrite data_writes1[] = { |
3066 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 3066 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
3067 "Host: www.google.com\r\n" | 3067 "Host: www.google.com\r\n" |
3068 "Proxy-Connection: keep-alive\r\n\r\n"), | 3068 "Proxy-Connection: keep-alive\r\n\r\n"), |
3069 | 3069 |
3070 MockWrite("GET /1 HTTP/1.1\r\n" | 3070 MockWrite("GET /1 HTTP/1.1\r\n" |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3148 request1.method = "GET"; | 3148 request1.method = "GET"; |
3149 request1.url = GURL("https://www.google.com/1"); | 3149 request1.url = GURL("https://www.google.com/1"); |
3150 | 3150 |
3151 HttpRequestInfo request2; | 3151 HttpRequestInfo request2; |
3152 request2.method = "GET"; | 3152 request2.method = "GET"; |
3153 request2.url = GURL("https://www.google.com/2"); | 3153 request2.url = GURL("https://www.google.com/2"); |
3154 | 3154 |
3155 // Configure against proxy server "myproxy:70". | 3155 // Configure against proxy server "myproxy:70". |
3156 session_deps_.proxy_service.reset( | 3156 session_deps_.proxy_service.reset( |
3157 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); | 3157 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); |
3158 CapturingBoundNetLog log; | 3158 BoundTestNetLog log; |
3159 session_deps_.net_log = log.bound().net_log(); | 3159 session_deps_.net_log = log.bound().net_log(); |
3160 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 3160 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
3161 | 3161 |
3162 // Since we have proxy, should try to establish tunnel. | 3162 // Since we have proxy, should try to establish tunnel. |
3163 MockWrite data_writes1[] = { | 3163 MockWrite data_writes1[] = { |
3164 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 3164 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
3165 "Host: www.google.com\r\n" | 3165 "Host: www.google.com\r\n" |
3166 "Proxy-Connection: keep-alive\r\n\r\n"), | 3166 "Proxy-Connection: keep-alive\r\n\r\n"), |
3167 | 3167 |
3168 MockWrite("GET /1 HTTP/1.1\r\n" | 3168 MockWrite("GET /1 HTTP/1.1\r\n" |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3243 | 3243 |
3244 // Test a simple get through an HTTPS Proxy. | 3244 // Test a simple get through an HTTPS Proxy. |
3245 TEST_P(HttpNetworkTransactionTest, HttpsProxyGet) { | 3245 TEST_P(HttpNetworkTransactionTest, HttpsProxyGet) { |
3246 HttpRequestInfo request; | 3246 HttpRequestInfo request; |
3247 request.method = "GET"; | 3247 request.method = "GET"; |
3248 request.url = GURL("http://www.google.com/"); | 3248 request.url = GURL("http://www.google.com/"); |
3249 | 3249 |
3250 // Configure against https proxy server "proxy:70". | 3250 // Configure against https proxy server "proxy:70". |
3251 session_deps_.proxy_service.reset(ProxyService::CreateFixed( | 3251 session_deps_.proxy_service.reset(ProxyService::CreateFixed( |
3252 "https://proxy:70")); | 3252 "https://proxy:70")); |
3253 CapturingBoundNetLog log; | 3253 BoundTestNetLog log; |
3254 session_deps_.net_log = log.bound().net_log(); | 3254 session_deps_.net_log = log.bound().net_log(); |
3255 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 3255 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
3256 | 3256 |
3257 // Since we have proxy, should use full url | 3257 // Since we have proxy, should use full url |
3258 MockWrite data_writes1[] = { | 3258 MockWrite data_writes1[] = { |
3259 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" | 3259 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" |
3260 "Host: www.google.com\r\n" | 3260 "Host: www.google.com\r\n" |
3261 "Proxy-Connection: keep-alive\r\n\r\n"), | 3261 "Proxy-Connection: keep-alive\r\n\r\n"), |
3262 }; | 3262 }; |
3263 | 3263 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3305 // Test a SPDY get through an HTTPS Proxy. | 3305 // Test a SPDY get through an HTTPS Proxy. |
3306 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGet) { | 3306 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGet) { |
3307 HttpRequestInfo request; | 3307 HttpRequestInfo request; |
3308 request.method = "GET"; | 3308 request.method = "GET"; |
3309 request.url = GURL("http://www.google.com/"); | 3309 request.url = GURL("http://www.google.com/"); |
3310 request.load_flags = 0; | 3310 request.load_flags = 0; |
3311 | 3311 |
3312 // Configure against https proxy server "proxy:70". | 3312 // Configure against https proxy server "proxy:70". |
3313 session_deps_.proxy_service.reset(ProxyService::CreateFixed( | 3313 session_deps_.proxy_service.reset(ProxyService::CreateFixed( |
3314 "https://proxy:70")); | 3314 "https://proxy:70")); |
3315 CapturingBoundNetLog log; | 3315 BoundTestNetLog log; |
3316 session_deps_.net_log = log.bound().net_log(); | 3316 session_deps_.net_log = log.bound().net_log(); |
3317 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 3317 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
3318 | 3318 |
3319 // fetch http://www.google.com/ via SPDY | 3319 // fetch http://www.google.com/ via SPDY |
3320 scoped_ptr<SpdyFrame> req( | 3320 scoped_ptr<SpdyFrame> req( |
3321 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); | 3321 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); |
3322 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; | 3322 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
3323 | 3323 |
3324 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); | 3324 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
3325 scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); | 3325 scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3370 // Regression test for crbug.com/334413. | 3370 // Regression test for crbug.com/334413. |
3371 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGetWithSessionRace) { | 3371 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGetWithSessionRace) { |
3372 HttpRequestInfo request; | 3372 HttpRequestInfo request; |
3373 request.method = "GET"; | 3373 request.method = "GET"; |
3374 request.url = GURL("http://www.google.com/"); | 3374 request.url = GURL("http://www.google.com/"); |
3375 request.load_flags = 0; | 3375 request.load_flags = 0; |
3376 | 3376 |
3377 // Configure SPDY proxy server "proxy:70". | 3377 // Configure SPDY proxy server "proxy:70". |
3378 session_deps_.proxy_service.reset( | 3378 session_deps_.proxy_service.reset( |
3379 ProxyService::CreateFixed("https://proxy:70")); | 3379 ProxyService::CreateFixed("https://proxy:70")); |
3380 CapturingBoundNetLog log; | 3380 BoundTestNetLog log; |
3381 session_deps_.net_log = log.bound().net_log(); | 3381 session_deps_.net_log = log.bound().net_log(); |
3382 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 3382 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
3383 | 3383 |
3384 // Fetch http://www.google.com/ through the SPDY proxy. | 3384 // Fetch http://www.google.com/ through the SPDY proxy. |
3385 scoped_ptr<SpdyFrame> req( | 3385 scoped_ptr<SpdyFrame> req( |
3386 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); | 3386 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); |
3387 MockWrite spdy_writes[] = {CreateMockWrite(*req)}; | 3387 MockWrite spdy_writes[] = {CreateMockWrite(*req)}; |
3388 | 3388 |
3389 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); | 3389 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
3390 scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); | 3390 scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3444 // Test a SPDY get through an HTTPS Proxy. | 3444 // Test a SPDY get through an HTTPS Proxy. |
3445 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGetWithProxyAuth) { | 3445 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGetWithProxyAuth) { |
3446 HttpRequestInfo request; | 3446 HttpRequestInfo request; |
3447 request.method = "GET"; | 3447 request.method = "GET"; |
3448 request.url = GURL("http://www.google.com/"); | 3448 request.url = GURL("http://www.google.com/"); |
3449 request.load_flags = 0; | 3449 request.load_flags = 0; |
3450 | 3450 |
3451 // Configure against https proxy server "myproxy:70". | 3451 // Configure against https proxy server "myproxy:70". |
3452 session_deps_.proxy_service.reset( | 3452 session_deps_.proxy_service.reset( |
3453 ProxyService::CreateFixed("https://myproxy:70")); | 3453 ProxyService::CreateFixed("https://myproxy:70")); |
3454 CapturingBoundNetLog log; | 3454 BoundTestNetLog log; |
3455 session_deps_.net_log = log.bound().net_log(); | 3455 session_deps_.net_log = log.bound().net_log(); |
3456 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 3456 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
3457 | 3457 |
3458 // The first request will be a bare GET, the second request will be a | 3458 // The first request will be a bare GET, the second request will be a |
3459 // GET with a Proxy-Authorization header. | 3459 // GET with a Proxy-Authorization header. |
3460 scoped_ptr<SpdyFrame> req_get( | 3460 scoped_ptr<SpdyFrame> req_get( |
3461 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); | 3461 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); |
3462 const char* const kExtraAuthorizationHeaders[] = { | 3462 const char* const kExtraAuthorizationHeaders[] = { |
3463 "proxy-authorization", "Basic Zm9vOmJhcg==" | 3463 "proxy-authorization", "Basic Zm9vOmJhcg==" |
3464 }; | 3464 }; |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3547 // Test a SPDY CONNECT through an HTTPS Proxy to an HTTPS (non-SPDY) Server. | 3547 // Test a SPDY CONNECT through an HTTPS Proxy to an HTTPS (non-SPDY) Server. |
3548 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectHttps) { | 3548 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectHttps) { |
3549 HttpRequestInfo request; | 3549 HttpRequestInfo request; |
3550 request.method = "GET"; | 3550 request.method = "GET"; |
3551 request.url = GURL("https://www.google.com/"); | 3551 request.url = GURL("https://www.google.com/"); |
3552 request.load_flags = 0; | 3552 request.load_flags = 0; |
3553 | 3553 |
3554 // Configure against https proxy server "proxy:70". | 3554 // Configure against https proxy server "proxy:70". |
3555 session_deps_.proxy_service.reset(ProxyService::CreateFixed( | 3555 session_deps_.proxy_service.reset(ProxyService::CreateFixed( |
3556 "https://proxy:70")); | 3556 "https://proxy:70")); |
3557 CapturingBoundNetLog log; | 3557 BoundTestNetLog log; |
3558 session_deps_.net_log = log.bound().net_log(); | 3558 session_deps_.net_log = log.bound().net_log(); |
3559 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 3559 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
3560 | 3560 |
3561 scoped_ptr<HttpTransaction> trans( | 3561 scoped_ptr<HttpTransaction> trans( |
3562 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 3562 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
3563 | 3563 |
3564 // CONNECT to www.google.com:443 via SPDY | 3564 // CONNECT to www.google.com:443 via SPDY |
3565 scoped_ptr<SpdyFrame> connect(spdy_util_.ConstructSpdyConnect( | 3565 scoped_ptr<SpdyFrame> connect(spdy_util_.ConstructSpdyConnect( |
3566 NULL, 0, 1, LOWEST, HostPortPair("www.google.com", 443))); | 3566 NULL, 0, 1, LOWEST, HostPortPair("www.google.com", 443))); |
3567 // fetch https://www.google.com/ via HTTP | 3567 // fetch https://www.google.com/ via HTTP |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3634 // Test a SPDY CONNECT through an HTTPS Proxy to a SPDY server. | 3634 // Test a SPDY CONNECT through an HTTPS Proxy to a SPDY server. |
3635 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectSpdy) { | 3635 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectSpdy) { |
3636 HttpRequestInfo request; | 3636 HttpRequestInfo request; |
3637 request.method = "GET"; | 3637 request.method = "GET"; |
3638 request.url = GURL("https://www.google.com/"); | 3638 request.url = GURL("https://www.google.com/"); |
3639 request.load_flags = 0; | 3639 request.load_flags = 0; |
3640 | 3640 |
3641 // Configure against https proxy server "proxy:70". | 3641 // Configure against https proxy server "proxy:70". |
3642 session_deps_.proxy_service.reset(ProxyService::CreateFixed( | 3642 session_deps_.proxy_service.reset(ProxyService::CreateFixed( |
3643 "https://proxy:70")); | 3643 "https://proxy:70")); |
3644 CapturingBoundNetLog log; | 3644 BoundTestNetLog log; |
3645 session_deps_.net_log = log.bound().net_log(); | 3645 session_deps_.net_log = log.bound().net_log(); |
3646 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 3646 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
3647 | 3647 |
3648 scoped_ptr<HttpTransaction> trans( | 3648 scoped_ptr<HttpTransaction> trans( |
3649 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 3649 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
3650 | 3650 |
3651 // CONNECT to www.google.com:443 via SPDY | 3651 // CONNECT to www.google.com:443 via SPDY |
3652 scoped_ptr<SpdyFrame> connect(spdy_util_.ConstructSpdyConnect( | 3652 scoped_ptr<SpdyFrame> connect(spdy_util_.ConstructSpdyConnect( |
3653 NULL, 0, 1, LOWEST, HostPortPair("www.google.com", 443))); | 3653 NULL, 0, 1, LOWEST, HostPortPair("www.google.com", 443))); |
3654 // fetch https://www.google.com/ via SPDY | 3654 // fetch https://www.google.com/ via SPDY |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3723 // Test a SPDY CONNECT failure through an HTTPS Proxy. | 3723 // Test a SPDY CONNECT failure through an HTTPS Proxy. |
3724 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectFailure) { | 3724 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectFailure) { |
3725 HttpRequestInfo request; | 3725 HttpRequestInfo request; |
3726 request.method = "GET"; | 3726 request.method = "GET"; |
3727 request.url = GURL("https://www.google.com/"); | 3727 request.url = GURL("https://www.google.com/"); |
3728 request.load_flags = 0; | 3728 request.load_flags = 0; |
3729 | 3729 |
3730 // Configure against https proxy server "proxy:70". | 3730 // Configure against https proxy server "proxy:70". |
3731 session_deps_.proxy_service.reset(ProxyService::CreateFixed( | 3731 session_deps_.proxy_service.reset(ProxyService::CreateFixed( |
3732 "https://proxy:70")); | 3732 "https://proxy:70")); |
3733 CapturingBoundNetLog log; | 3733 BoundTestNetLog log; |
3734 session_deps_.net_log = log.bound().net_log(); | 3734 session_deps_.net_log = log.bound().net_log(); |
3735 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 3735 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
3736 | 3736 |
3737 scoped_ptr<HttpTransaction> trans( | 3737 scoped_ptr<HttpTransaction> trans( |
3738 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 3738 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
3739 | 3739 |
3740 // CONNECT to www.google.com:443 via SPDY | 3740 // CONNECT to www.google.com:443 via SPDY |
3741 scoped_ptr<SpdyFrame> connect(spdy_util_.ConstructSpdyConnect( | 3741 scoped_ptr<SpdyFrame> connect(spdy_util_.ConstructSpdyConnect( |
3742 NULL, 0, 1, LOWEST, HostPortPair("www.google.com", 443))); | 3742 NULL, 0, 1, LOWEST, HostPortPair("www.google.com", 443))); |
3743 scoped_ptr<SpdyFrame> get( | 3743 scoped_ptr<SpdyFrame> get( |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3778 // TODO(ttuttle): Anything else to check here? | 3778 // TODO(ttuttle): Anything else to check here? |
3779 } | 3779 } |
3780 | 3780 |
3781 // Test load timing in the case of two HTTPS (non-SPDY) requests through a SPDY | 3781 // Test load timing in the case of two HTTPS (non-SPDY) requests through a SPDY |
3782 // HTTPS Proxy to different servers. | 3782 // HTTPS Proxy to different servers. |
3783 TEST_P(HttpNetworkTransactionTest, | 3783 TEST_P(HttpNetworkTransactionTest, |
3784 HttpsProxySpdyConnectHttpsLoadTimingTwoRequestsTwoServers) { | 3784 HttpsProxySpdyConnectHttpsLoadTimingTwoRequestsTwoServers) { |
3785 // Configure against https proxy server "proxy:70". | 3785 // Configure against https proxy server "proxy:70". |
3786 session_deps_.proxy_service.reset(ProxyService::CreateFixed( | 3786 session_deps_.proxy_service.reset(ProxyService::CreateFixed( |
3787 "https://proxy:70")); | 3787 "https://proxy:70")); |
3788 CapturingBoundNetLog log; | 3788 BoundTestNetLog log; |
3789 session_deps_.net_log = log.bound().net_log(); | 3789 session_deps_.net_log = log.bound().net_log(); |
3790 scoped_refptr<HttpNetworkSession> session( | 3790 scoped_refptr<HttpNetworkSession> session( |
3791 SpdySessionDependencies::SpdyCreateSessionDeterministic(&session_deps_)); | 3791 SpdySessionDependencies::SpdyCreateSessionDeterministic(&session_deps_)); |
3792 | 3792 |
3793 HttpRequestInfo request1; | 3793 HttpRequestInfo request1; |
3794 request1.method = "GET"; | 3794 request1.method = "GET"; |
3795 request1.url = GURL("https://www.google.com/"); | 3795 request1.url = GURL("https://www.google.com/"); |
3796 request1.load_flags = 0; | 3796 request1.load_flags = 0; |
3797 | 3797 |
3798 HttpRequestInfo request2; | 3798 HttpRequestInfo request2; |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3928 EXPECT_EQ(2, trans2->Read(buf.get(), 256, callback.callback())); | 3928 EXPECT_EQ(2, trans2->Read(buf.get(), 256, callback.callback())); |
3929 } | 3929 } |
3930 | 3930 |
3931 // Test load timing in the case of two HTTPS (non-SPDY) requests through a SPDY | 3931 // Test load timing in the case of two HTTPS (non-SPDY) requests through a SPDY |
3932 // HTTPS Proxy to the same server. | 3932 // HTTPS Proxy to the same server. |
3933 TEST_P(HttpNetworkTransactionTest, | 3933 TEST_P(HttpNetworkTransactionTest, |
3934 HttpsProxySpdyConnectHttpsLoadTimingTwoRequestsSameServer) { | 3934 HttpsProxySpdyConnectHttpsLoadTimingTwoRequestsSameServer) { |
3935 // Configure against https proxy server "proxy:70". | 3935 // Configure against https proxy server "proxy:70". |
3936 session_deps_.proxy_service.reset(ProxyService::CreateFixed( | 3936 session_deps_.proxy_service.reset(ProxyService::CreateFixed( |
3937 "https://proxy:70")); | 3937 "https://proxy:70")); |
3938 CapturingBoundNetLog log; | 3938 BoundTestNetLog log; |
3939 session_deps_.net_log = log.bound().net_log(); | 3939 session_deps_.net_log = log.bound().net_log(); |
3940 scoped_refptr<HttpNetworkSession> session( | 3940 scoped_refptr<HttpNetworkSession> session( |
3941 SpdySessionDependencies::SpdyCreateSessionDeterministic(&session_deps_)); | 3941 SpdySessionDependencies::SpdyCreateSessionDeterministic(&session_deps_)); |
3942 | 3942 |
3943 HttpRequestInfo request1; | 3943 HttpRequestInfo request1; |
3944 request1.method = "GET"; | 3944 request1.method = "GET"; |
3945 request1.url = GURL("https://www.google.com/"); | 3945 request1.url = GURL("https://www.google.com/"); |
3946 request1.load_flags = 0; | 3946 request1.load_flags = 0; |
3947 | 3947 |
3948 HttpRequestInfo request2; | 3948 HttpRequestInfo request2; |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4059 EXPECT_EQ(2, trans2->Read(buf.get(), 256, callback.callback())); | 4059 EXPECT_EQ(2, trans2->Read(buf.get(), 256, callback.callback())); |
4060 } | 4060 } |
4061 | 4061 |
4062 // Test load timing in the case of of two HTTP requests through a SPDY HTTPS | 4062 // Test load timing in the case of of two HTTP requests through a SPDY HTTPS |
4063 // Proxy to different servers. | 4063 // Proxy to different servers. |
4064 TEST_P(HttpNetworkTransactionTest, | 4064 TEST_P(HttpNetworkTransactionTest, |
4065 HttpsProxySpdyLoadTimingTwoHttpRequests) { | 4065 HttpsProxySpdyLoadTimingTwoHttpRequests) { |
4066 // Configure against https proxy server "proxy:70". | 4066 // Configure against https proxy server "proxy:70". |
4067 session_deps_.proxy_service.reset(ProxyService::CreateFixed( | 4067 session_deps_.proxy_service.reset(ProxyService::CreateFixed( |
4068 "https://proxy:70")); | 4068 "https://proxy:70")); |
4069 CapturingBoundNetLog log; | 4069 BoundTestNetLog log; |
4070 session_deps_.net_log = log.bound().net_log(); | 4070 session_deps_.net_log = log.bound().net_log(); |
4071 scoped_refptr<HttpNetworkSession> session( | 4071 scoped_refptr<HttpNetworkSession> session( |
4072 SpdySessionDependencies::SpdyCreateSessionDeterministic(&session_deps_)); | 4072 SpdySessionDependencies::SpdyCreateSessionDeterministic(&session_deps_)); |
4073 | 4073 |
4074 HttpRequestInfo request1; | 4074 HttpRequestInfo request1; |
4075 request1.method = "GET"; | 4075 request1.method = "GET"; |
4076 request1.url = GURL("http://www.google.com/"); | 4076 request1.url = GURL("http://www.google.com/"); |
4077 request1.load_flags = 0; | 4077 request1.load_flags = 0; |
4078 | 4078 |
4079 HttpRequestInfo request2; | 4079 HttpRequestInfo request2; |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4177 TEST_P(HttpNetworkTransactionTest, HttpsProxyAuthRetry) { | 4177 TEST_P(HttpNetworkTransactionTest, HttpsProxyAuthRetry) { |
4178 HttpRequestInfo request; | 4178 HttpRequestInfo request; |
4179 request.method = "GET"; | 4179 request.method = "GET"; |
4180 request.url = GURL("http://www.google.com/"); | 4180 request.url = GURL("http://www.google.com/"); |
4181 // when the no authentication data flag is set. | 4181 // when the no authentication data flag is set. |
4182 request.load_flags = net::LOAD_DO_NOT_SEND_AUTH_DATA; | 4182 request.load_flags = net::LOAD_DO_NOT_SEND_AUTH_DATA; |
4183 | 4183 |
4184 // Configure against https proxy server "myproxy:70". | 4184 // Configure against https proxy server "myproxy:70". |
4185 session_deps_.proxy_service.reset( | 4185 session_deps_.proxy_service.reset( |
4186 ProxyService::CreateFixed("https://myproxy:70")); | 4186 ProxyService::CreateFixed("https://myproxy:70")); |
4187 CapturingBoundNetLog log; | 4187 BoundTestNetLog log; |
4188 session_deps_.net_log = log.bound().net_log(); | 4188 session_deps_.net_log = log.bound().net_log(); |
4189 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 4189 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
4190 | 4190 |
4191 // Since we have proxy, should use full url | 4191 // Since we have proxy, should use full url |
4192 MockWrite data_writes1[] = { | 4192 MockWrite data_writes1[] = { |
4193 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" | 4193 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" |
4194 "Host: www.google.com\r\n" | 4194 "Host: www.google.com\r\n" |
4195 "Proxy-Connection: keep-alive\r\n\r\n"), | 4195 "Proxy-Connection: keep-alive\r\n\r\n"), |
4196 | 4196 |
4197 // After calling trans->RestartWithAuth(), this is the request we should | 4197 // After calling trans->RestartWithAuth(), this is the request we should |
(...skipping 2169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6367 ASSERT_TRUE(response != NULL); | 6367 ASSERT_TRUE(response != NULL); |
6368 EXPECT_EQ(100, response->headers->GetContentLength()); | 6368 EXPECT_EQ(100, response->headers->GetContentLength()); |
6369 } | 6369 } |
6370 } | 6370 } |
6371 | 6371 |
6372 | 6372 |
6373 // Test HTTPS connections to a site, going through an HTTPS proxy | 6373 // Test HTTPS connections to a site, going through an HTTPS proxy |
6374 TEST_P(HttpNetworkTransactionTest, HTTPSViaHttpsProxy) { | 6374 TEST_P(HttpNetworkTransactionTest, HTTPSViaHttpsProxy) { |
6375 session_deps_.proxy_service.reset( | 6375 session_deps_.proxy_service.reset( |
6376 ProxyService::CreateFixedFromPacResult("HTTPS proxy:70")); | 6376 ProxyService::CreateFixedFromPacResult("HTTPS proxy:70")); |
6377 CapturingNetLog net_log; | 6377 TestNetLog net_log; |
6378 session_deps_.net_log = &net_log; | 6378 session_deps_.net_log = &net_log; |
6379 | 6379 |
6380 HttpRequestInfo request; | 6380 HttpRequestInfo request; |
6381 request.method = "GET"; | 6381 request.method = "GET"; |
6382 request.url = GURL("https://www.google.com/"); | 6382 request.url = GURL("https://www.google.com/"); |
6383 request.load_flags = 0; | 6383 request.load_flags = 0; |
6384 | 6384 |
6385 MockWrite data_writes[] = { | 6385 MockWrite data_writes[] = { |
6386 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 6386 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
6387 "Host: www.google.com\r\n" | 6387 "Host: www.google.com\r\n" |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6431 LoadTimingInfo load_timing_info; | 6431 LoadTimingInfo load_timing_info; |
6432 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); | 6432 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); |
6433 TestLoadTimingNotReusedWithPac(load_timing_info, | 6433 TestLoadTimingNotReusedWithPac(load_timing_info, |
6434 CONNECT_TIMING_HAS_SSL_TIMES); | 6434 CONNECT_TIMING_HAS_SSL_TIMES); |
6435 } | 6435 } |
6436 | 6436 |
6437 // Test an HTTPS Proxy's ability to redirect a CONNECT request | 6437 // Test an HTTPS Proxy's ability to redirect a CONNECT request |
6438 TEST_P(HttpNetworkTransactionTest, RedirectOfHttpsConnectViaHttpsProxy) { | 6438 TEST_P(HttpNetworkTransactionTest, RedirectOfHttpsConnectViaHttpsProxy) { |
6439 session_deps_.proxy_service.reset( | 6439 session_deps_.proxy_service.reset( |
6440 ProxyService::CreateFixedFromPacResult("HTTPS proxy:70")); | 6440 ProxyService::CreateFixedFromPacResult("HTTPS proxy:70")); |
6441 CapturingNetLog net_log; | 6441 TestNetLog net_log; |
6442 session_deps_.net_log = &net_log; | 6442 session_deps_.net_log = &net_log; |
6443 | 6443 |
6444 HttpRequestInfo request; | 6444 HttpRequestInfo request; |
6445 request.method = "GET"; | 6445 request.method = "GET"; |
6446 request.url = GURL("https://www.google.com/"); | 6446 request.url = GURL("https://www.google.com/"); |
6447 request.load_flags = 0; | 6447 request.load_flags = 0; |
6448 | 6448 |
6449 MockWrite data_writes[] = { | 6449 MockWrite data_writes[] = { |
6450 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 6450 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
6451 "Host: www.google.com\r\n" | 6451 "Host: www.google.com\r\n" |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6684 TEST_P(HttpNetworkTransactionTest, BasicAuthSpdyProxy) { | 6684 TEST_P(HttpNetworkTransactionTest, BasicAuthSpdyProxy) { |
6685 HttpRequestInfo request; | 6685 HttpRequestInfo request; |
6686 request.method = "GET"; | 6686 request.method = "GET"; |
6687 request.url = GURL("https://www.google.com/"); | 6687 request.url = GURL("https://www.google.com/"); |
6688 // when the no authentication data flag is set. | 6688 // when the no authentication data flag is set. |
6689 request.load_flags = net::LOAD_DO_NOT_SEND_AUTH_DATA; | 6689 request.load_flags = net::LOAD_DO_NOT_SEND_AUTH_DATA; |
6690 | 6690 |
6691 // Configure against https proxy server "myproxy:70". | 6691 // Configure against https proxy server "myproxy:70". |
6692 session_deps_.proxy_service.reset( | 6692 session_deps_.proxy_service.reset( |
6693 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:70")); | 6693 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:70")); |
6694 CapturingBoundNetLog log; | 6694 BoundTestNetLog log; |
6695 session_deps_.net_log = log.bound().net_log(); | 6695 session_deps_.net_log = log.bound().net_log(); |
6696 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 6696 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
6697 | 6697 |
6698 // Since we have proxy, should try to establish tunnel. | 6698 // Since we have proxy, should try to establish tunnel. |
6699 scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyConnect( | 6699 scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyConnect( |
6700 NULL, 0, 1, LOWEST, HostPortPair("www.google.com", 443))); | 6700 NULL, 0, 1, LOWEST, HostPortPair("www.google.com", 443))); |
6701 scoped_ptr<SpdyFrame> rst( | 6701 scoped_ptr<SpdyFrame> rst( |
6702 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); | 6702 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); |
6703 | 6703 |
6704 // After calling trans->RestartWithAuth(), this is the request we should | 6704 // After calling trans->RestartWithAuth(), this is the request we should |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6764 TestCompletionCallback callback1; | 6764 TestCompletionCallback callback1; |
6765 | 6765 |
6766 scoped_ptr<HttpTransaction> trans( | 6766 scoped_ptr<HttpTransaction> trans( |
6767 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 6767 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
6768 | 6768 |
6769 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 6769 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
6770 EXPECT_EQ(ERR_IO_PENDING, rv); | 6770 EXPECT_EQ(ERR_IO_PENDING, rv); |
6771 | 6771 |
6772 rv = callback1.WaitForResult(); | 6772 rv = callback1.WaitForResult(); |
6773 EXPECT_EQ(OK, rv); | 6773 EXPECT_EQ(OK, rv); |
6774 net::CapturingNetLog::CapturedEntryList entries; | 6774 net::TestNetLog::CapturedEntryList entries; |
6775 log.GetEntries(&entries); | 6775 log.GetEntries(&entries); |
6776 size_t pos = ExpectLogContainsSomewhere( | 6776 size_t pos = ExpectLogContainsSomewhere( |
6777 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, | 6777 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, |
6778 NetLog::PHASE_NONE); | 6778 NetLog::PHASE_NONE); |
6779 ExpectLogContainsSomewhere( | 6779 ExpectLogContainsSomewhere( |
6780 entries, pos, | 6780 entries, pos, |
6781 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, | 6781 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, |
6782 NetLog::PHASE_NONE); | 6782 NetLog::PHASE_NONE); |
6783 | 6783 |
6784 const HttpResponseInfo* response = trans->GetResponseInfo(); | 6784 const HttpResponseInfo* response = trans->GetResponseInfo(); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6825 HttpRequestInfo push_request; | 6825 HttpRequestInfo push_request; |
6826 | 6826 |
6827 request.method = "GET"; | 6827 request.method = "GET"; |
6828 request.url = GURL("http://www.google.com/"); | 6828 request.url = GURL("http://www.google.com/"); |
6829 push_request.method = "GET"; | 6829 push_request.method = "GET"; |
6830 push_request.url = GURL("http://www.another-origin.com/foo.dat"); | 6830 push_request.url = GURL("http://www.another-origin.com/foo.dat"); |
6831 | 6831 |
6832 // Configure against https proxy server "myproxy:70". | 6832 // Configure against https proxy server "myproxy:70". |
6833 session_deps_.proxy_service.reset( | 6833 session_deps_.proxy_service.reset( |
6834 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:70")); | 6834 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:70")); |
6835 CapturingBoundNetLog log; | 6835 BoundTestNetLog log; |
6836 session_deps_.net_log = log.bound().net_log(); | 6836 session_deps_.net_log = log.bound().net_log(); |
6837 | 6837 |
6838 // Enable cross-origin push. | 6838 // Enable cross-origin push. |
6839 session_deps_.trusted_spdy_proxy = "myproxy:70"; | 6839 session_deps_.trusted_spdy_proxy = "myproxy:70"; |
6840 | 6840 |
6841 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 6841 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
6842 | 6842 |
6843 scoped_ptr<SpdyFrame> stream1_syn( | 6843 scoped_ptr<SpdyFrame> stream1_syn( |
6844 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); | 6844 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); |
6845 | 6845 |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6940 // Test that an explicitly trusted SPDY proxy cannot push HTTPS content. | 6940 // Test that an explicitly trusted SPDY proxy cannot push HTTPS content. |
6941 TEST_P(HttpNetworkTransactionTest, CrossOriginProxyPushCorrectness) { | 6941 TEST_P(HttpNetworkTransactionTest, CrossOriginProxyPushCorrectness) { |
6942 HttpRequestInfo request; | 6942 HttpRequestInfo request; |
6943 | 6943 |
6944 request.method = "GET"; | 6944 request.method = "GET"; |
6945 request.url = GURL("http://www.google.com/"); | 6945 request.url = GURL("http://www.google.com/"); |
6946 | 6946 |
6947 // Configure against https proxy server "myproxy:70". | 6947 // Configure against https proxy server "myproxy:70". |
6948 session_deps_.proxy_service.reset( | 6948 session_deps_.proxy_service.reset( |
6949 ProxyService::CreateFixed("https://myproxy:70")); | 6949 ProxyService::CreateFixed("https://myproxy:70")); |
6950 CapturingBoundNetLog log; | 6950 BoundTestNetLog log; |
6951 session_deps_.net_log = log.bound().net_log(); | 6951 session_deps_.net_log = log.bound().net_log(); |
6952 | 6952 |
6953 // Enable cross-origin push. | 6953 // Enable cross-origin push. |
6954 session_deps_.trusted_spdy_proxy = "myproxy:70"; | 6954 session_deps_.trusted_spdy_proxy = "myproxy:70"; |
6955 | 6955 |
6956 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 6956 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
6957 | 6957 |
6958 scoped_ptr<SpdyFrame> stream1_syn( | 6958 scoped_ptr<SpdyFrame> stream1_syn( |
6959 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); | 6959 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); |
6960 | 6960 |
(...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7491 } | 7491 } |
7492 | 7492 |
7493 TEST_P(HttpNetworkTransactionTest, SOCKS4_HTTP_GET) { | 7493 TEST_P(HttpNetworkTransactionTest, SOCKS4_HTTP_GET) { |
7494 HttpRequestInfo request; | 7494 HttpRequestInfo request; |
7495 request.method = "GET"; | 7495 request.method = "GET"; |
7496 request.url = GURL("http://www.google.com/"); | 7496 request.url = GURL("http://www.google.com/"); |
7497 request.load_flags = 0; | 7497 request.load_flags = 0; |
7498 | 7498 |
7499 session_deps_.proxy_service.reset( | 7499 session_deps_.proxy_service.reset( |
7500 ProxyService::CreateFixedFromPacResult("SOCKS myproxy:1080")); | 7500 ProxyService::CreateFixedFromPacResult("SOCKS myproxy:1080")); |
7501 CapturingNetLog net_log; | 7501 TestNetLog net_log; |
7502 session_deps_.net_log = &net_log; | 7502 session_deps_.net_log = &net_log; |
7503 | 7503 |
7504 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 7504 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
7505 scoped_ptr<HttpTransaction> trans( | 7505 scoped_ptr<HttpTransaction> trans( |
7506 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 7506 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
7507 | 7507 |
7508 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 }; | 7508 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 }; |
7509 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; | 7509 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; |
7510 | 7510 |
7511 MockWrite data_writes[] = { | 7511 MockWrite data_writes[] = { |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7550 } | 7550 } |
7551 | 7551 |
7552 TEST_P(HttpNetworkTransactionTest, SOCKS4_SSL_GET) { | 7552 TEST_P(HttpNetworkTransactionTest, SOCKS4_SSL_GET) { |
7553 HttpRequestInfo request; | 7553 HttpRequestInfo request; |
7554 request.method = "GET"; | 7554 request.method = "GET"; |
7555 request.url = GURL("https://www.google.com/"); | 7555 request.url = GURL("https://www.google.com/"); |
7556 request.load_flags = 0; | 7556 request.load_flags = 0; |
7557 | 7557 |
7558 session_deps_.proxy_service.reset( | 7558 session_deps_.proxy_service.reset( |
7559 ProxyService::CreateFixedFromPacResult("SOCKS myproxy:1080")); | 7559 ProxyService::CreateFixedFromPacResult("SOCKS myproxy:1080")); |
7560 CapturingNetLog net_log; | 7560 TestNetLog net_log; |
7561 session_deps_.net_log = &net_log; | 7561 session_deps_.net_log = &net_log; |
7562 | 7562 |
7563 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 7563 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
7564 scoped_ptr<HttpTransaction> trans( | 7564 scoped_ptr<HttpTransaction> trans( |
7565 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 7565 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
7566 | 7566 |
7567 unsigned char write_buffer[] = { 0x04, 0x01, 0x01, 0xBB, 127, 0, 0, 1, 0 }; | 7567 unsigned char write_buffer[] = { 0x04, 0x01, 0x01, 0xBB, 127, 0, 0, 1, 0 }; |
7568 unsigned char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; | 7568 unsigned char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; |
7569 | 7569 |
7570 MockWrite data_writes[] = { | 7570 MockWrite data_writes[] = { |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7614 } | 7614 } |
7615 | 7615 |
7616 TEST_P(HttpNetworkTransactionTest, SOCKS4_HTTP_GET_no_PAC) { | 7616 TEST_P(HttpNetworkTransactionTest, SOCKS4_HTTP_GET_no_PAC) { |
7617 HttpRequestInfo request; | 7617 HttpRequestInfo request; |
7618 request.method = "GET"; | 7618 request.method = "GET"; |
7619 request.url = GURL("http://www.google.com/"); | 7619 request.url = GURL("http://www.google.com/"); |
7620 request.load_flags = 0; | 7620 request.load_flags = 0; |
7621 | 7621 |
7622 session_deps_.proxy_service.reset( | 7622 session_deps_.proxy_service.reset( |
7623 ProxyService::CreateFixed("socks4://myproxy:1080")); | 7623 ProxyService::CreateFixed("socks4://myproxy:1080")); |
7624 CapturingNetLog net_log; | 7624 TestNetLog net_log; |
7625 session_deps_.net_log = &net_log; | 7625 session_deps_.net_log = &net_log; |
7626 | 7626 |
7627 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 7627 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
7628 scoped_ptr<HttpTransaction> trans( | 7628 scoped_ptr<HttpTransaction> trans( |
7629 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 7629 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
7630 | 7630 |
7631 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 }; | 7631 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 }; |
7632 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; | 7632 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; |
7633 | 7633 |
7634 MockWrite data_writes[] = { | 7634 MockWrite data_writes[] = { |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7673 } | 7673 } |
7674 | 7674 |
7675 TEST_P(HttpNetworkTransactionTest, SOCKS5_HTTP_GET) { | 7675 TEST_P(HttpNetworkTransactionTest, SOCKS5_HTTP_GET) { |
7676 HttpRequestInfo request; | 7676 HttpRequestInfo request; |
7677 request.method = "GET"; | 7677 request.method = "GET"; |
7678 request.url = GURL("http://www.google.com/"); | 7678 request.url = GURL("http://www.google.com/"); |
7679 request.load_flags = 0; | 7679 request.load_flags = 0; |
7680 | 7680 |
7681 session_deps_.proxy_service.reset( | 7681 session_deps_.proxy_service.reset( |
7682 ProxyService::CreateFixedFromPacResult("SOCKS5 myproxy:1080")); | 7682 ProxyService::CreateFixedFromPacResult("SOCKS5 myproxy:1080")); |
7683 CapturingNetLog net_log; | 7683 TestNetLog net_log; |
7684 session_deps_.net_log = &net_log; | 7684 session_deps_.net_log = &net_log; |
7685 | 7685 |
7686 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 7686 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
7687 scoped_ptr<HttpTransaction> trans( | 7687 scoped_ptr<HttpTransaction> trans( |
7688 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 7688 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
7689 | 7689 |
7690 const char kSOCKS5GreetRequest[] = { 0x05, 0x01, 0x00 }; | 7690 const char kSOCKS5GreetRequest[] = { 0x05, 0x01, 0x00 }; |
7691 const char kSOCKS5GreetResponse[] = { 0x05, 0x00 }; | 7691 const char kSOCKS5GreetResponse[] = { 0x05, 0x00 }; |
7692 const char kSOCKS5OkRequest[] = { | 7692 const char kSOCKS5OkRequest[] = { |
7693 0x05, // Version | 7693 0x05, // Version |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7746 } | 7746 } |
7747 | 7747 |
7748 TEST_P(HttpNetworkTransactionTest, SOCKS5_SSL_GET) { | 7748 TEST_P(HttpNetworkTransactionTest, SOCKS5_SSL_GET) { |
7749 HttpRequestInfo request; | 7749 HttpRequestInfo request; |
7750 request.method = "GET"; | 7750 request.method = "GET"; |
7751 request.url = GURL("https://www.google.com/"); | 7751 request.url = GURL("https://www.google.com/"); |
7752 request.load_flags = 0; | 7752 request.load_flags = 0; |
7753 | 7753 |
7754 session_deps_.proxy_service.reset( | 7754 session_deps_.proxy_service.reset( |
7755 ProxyService::CreateFixedFromPacResult("SOCKS5 myproxy:1080")); | 7755 ProxyService::CreateFixedFromPacResult("SOCKS5 myproxy:1080")); |
7756 CapturingNetLog net_log; | 7756 TestNetLog net_log; |
7757 session_deps_.net_log = &net_log; | 7757 session_deps_.net_log = &net_log; |
7758 | 7758 |
7759 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 7759 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
7760 scoped_ptr<HttpTransaction> trans( | 7760 scoped_ptr<HttpTransaction> trans( |
7761 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 7761 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
7762 | 7762 |
7763 const char kSOCKS5GreetRequest[] = { 0x05, 0x01, 0x00 }; | 7763 const char kSOCKS5GreetRequest[] = { 0x05, 0x01, 0x00 }; |
7764 const char kSOCKS5GreetResponse[] = { 0x05, 0x00 }; | 7764 const char kSOCKS5GreetResponse[] = { 0x05, 0x00 }; |
7765 const unsigned char kSOCKS5OkRequest[] = { | 7765 const unsigned char kSOCKS5OkRequest[] = { |
7766 0x05, // Version | 7766 0x05, // Version |
(...skipping 1750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9517 ProxyConfig proxy_config; | 9517 ProxyConfig proxy_config; |
9518 proxy_config.set_auto_detect(true); | 9518 proxy_config.set_auto_detect(true); |
9519 proxy_config.set_pac_url(GURL("http://fooproxyurl")); | 9519 proxy_config.set_pac_url(GURL("http://fooproxyurl")); |
9520 | 9520 |
9521 CapturingProxyResolver capturing_proxy_resolver; | 9521 CapturingProxyResolver capturing_proxy_resolver; |
9522 session_deps_.proxy_service.reset(new ProxyService( | 9522 session_deps_.proxy_service.reset(new ProxyService( |
9523 new ProxyConfigServiceFixed(proxy_config), | 9523 new ProxyConfigServiceFixed(proxy_config), |
9524 make_scoped_ptr( | 9524 make_scoped_ptr( |
9525 new ForwardingProxyResolverFactory(&capturing_proxy_resolver)), | 9525 new ForwardingProxyResolverFactory(&capturing_proxy_resolver)), |
9526 NULL)); | 9526 NULL)); |
9527 CapturingNetLog net_log; | 9527 TestNetLog net_log; |
9528 session_deps_.net_log = &net_log; | 9528 session_deps_.net_log = &net_log; |
9529 | 9529 |
9530 HttpRequestInfo request; | 9530 HttpRequestInfo request; |
9531 request.method = "GET"; | 9531 request.method = "GET"; |
9532 request.url = GURL("http://www.google.com/"); | 9532 request.url = GURL("http://www.google.com/"); |
9533 request.load_flags = 0; | 9533 request.load_flags = 0; |
9534 | 9534 |
9535 std::string alternate_protocol_http_header = | 9535 std::string alternate_protocol_http_header = |
9536 GetAlternateProtocolHttpHeader(); | 9536 GetAlternateProtocolHttpHeader(); |
9537 | 9537 |
(...skipping 910 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10448 }; | 10448 }; |
10449 | 10449 |
10450 TEST_P(HttpNetworkTransactionTest, SpdyAlternateProtocolThroughProxy) { | 10450 TEST_P(HttpNetworkTransactionTest, SpdyAlternateProtocolThroughProxy) { |
10451 // This test ensures that the URL passed into the proxy is upgraded | 10451 // This test ensures that the URL passed into the proxy is upgraded |
10452 // to https when doing an Alternate Protocol upgrade. | 10452 // to https when doing an Alternate Protocol upgrade. |
10453 session_deps_.use_alternate_protocols = true; | 10453 session_deps_.use_alternate_protocols = true; |
10454 session_deps_.next_protos = SpdyNextProtos(); | 10454 session_deps_.next_protos = SpdyNextProtos(); |
10455 | 10455 |
10456 session_deps_.proxy_service.reset( | 10456 session_deps_.proxy_service.reset( |
10457 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); | 10457 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); |
10458 CapturingNetLog net_log; | 10458 TestNetLog net_log; |
10459 session_deps_.net_log = &net_log; | 10459 session_deps_.net_log = &net_log; |
10460 GURL request_url; | 10460 GURL request_url; |
10461 { | 10461 { |
10462 HttpAuthHandlerMock::Factory* auth_factory = | 10462 HttpAuthHandlerMock::Factory* auth_factory = |
10463 new HttpAuthHandlerMock::Factory(); | 10463 new HttpAuthHandlerMock::Factory(); |
10464 UrlRecordingHttpAuthHandlerMock* auth_handler = | 10464 UrlRecordingHttpAuthHandlerMock* auth_handler = |
10465 new UrlRecordingHttpAuthHandlerMock(&request_url); | 10465 new UrlRecordingHttpAuthHandlerMock(&request_url); |
10466 auth_factory->AddMockHandler(auth_handler, HttpAuth::AUTH_PROXY); | 10466 auth_factory->AddMockHandler(auth_handler, HttpAuth::AUTH_PROXY); |
10467 auth_factory->set_do_init_from_challenge(true); | 10467 auth_factory->set_do_init_from_challenge(true); |
10468 session_deps_.http_auth_handler_factory.reset(auth_factory); | 10468 session_deps_.http_auth_handler_factory.reset(auth_factory); |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10632 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10632 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10633 scoped_ptr<HttpTransaction> trans( | 10633 scoped_ptr<HttpTransaction> trans( |
10634 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10634 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10635 | 10635 |
10636 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 10636 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
10637 data.set_connect_data(mock_connect); | 10637 data.set_connect_data(mock_connect); |
10638 session_deps_.socket_factory->AddSocketDataProvider(&data); | 10638 session_deps_.socket_factory->AddSocketDataProvider(&data); |
10639 | 10639 |
10640 TestCompletionCallback callback; | 10640 TestCompletionCallback callback; |
10641 | 10641 |
10642 CapturingBoundNetLog log; | 10642 BoundTestNetLog log; |
10643 int rv = trans->Start(&request, callback.callback(), log.bound()); | 10643 int rv = trans->Start(&request, callback.callback(), log.bound()); |
10644 EXPECT_EQ(ERR_IO_PENDING, rv); | 10644 EXPECT_EQ(ERR_IO_PENDING, rv); |
10645 trans.reset(); // Cancel the transaction here. | 10645 trans.reset(); // Cancel the transaction here. |
10646 | 10646 |
10647 base::MessageLoop::current()->RunUntilIdle(); | 10647 base::MessageLoop::current()->RunUntilIdle(); |
10648 } | 10648 } |
10649 | 10649 |
10650 // Test that if a transaction is cancelled after receiving the headers, the | 10650 // Test that if a transaction is cancelled after receiving the headers, the |
10651 // stream is drained properly and added back to the socket pool. The main | 10651 // stream is drained properly and added back to the socket pool. The main |
10652 // purpose of this test is to make sure that an HttpStreamParser can be read | 10652 // purpose of this test is to make sure that an HttpStreamParser can be read |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10694 base::MessageLoop::current()->RunUntilIdle(); | 10694 base::MessageLoop::current()->RunUntilIdle(); |
10695 | 10695 |
10696 // Socket should now be idle, waiting to be reused. | 10696 // Socket should now be idle, waiting to be reused. |
10697 EXPECT_EQ(1, GetIdleSocketCountInTransportSocketPool(session.get())); | 10697 EXPECT_EQ(1, GetIdleSocketCountInTransportSocketPool(session.get())); |
10698 } | 10698 } |
10699 | 10699 |
10700 // Test a basic GET request through a proxy. | 10700 // Test a basic GET request through a proxy. |
10701 TEST_P(HttpNetworkTransactionTest, ProxyGet) { | 10701 TEST_P(HttpNetworkTransactionTest, ProxyGet) { |
10702 session_deps_.proxy_service.reset( | 10702 session_deps_.proxy_service.reset( |
10703 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); | 10703 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); |
10704 CapturingBoundNetLog log; | 10704 BoundTestNetLog log; |
10705 session_deps_.net_log = log.bound().net_log(); | 10705 session_deps_.net_log = log.bound().net_log(); |
10706 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10706 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10707 | 10707 |
10708 HttpRequestInfo request; | 10708 HttpRequestInfo request; |
10709 request.method = "GET"; | 10709 request.method = "GET"; |
10710 request.url = GURL("http://www.google.com/"); | 10710 request.url = GURL("http://www.google.com/"); |
10711 | 10711 |
10712 MockWrite data_writes1[] = { | 10712 MockWrite data_writes1[] = { |
10713 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" | 10713 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" |
10714 "Host: www.google.com\r\n" | 10714 "Host: www.google.com\r\n" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10757 LoadTimingInfo load_timing_info; | 10757 LoadTimingInfo load_timing_info; |
10758 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); | 10758 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); |
10759 TestLoadTimingNotReusedWithPac(load_timing_info, | 10759 TestLoadTimingNotReusedWithPac(load_timing_info, |
10760 CONNECT_TIMING_HAS_CONNECT_TIMES_ONLY); | 10760 CONNECT_TIMING_HAS_CONNECT_TIMES_ONLY); |
10761 } | 10761 } |
10762 | 10762 |
10763 // Test a basic HTTPS GET request through a proxy. | 10763 // Test a basic HTTPS GET request through a proxy. |
10764 TEST_P(HttpNetworkTransactionTest, ProxyTunnelGet) { | 10764 TEST_P(HttpNetworkTransactionTest, ProxyTunnelGet) { |
10765 session_deps_.proxy_service.reset( | 10765 session_deps_.proxy_service.reset( |
10766 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); | 10766 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); |
10767 CapturingBoundNetLog log; | 10767 BoundTestNetLog log; |
10768 session_deps_.net_log = log.bound().net_log(); | 10768 session_deps_.net_log = log.bound().net_log(); |
10769 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10769 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10770 | 10770 |
10771 HttpRequestInfo request; | 10771 HttpRequestInfo request; |
10772 request.method = "GET"; | 10772 request.method = "GET"; |
10773 request.url = GURL("https://www.google.com/"); | 10773 request.url = GURL("https://www.google.com/"); |
10774 | 10774 |
10775 // Since we have proxy, should try to establish tunnel. | 10775 // Since we have proxy, should try to establish tunnel. |
10776 MockWrite data_writes1[] = { | 10776 MockWrite data_writes1[] = { |
10777 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 10777 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
(...skipping 23 matching lines...) Expand all Loading... |
10801 TestCompletionCallback callback1; | 10801 TestCompletionCallback callback1; |
10802 | 10802 |
10803 scoped_ptr<HttpTransaction> trans( | 10803 scoped_ptr<HttpTransaction> trans( |
10804 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10804 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10805 | 10805 |
10806 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 10806 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
10807 EXPECT_EQ(ERR_IO_PENDING, rv); | 10807 EXPECT_EQ(ERR_IO_PENDING, rv); |
10808 | 10808 |
10809 rv = callback1.WaitForResult(); | 10809 rv = callback1.WaitForResult(); |
10810 EXPECT_EQ(OK, rv); | 10810 EXPECT_EQ(OK, rv); |
10811 net::CapturingNetLog::CapturedEntryList entries; | 10811 net::TestNetLog::CapturedEntryList entries; |
10812 log.GetEntries(&entries); | 10812 log.GetEntries(&entries); |
10813 size_t pos = ExpectLogContainsSomewhere( | 10813 size_t pos = ExpectLogContainsSomewhere( |
10814 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, | 10814 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, |
10815 NetLog::PHASE_NONE); | 10815 NetLog::PHASE_NONE); |
10816 ExpectLogContainsSomewhere( | 10816 ExpectLogContainsSomewhere( |
10817 entries, pos, | 10817 entries, pos, |
10818 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, | 10818 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, |
10819 NetLog::PHASE_NONE); | 10819 NetLog::PHASE_NONE); |
10820 | 10820 |
10821 const HttpResponseInfo* response = trans->GetResponseInfo(); | 10821 const HttpResponseInfo* response = trans->GetResponseInfo(); |
(...skipping 10 matching lines...) Expand all Loading... |
10832 LoadTimingInfo load_timing_info; | 10832 LoadTimingInfo load_timing_info; |
10833 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); | 10833 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); |
10834 TestLoadTimingNotReusedWithPac(load_timing_info, | 10834 TestLoadTimingNotReusedWithPac(load_timing_info, |
10835 CONNECT_TIMING_HAS_SSL_TIMES); | 10835 CONNECT_TIMING_HAS_SSL_TIMES); |
10836 } | 10836 } |
10837 | 10837 |
10838 // Test a basic HTTPS GET request through a proxy, but the server hangs up | 10838 // Test a basic HTTPS GET request through a proxy, but the server hangs up |
10839 // while establishing the tunnel. | 10839 // while establishing the tunnel. |
10840 TEST_P(HttpNetworkTransactionTest, ProxyTunnelGetHangup) { | 10840 TEST_P(HttpNetworkTransactionTest, ProxyTunnelGetHangup) { |
10841 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); | 10841 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); |
10842 CapturingBoundNetLog log; | 10842 BoundTestNetLog log; |
10843 session_deps_.net_log = log.bound().net_log(); | 10843 session_deps_.net_log = log.bound().net_log(); |
10844 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10844 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10845 | 10845 |
10846 HttpRequestInfo request; | 10846 HttpRequestInfo request; |
10847 request.method = "GET"; | 10847 request.method = "GET"; |
10848 request.url = GURL("https://www.google.com/"); | 10848 request.url = GURL("https://www.google.com/"); |
10849 | 10849 |
10850 // Since we have proxy, should try to establish tunnel. | 10850 // Since we have proxy, should try to establish tunnel. |
10851 MockWrite data_writes1[] = { | 10851 MockWrite data_writes1[] = { |
10852 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 10852 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
(...skipping 20 matching lines...) Expand all Loading... |
10873 TestCompletionCallback callback1; | 10873 TestCompletionCallback callback1; |
10874 | 10874 |
10875 scoped_ptr<HttpTransaction> trans( | 10875 scoped_ptr<HttpTransaction> trans( |
10876 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10876 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10877 | 10877 |
10878 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 10878 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
10879 EXPECT_EQ(ERR_IO_PENDING, rv); | 10879 EXPECT_EQ(ERR_IO_PENDING, rv); |
10880 | 10880 |
10881 rv = callback1.WaitForResult(); | 10881 rv = callback1.WaitForResult(); |
10882 EXPECT_EQ(ERR_EMPTY_RESPONSE, rv); | 10882 EXPECT_EQ(ERR_EMPTY_RESPONSE, rv); |
10883 net::CapturingNetLog::CapturedEntryList entries; | 10883 net::TestNetLog::CapturedEntryList entries; |
10884 log.GetEntries(&entries); | 10884 log.GetEntries(&entries); |
10885 size_t pos = ExpectLogContainsSomewhere( | 10885 size_t pos = ExpectLogContainsSomewhere( |
10886 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, | 10886 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, |
10887 NetLog::PHASE_NONE); | 10887 NetLog::PHASE_NONE); |
10888 ExpectLogContainsSomewhere( | 10888 ExpectLogContainsSomewhere( |
10889 entries, pos, | 10889 entries, pos, |
10890 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, | 10890 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, |
10891 NetLog::PHASE_NONE); | 10891 NetLog::PHASE_NONE); |
10892 } | 10892 } |
10893 | 10893 |
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11218 // cache when: | 11218 // cache when: |
11219 // 1) An HTTPS proxy is involved. | 11219 // 1) An HTTPS proxy is involved. |
11220 // 3) The HTTPS proxy requests a client certificate. | 11220 // 3) The HTTPS proxy requests a client certificate. |
11221 // 4) The client supplies an invalid/unacceptable certificate for the | 11221 // 4) The client supplies an invalid/unacceptable certificate for the |
11222 // proxy. | 11222 // proxy. |
11223 // The test is repeated twice, first for connecting to an HTTPS endpoint, | 11223 // The test is repeated twice, first for connecting to an HTTPS endpoint, |
11224 // then for connecting to an HTTP endpoint. | 11224 // then for connecting to an HTTP endpoint. |
11225 TEST_P(HttpNetworkTransactionTest, ClientAuthCertCache_Proxy_Fail) { | 11225 TEST_P(HttpNetworkTransactionTest, ClientAuthCertCache_Proxy_Fail) { |
11226 session_deps_.proxy_service.reset( | 11226 session_deps_.proxy_service.reset( |
11227 ProxyService::CreateFixed("https://proxy:70")); | 11227 ProxyService::CreateFixed("https://proxy:70")); |
11228 CapturingBoundNetLog log; | 11228 BoundTestNetLog log; |
11229 session_deps_.net_log = log.bound().net_log(); | 11229 session_deps_.net_log = log.bound().net_log(); |
11230 | 11230 |
11231 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo()); | 11231 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo()); |
11232 cert_request->host_and_port = HostPortPair("proxy", 70); | 11232 cert_request->host_and_port = HostPortPair("proxy", 70); |
11233 | 11233 |
11234 // See ClientAuthCertCache_Direct_NoFalseStart for the explanation of | 11234 // See ClientAuthCertCache_Direct_NoFalseStart for the explanation of |
11235 // [ssl_]data[1-3]. Rather than represending the endpoint | 11235 // [ssl_]data[1-3]. Rather than represending the endpoint |
11236 // (www.example.com:443), they represent failures with the HTTPS proxy | 11236 // (www.example.com:443), they represent failures with the HTTPS proxy |
11237 // (proxy:70). | 11237 // (proxy:70). |
11238 SSLSocketDataProvider ssl_data1(ASYNC, net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED); | 11238 SSLSocketDataProvider ssl_data1(ASYNC, net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED); |
(...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11812 MockRead(ASYNC, ERR_IO_PENDING, 8) | 11812 MockRead(ASYNC, ERR_IO_PENDING, 8) |
11813 }; | 11813 }; |
11814 | 11814 |
11815 DeterministicSocketData data1(reads1, arraysize(reads1), | 11815 DeterministicSocketData data1(reads1, arraysize(reads1), |
11816 writes1, arraysize(writes1)); | 11816 writes1, arraysize(writes1)); |
11817 MockConnect connect_data1(ASYNC, OK); | 11817 MockConnect connect_data1(ASYNC, OK); |
11818 data1.set_connect_data(connect_data1); | 11818 data1.set_connect_data(connect_data1); |
11819 | 11819 |
11820 session_deps_.proxy_service.reset( | 11820 session_deps_.proxy_service.reset( |
11821 ProxyService::CreateFixedFromPacResult("HTTPS proxy:70")); | 11821 ProxyService::CreateFixedFromPacResult("HTTPS proxy:70")); |
11822 CapturingNetLog log; | 11822 TestNetLog log; |
11823 session_deps_.net_log = &log; | 11823 session_deps_.net_log = &log; |
11824 SSLSocketDataProvider ssl1(ASYNC, OK); // to the proxy | 11824 SSLSocketDataProvider ssl1(ASYNC, OK); // to the proxy |
11825 ssl1.SetNextProto(GetParam()); | 11825 ssl1.SetNextProto(GetParam()); |
11826 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl1); | 11826 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl1); |
11827 SSLSocketDataProvider ssl2(ASYNC, OK); // to the server | 11827 SSLSocketDataProvider ssl2(ASYNC, OK); // to the server |
11828 ssl2.SetNextProto(GetParam()); | 11828 ssl2.SetNextProto(GetParam()); |
11829 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl2); | 11829 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl2); |
11830 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data1); | 11830 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data1); |
11831 | 11831 |
11832 scoped_refptr<HttpNetworkSession> session( | 11832 scoped_refptr<HttpNetworkSession> session( |
(...skipping 1950 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13783 ASSERT_TRUE(response); | 13783 ASSERT_TRUE(response); |
13784 ASSERT_TRUE(response->headers.get()); | 13784 ASSERT_TRUE(response->headers.get()); |
13785 | 13785 |
13786 EXPECT_EQ(101, response->headers->response_code()); | 13786 EXPECT_EQ(101, response->headers->response_code()); |
13787 | 13787 |
13788 trans.reset(); | 13788 trans.reset(); |
13789 session->CloseAllConnections(); | 13789 session->CloseAllConnections(); |
13790 } | 13790 } |
13791 | 13791 |
13792 } // namespace net | 13792 } // namespace net |
OLD | NEW |