OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 7600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7611 MockRead(true, 0, 0), | 7611 MockRead(true, 0, 0), |
7612 }; | 7612 }; |
7613 | 7613 |
7614 scoped_refptr<DelayedSocketData> spdy_data( | 7614 scoped_refptr<DelayedSocketData> spdy_data( |
7615 new DelayedSocketData( | 7615 new DelayedSocketData( |
7616 1, // wait for one write to finish before reading. | 7616 1, // wait for one write to finish before reading. |
7617 spdy_reads, arraysize(spdy_reads), | 7617 spdy_reads, arraysize(spdy_reads), |
7618 spdy_writes, arraysize(spdy_writes))); | 7618 spdy_writes, arraysize(spdy_writes))); |
7619 session_deps.socket_factory.AddSocketDataProvider(spdy_data); | 7619 session_deps.socket_factory.AddSocketDataProvider(spdy_data); |
7620 | 7620 |
7621 TestOldCompletionCallback callback; | 7621 TestOldCompletionCallback callback_old; |
| 7622 TestCompletionCallback callback; |
7622 | 7623 |
7623 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 7624 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
7624 | 7625 |
7625 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); | 7626 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); |
7626 | 7627 |
7627 int rv = trans->Start(&request, &callback, BoundNetLog()); | 7628 int rv = trans->Start(&request, &callback_old, BoundNetLog()); |
7628 EXPECT_EQ(ERR_IO_PENDING, rv); | 7629 EXPECT_EQ(ERR_IO_PENDING, rv); |
7629 EXPECT_EQ(OK, callback.WaitForResult()); | 7630 EXPECT_EQ(OK, callback_old.WaitForResult()); |
7630 | 7631 |
7631 const HttpResponseInfo* response = trans->GetResponseInfo(); | 7632 const HttpResponseInfo* response = trans->GetResponseInfo(); |
7632 ASSERT_TRUE(response != NULL); | 7633 ASSERT_TRUE(response != NULL); |
7633 ASSERT_TRUE(response->headers != NULL); | 7634 ASSERT_TRUE(response->headers != NULL); |
7634 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 7635 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
7635 | 7636 |
7636 std::string response_data; | 7637 std::string response_data; |
7637 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 7638 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
7638 EXPECT_EQ("hello world", response_data); | 7639 EXPECT_EQ("hello world", response_data); |
7639 | 7640 |
7640 // Set up an initial SpdySession in the pool to reuse. | 7641 // Set up an initial SpdySession in the pool to reuse. |
7641 HostPortPair host_port_pair("www.google.com", 443); | 7642 HostPortPair host_port_pair("www.google.com", 443); |
7642 HostPortProxyPair pair(host_port_pair, ProxyServer::Direct()); | 7643 HostPortProxyPair pair(host_port_pair, ProxyServer::Direct()); |
7643 scoped_refptr<SpdySession> spdy_session = | 7644 scoped_refptr<SpdySession> spdy_session = |
7644 session->spdy_session_pool()->Get(pair, BoundNetLog()); | 7645 session->spdy_session_pool()->Get(pair, BoundNetLog()); |
7645 scoped_refptr<TransportSocketParams> transport_params( | 7646 scoped_refptr<TransportSocketParams> transport_params( |
7646 new TransportSocketParams(host_port_pair, MEDIUM, false, false)); | 7647 new TransportSocketParams(host_port_pair, MEDIUM, false, false)); |
7647 | 7648 |
7648 scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 7649 scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); |
7649 EXPECT_EQ(ERR_IO_PENDING, | 7650 EXPECT_EQ(ERR_IO_PENDING, |
7650 connection->Init(host_port_pair.ToString(), | 7651 connection->Init(host_port_pair.ToString(), |
7651 transport_params, | 7652 transport_params, |
7652 LOWEST, | 7653 LOWEST, |
7653 &callback, | 7654 &callback_old, |
7654 session->GetTransportSocketPool(), | 7655 session->GetTransportSocketPool(), |
7655 BoundNetLog())); | 7656 BoundNetLog())); |
7656 EXPECT_EQ(OK, callback.WaitForResult()); | 7657 EXPECT_EQ(OK, callback_old.WaitForResult()); |
7657 | 7658 |
7658 SSLConfig ssl_config; | 7659 SSLConfig ssl_config; |
7659 session->ssl_config_service()->GetSSLConfig(&ssl_config); | 7660 session->ssl_config_service()->GetSSLConfig(&ssl_config); |
7660 scoped_ptr<ClientSocketHandle> ssl_connection(new ClientSocketHandle); | 7661 scoped_ptr<ClientSocketHandle> ssl_connection(new ClientSocketHandle); |
7661 SSLClientSocketContext context; | 7662 SSLClientSocketContext context; |
7662 context.cert_verifier = session_deps.cert_verifier.get(); | 7663 context.cert_verifier = session_deps.cert_verifier.get(); |
7663 ssl_connection->set_socket(session_deps.socket_factory.CreateSSLClientSocket( | 7664 ssl_connection->set_socket(session_deps.socket_factory.CreateSSLClientSocket( |
7664 connection.release(), HostPortPair("" , 443), ssl_config, | 7665 connection.release(), HostPortPair("" , 443), ssl_config, |
7665 NULL /* ssl_host_info */, context)); | 7666 NULL /* ssl_host_info */, context)); |
7666 EXPECT_EQ(ERR_IO_PENDING, ssl_connection->socket()->Connect(&callback)); | 7667 EXPECT_EQ(ERR_IO_PENDING, |
| 7668 ssl_connection->socket()->Connect(callback.callback())); |
7667 EXPECT_EQ(OK, callback.WaitForResult()); | 7669 EXPECT_EQ(OK, callback.WaitForResult()); |
7668 | 7670 |
7669 EXPECT_EQ(OK, spdy_session->InitializeWithSocket(ssl_connection.release(), | 7671 EXPECT_EQ(OK, spdy_session->InitializeWithSocket(ssl_connection.release(), |
7670 true, OK)); | 7672 true, OK)); |
7671 | 7673 |
7672 trans.reset(new HttpNetworkTransaction(session)); | 7674 trans.reset(new HttpNetworkTransaction(session)); |
7673 | 7675 |
7674 rv = trans->Start(&request, &callback, BoundNetLog()); | 7676 rv = trans->Start(&request, &callback_old, BoundNetLog()); |
7675 EXPECT_EQ(ERR_IO_PENDING, rv); | 7677 EXPECT_EQ(ERR_IO_PENDING, rv); |
7676 EXPECT_EQ(OK, callback.WaitForResult()); | 7678 EXPECT_EQ(OK, callback_old.WaitForResult()); |
7677 | 7679 |
7678 response = trans->GetResponseInfo(); | 7680 response = trans->GetResponseInfo(); |
7679 ASSERT_TRUE(response != NULL); | 7681 ASSERT_TRUE(response != NULL); |
7680 ASSERT_TRUE(response->headers != NULL); | 7682 ASSERT_TRUE(response->headers != NULL); |
7681 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 7683 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
7682 EXPECT_TRUE(response->was_fetched_via_spdy); | 7684 EXPECT_TRUE(response->was_fetched_via_spdy); |
7683 EXPECT_TRUE(response->was_npn_negotiated); | 7685 EXPECT_TRUE(response->was_npn_negotiated); |
7684 | 7686 |
7685 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 7687 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
7686 EXPECT_EQ("hello!", response_data); | 7688 EXPECT_EQ("hello!", response_data); |
(...skipping 2127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9814 session->spdy_session_pool()->HasSession(host_port_proxy_pair_b)); | 9816 session->spdy_session_pool()->HasSession(host_port_proxy_pair_b)); |
9815 | 9817 |
9816 HttpStreamFactory::set_next_protos(std::vector<std::string>()); | 9818 HttpStreamFactory::set_next_protos(std::vector<std::string>()); |
9817 ClientSocketPoolManager::set_max_sockets_per_pool(old_max_sockets_per_pool); | 9819 ClientSocketPoolManager::set_max_sockets_per_pool(old_max_sockets_per_pool); |
9818 ClientSocketPoolManager::set_max_sockets_per_proxy_server( | 9820 ClientSocketPoolManager::set_max_sockets_per_proxy_server( |
9819 old_max_sockets_per_proxy_server); | 9821 old_max_sockets_per_proxy_server); |
9820 ClientSocketPoolManager::set_max_sockets_per_group(old_max_sockets_per_group); | 9822 ClientSocketPoolManager::set_max_sockets_per_group(old_max_sockets_per_group); |
9821 } | 9823 } |
9822 | 9824 |
9823 } // namespace net | 9825 } // namespace net |
OLD | NEW |