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) { |