| Index: net/http/http_stream_factory_unittest.cc
|
| diff --git a/net/http/http_stream_factory_unittest.cc b/net/http/http_stream_factory_unittest.cc
|
| index 646f79cae2880d044a28c8a6033b2460710e5305..5c5e200fc39363b097ec366bd356eeea5c9472a5 100644
|
| --- a/net/http/http_stream_factory_unittest.cc
|
| +++ b/net/http/http_stream_factory_unittest.cc
|
| @@ -17,6 +17,7 @@
|
| #include "net/http/http_network_session_peer.h"
|
| #include "net/http/http_request_info.h"
|
| #include "net/socket/socket_test_util.h"
|
| +#include "net/spdy/spdy_session.h"
|
| #include "net/spdy/spdy_session_pool.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -163,20 +164,23 @@ CapturePreconnectsSSLSocketPool;
|
| template<typename ParentPool>
|
| CapturePreconnectsSocketPool<ParentPool>::CapturePreconnectsSocketPool(
|
| HttpNetworkSession* session)
|
| - : ParentPool(0, 0, NULL, session->host_resolver(), NULL, NULL) {}
|
| + : ParentPool(0, 0, NULL, session->host_resolver(), NULL, NULL),
|
| + last_num_streams_(-1) {}
|
|
|
| template<>
|
| CapturePreconnectsHttpProxySocketPool::CapturePreconnectsSocketPool(
|
| HttpNetworkSession* session)
|
| : HttpProxyClientSocketPool(0, 0, NULL, session->host_resolver(), NULL,
|
| - NULL, NULL) {}
|
| + NULL, NULL),
|
| + last_num_streams_(-1) {}
|
|
|
| template<>
|
| CapturePreconnectsSSLSocketPool::CapturePreconnectsSocketPool(
|
| HttpNetworkSession* session)
|
| : SSLClientSocketPool(0, 0, NULL, session->host_resolver(),
|
| session->cert_verifier(), NULL, NULL,
|
| - NULL, NULL, NULL, NULL, NULL, NULL, NULL) {}
|
| + NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
| + last_num_streams_(-1) {}
|
|
|
| TEST(HttpStreamFactoryTest, PreconnectDirect) {
|
| for (size_t i = 0; i < arraysize(kTests); ++i) {
|
| @@ -238,6 +242,35 @@ TEST(HttpStreamFactoryTest, PreconnectSocksProxy) {
|
| }
|
| }
|
|
|
| +TEST(HttpStreamFactoryTest, PreconnectDirectWithExistingSpdySession) {
|
| + for (size_t i = 0; i < arraysize(kTests); ++i) {
|
| + SessionDependencies session_deps(ProxyService::CreateDirect());
|
| + scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
|
| + HttpNetworkSessionPeer peer(session);
|
| +
|
| + // Set an existing SpdySession in the pool.
|
| + HostPortPair host_port_pair("www.google.com", 443);
|
| + HostPortProxyPair pair(host_port_pair, ProxyServer::Direct());
|
| + scoped_refptr<SpdySession> spdy_session =
|
| + session->spdy_session_pool()->Get(
|
| + pair, session->mutable_spdy_settings(), BoundNetLog());
|
| +
|
| + CapturePreconnectsTCPSocketPool* tcp_conn_pool =
|
| + new CapturePreconnectsTCPSocketPool(session);
|
| + peer.SetTCPSocketPool(tcp_conn_pool);
|
| + CapturePreconnectsSSLSocketPool* ssl_conn_pool =
|
| + new CapturePreconnectsSSLSocketPool(session.get());
|
| + peer.SetSSLSocketPool(ssl_conn_pool);
|
| + EXPECT_EQ(OK, PreconnectHelper(kTests[i], session));
|
| + // We shouldn't be preconnecting if we have an existing session, which is
|
| + // the case for https://www.google.com.
|
| + if (kTests[i].ssl)
|
| + EXPECT_EQ(-1, ssl_conn_pool->last_num_streams());
|
| + else
|
| + EXPECT_EQ(kTests[i].num_streams, tcp_conn_pool->last_num_streams());
|
| + }
|
| +}
|
| +
|
| } // namespace
|
|
|
| } // namespace net
|
|
|