Chromium Code Reviews| Index: net/http/http_stream_factory_impl_unittest.cc |
| diff --git a/net/http/http_stream_factory_impl_unittest.cc b/net/http/http_stream_factory_impl_unittest.cc |
| index 637b612401c128e757e14e12b87b6b25f62de690..c0286b34b6651e99f720687cdffb750010c7a297 100644 |
| --- a/net/http/http_stream_factory_impl_unittest.cc |
| +++ b/net/http/http_stream_factory_impl_unittest.cc |
| @@ -27,6 +27,7 @@ |
| #include "net/log/net_log.h" |
| #include "net/proxy/proxy_info.h" |
| #include "net/proxy/proxy_service.h" |
| +#include "net/quic/test_tools/quic_stream_factory_peer.h" |
| #include "net/socket/client_socket_handle.h" |
| #include "net/socket/mock_client_socket_pool_manager.h" |
| #include "net/socket/next_proto.h" |
| @@ -116,7 +117,6 @@ class MockHttpStreamFactoryImplForPreconnect : public HttpStreamFactoryImpl { |
| preconnect_done_(false), |
| waiting_for_preconnect_(false) {} |
| - |
| void WaitForPreconnects() { |
| while (!preconnect_done_) { |
| waiting_for_preconnect_ = true; |
| @@ -639,6 +639,7 @@ TEST_P(HttpStreamFactoryTest, UnreachableQuicProxyMarkedAsBad) { |
| HttpNetworkSession::Params params; |
| params.enable_quic = true; |
| + params.disable_preconnects = false; |
| params.enable_quic_for_proxies = true; |
| scoped_refptr<SSLConfigServiceDefaults> ssl_config_service( |
| new SSLConfigServiceDefaults); |
| @@ -700,6 +701,7 @@ TEST_P(HttpStreamFactoryTest, QuicLossyProxyMarkedAsBad) { |
| HttpNetworkSession::Params params; |
| params.enable_quic = true; |
| params.enable_quic_for_proxies = true; |
| + params.disable_preconnects = false; |
| scoped_refptr<SSLConfigServiceDefaults> ssl_config_service( |
| new SSLConfigServiceDefaults); |
| HttpServerPropertiesImpl http_server_properties; |
| @@ -748,6 +750,56 @@ TEST_P(HttpStreamFactoryTest, QuicLossyProxyMarkedAsBad) { |
| EXPECT_TRUE(iter != retry_info.end()); |
| } |
| +TEST_P(HttpStreamFactoryTest, PreconnectDisabled) { |
|
Ryan Hamilton
2015/12/05 04:16:17
It'd be good to have a test where preconnect works
ramant (doing other things)
2015/12/07 20:05:39
Done.
|
| + // Set up QUIC as alternative_service. |
| + HttpServerPropertiesImpl http_server_properties; |
| + const AlternativeService alternative_service1(QUIC, "www.google.com", 443); |
| + AlternativeServiceInfoVector alternative_service_info_vector; |
| + base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| + alternative_service_info_vector.push_back( |
| + AlternativeServiceInfo(alternative_service1, 1.0, expiration)); |
| + HostPortPair host_port_pair(alternative_service1.host_port_pair()); |
| + http_server_properties.SetAlternativeServices( |
| + host_port_pair, alternative_service_info_vector); |
| + |
| + SpdySessionDependencies session_deps(GetParam()); |
| + |
| + // Setup params. |
| + HttpNetworkSession::Params params = |
| + SpdySessionDependencies::CreateSessionParams(&session_deps); |
| + params.enable_quic = true; |
| + params.disable_preconnects = true; |
| + params.http_server_properties = http_server_properties.GetWeakPtr(); |
| + |
| + scoped_ptr<HttpNetworkSession> session(new HttpNetworkSession(params)); |
| + |
| + // Setup 0RTT for QUIC. |
| + QuicStreamFactory* factory = session->quic_stream_factory(); |
| + factory->set_require_confirmation(false); |
| + test::QuicStreamFactoryPeer::CacheDummyServerConfig(factory, host_port_pair, |
| + PRIVACY_MODE_DISABLED); |
| + |
| + HttpNetworkSessionPeer peer(session.get()); |
| + CapturePreconnectsTransportSocketPool* transport_conn_pool = |
| + new CapturePreconnectsTransportSocketPool( |
| + session_deps.host_resolver.get(), session_deps.cert_verifier.get()); |
| + scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( |
| + new MockClientSocketPoolManager); |
| + mock_pool_manager->SetTransportSocketPool(transport_conn_pool); |
| + peer.SetClientSocketPoolManager(mock_pool_manager.Pass()); |
| + |
| + HttpRequestInfo request; |
| + request.method = "GET"; |
| + request.url = GURL("https://www.google.com:443"); |
|
Ryan Hamilton
2015/12/05 04:16:17
nit: do you need :443?
ramant (doing other things)
2015/12/07 20:05:39
Done.
|
| + request.load_flags = 0; |
| + |
| + SSLConfig ssl_config; |
| + session->ssl_config_service()->GetSSLConfig(&ssl_config); |
| + session->http_stream_factory()->PreconnectStreams(1, request, ssl_config, |
| + ssl_config); |
| + EXPECT_EQ(-1, transport_conn_pool->last_num_streams()); |
| +} |
| + |
| namespace { |
| TEST_P(HttpStreamFactoryTest, PrivacyModeDisablesChannelId) { |