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 160cb8ddfd4679d55f99fe57beedce6bcaecdb44..724b4f254d4199fa079de06228a2f7973e0fff37 100644 |
| --- a/net/http/http_stream_factory_impl_unittest.cc |
| +++ b/net/http/http_stream_factory_impl_unittest.cc |
| @@ -15,7 +15,9 @@ |
| #include "net/base/port_util.h" |
| #include "net/base/test_completion_callback.h" |
| #include "net/base/test_data_directory.h" |
| +#include "net/cert/ct_policy_enforcer.h" |
| #include "net/cert/mock_cert_verifier.h" |
| +#include "net/cert/multi_log_ct_verifier.h" |
| #include "net/dns/mock_host_resolver.h" |
| #include "net/http/bidirectional_stream_impl.h" |
| #include "net/http/bidirectional_stream_request_info.h" |
| @@ -362,7 +364,10 @@ template<typename ParentPool> |
| class CapturePreconnectsSocketPool : public ParentPool { |
| public: |
| CapturePreconnectsSocketPool(HostResolver* host_resolver, |
| - CertVerifier* cert_verifier); |
| + CertVerifier* cert_verifier, |
| + TransportSecurityState* transport_security_state, |
| + CTVerifier* cert_transparency_verifier, |
| + CTPolicyEnforcer* ct_policy_enforcer); |
| int last_num_streams() const { |
| return last_num_streams_; |
| @@ -429,38 +434,46 @@ CapturePreconnectsSSLSocketPool; |
| template <typename ParentPool> |
| CapturePreconnectsSocketPool<ParentPool>::CapturePreconnectsSocketPool( |
| HostResolver* host_resolver, |
| - CertVerifier* /* cert_verifier */) |
| + CertVerifier*, |
| + TransportSecurityState*, |
| + CTVerifier*, |
| + CTPolicyEnforcer*) |
| : ParentPool(0, 0, host_resolver, nullptr, nullptr, nullptr), |
| last_num_streams_(-1) {} |
| template <> |
| CapturePreconnectsHttpProxySocketPool::CapturePreconnectsSocketPool( |
| - HostResolver* /* host_resolver */, |
| - CertVerifier* /* cert_verifier */) |
| + HostResolver*, |
| + CertVerifier*, |
| + TransportSecurityState*, |
| + CTVerifier*, |
| + CTPolicyEnforcer*) |
| : HttpProxyClientSocketPool(0, 0, nullptr, nullptr, nullptr), |
| - last_num_streams_(-1) { |
| -} |
| + last_num_streams_(-1) {} |
| template <> |
| CapturePreconnectsSSLSocketPool::CapturePreconnectsSocketPool( |
| HostResolver* /* host_resolver */, |
| - CertVerifier* cert_verifier) |
| - : SSLClientSocketPool(0, |
| - 0, |
| - cert_verifier, |
| - nullptr, // channel_id_store |
| - nullptr, // transport_security_state |
| - nullptr, // cert_transparency_verifier |
| - nullptr, // ct_policy_enforcer |
| - std::string(), // ssl_session_cache_shard |
| - nullptr, // deterministic_socket_factory |
| - nullptr, // transport_socket_pool |
| - nullptr, |
| - nullptr, |
| - nullptr, // ssl_config_service |
| - nullptr), // net_log |
| - last_num_streams_(-1) { |
| -} |
| + CertVerifier* cert_verifier, |
| + TransportSecurityState* transport_security_state, |
| + CTVerifier* cert_transparency_verifier, |
| + CTPolicyEnforcer* ct_policy_enforcer) |
| + : SSLClientSocketPool( |
| + 0, |
| + 0, |
| + cert_verifier, |
| + nullptr, // channel_id_store |
| + transport_security_state, // transport_security_state |
| + cert_transparency_verifier, // cert_transparency_verifier |
| + ct_policy_enforcer, // ct_policy_enforcer |
|
Ryan Hamilton
2016/06/16 03:31:04
no reason for the comments on the non-literals but
|
| + std::string(), // ssl_session_cache_shard |
| + nullptr, // deterministic_socket_factory |
| + nullptr, // transport_socket_pool |
| + nullptr, |
| + nullptr, |
| + nullptr, // ssl_config_service |
| + nullptr), // net_log |
| + last_num_streams_(-1) {} |
| class HttpStreamFactoryTest : public ::testing::Test, |
| public ::testing::WithParamInterface<NextProto> { |
| @@ -480,12 +493,16 @@ TEST_P(HttpStreamFactoryTest, PreconnectDirect) { |
| HttpNetworkSessionPeer peer(session.get()); |
| CapturePreconnectsTransportSocketPool* transport_conn_pool = |
| new CapturePreconnectsTransportSocketPool( |
| - session_deps.host_resolver.get(), |
| - session_deps.cert_verifier.get()); |
| + session_deps.host_resolver.get(), session_deps.cert_verifier.get(), |
| + session_deps.transport_security_state.get(), |
| + session_deps.cert_transparency_verifier.get(), |
| + session_deps.ct_policy_enforcer.get()); |
| CapturePreconnectsSSLSocketPool* ssl_conn_pool = |
| new CapturePreconnectsSSLSocketPool( |
| - session_deps.host_resolver.get(), |
| - session_deps.cert_verifier.get()); |
| + session_deps.host_resolver.get(), session_deps.cert_verifier.get(), |
| + session_deps.transport_security_state.get(), |
| + session_deps.cert_transparency_verifier.get(), |
| + session_deps.ct_policy_enforcer.get()); |
| std::unique_ptr<MockClientSocketPoolManager> mock_pool_manager( |
| new MockClientSocketPoolManager); |
| mock_pool_manager->SetTransportSocketPool(transport_conn_pool); |
| @@ -509,12 +526,16 @@ TEST_P(HttpStreamFactoryTest, PreconnectHttpProxy) { |
| HostPortPair proxy_host("http_proxy", 80); |
| CapturePreconnectsHttpProxySocketPool* http_proxy_pool = |
| new CapturePreconnectsHttpProxySocketPool( |
| - session_deps.host_resolver.get(), |
| - session_deps.cert_verifier.get()); |
| + session_deps.host_resolver.get(), session_deps.cert_verifier.get(), |
| + session_deps.transport_security_state.get(), |
| + session_deps.cert_transparency_verifier.get(), |
| + session_deps.ct_policy_enforcer.get()); |
| CapturePreconnectsSSLSocketPool* ssl_conn_pool = |
| new CapturePreconnectsSSLSocketPool( |
| - session_deps.host_resolver.get(), |
| - session_deps.cert_verifier.get()); |
| + session_deps.host_resolver.get(), session_deps.cert_verifier.get(), |
| + session_deps.transport_security_state.get(), |
| + session_deps.cert_transparency_verifier.get(), |
| + session_deps.ct_policy_enforcer.get()); |
| std::unique_ptr<MockClientSocketPoolManager> mock_pool_manager( |
| new MockClientSocketPoolManager); |
| mock_pool_manager->SetSocketPoolForHTTPProxy(proxy_host, http_proxy_pool); |
| @@ -538,12 +559,16 @@ TEST_P(HttpStreamFactoryTest, PreconnectSocksProxy) { |
| HostPortPair proxy_host("socks_proxy", 1080); |
| CapturePreconnectsSOCKSSocketPool* socks_proxy_pool = |
| new CapturePreconnectsSOCKSSocketPool( |
| - session_deps.host_resolver.get(), |
| - session_deps.cert_verifier.get()); |
| + session_deps.host_resolver.get(), session_deps.cert_verifier.get(), |
| + session_deps.transport_security_state.get(), |
| + session_deps.cert_transparency_verifier.get(), |
| + session_deps.ct_policy_enforcer.get()); |
| CapturePreconnectsSSLSocketPool* ssl_conn_pool = |
| new CapturePreconnectsSSLSocketPool( |
| - session_deps.host_resolver.get(), |
| - session_deps.cert_verifier.get()); |
| + session_deps.host_resolver.get(), session_deps.cert_verifier.get(), |
| + session_deps.transport_security_state.get(), |
| + session_deps.cert_transparency_verifier.get(), |
| + session_deps.ct_policy_enforcer.get()); |
| std::unique_ptr<MockClientSocketPoolManager> mock_pool_manager( |
| new MockClientSocketPoolManager); |
| mock_pool_manager->SetSocketPoolForSOCKSProxy(proxy_host, socks_proxy_pool); |
| @@ -573,12 +598,16 @@ TEST_P(HttpStreamFactoryTest, PreconnectDirectWithExistingSpdySession) { |
| CapturePreconnectsTransportSocketPool* transport_conn_pool = |
| new CapturePreconnectsTransportSocketPool( |
| - session_deps.host_resolver.get(), |
| - session_deps.cert_verifier.get()); |
| + session_deps.host_resolver.get(), session_deps.cert_verifier.get(), |
| + session_deps.transport_security_state.get(), |
| + session_deps.cert_transparency_verifier.get(), |
| + session_deps.ct_policy_enforcer.get()); |
| CapturePreconnectsSSLSocketPool* ssl_conn_pool = |
| new CapturePreconnectsSSLSocketPool( |
| - session_deps.host_resolver.get(), |
| - session_deps.cert_verifier.get()); |
| + session_deps.host_resolver.get(), session_deps.cert_verifier.get(), |
| + session_deps.transport_security_state.get(), |
| + session_deps.cert_transparency_verifier.get(), |
| + session_deps.ct_policy_enforcer.get()); |
| std::unique_ptr<MockClientSocketPoolManager> mock_pool_manager( |
| new MockClientSocketPoolManager); |
| mock_pool_manager->SetTransportSocketPool(transport_conn_pool); |
| @@ -607,8 +636,10 @@ TEST_P(HttpStreamFactoryTest, PreconnectUnsafePort) { |
| HttpNetworkSessionPeer peer(session.get()); |
| CapturePreconnectsTransportSocketPool* transport_conn_pool = |
| new CapturePreconnectsTransportSocketPool( |
| - session_deps.host_resolver.get(), |
| - session_deps.cert_verifier.get()); |
| + session_deps.host_resolver.get(), session_deps.cert_verifier.get(), |
| + session_deps.transport_security_state.get(), |
| + session_deps.cert_transparency_verifier.get(), |
| + session_deps.ct_policy_enforcer.get()); |
| std::unique_ptr<MockClientSocketPoolManager> mock_pool_manager( |
| new MockClientSocketPoolManager); |
| mock_pool_manager->SetTransportSocketPool(transport_conn_pool); |
| @@ -691,8 +722,14 @@ TEST_P(HttpStreamFactoryTest, UnreachableQuicProxyMarkedAsBad) { |
| params.client_socket_factory = &socket_factory; |
| MockHostResolver host_resolver; |
| params.host_resolver = &host_resolver; |
| + MockCertVerifier cert_verifier; |
| + params.cert_verifier = &cert_verifier; |
| TransportSecurityState transport_security_state; |
| params.transport_security_state = &transport_security_state; |
| + MultiLogCTVerifier ct_verifier; |
| + params.cert_transparency_verifier = &ct_verifier; |
| + CTPolicyEnforcer ct_policy_enforcer; |
| + params.ct_policy_enforcer = &ct_policy_enforcer; |
| params.proxy_service = proxy_service.get(); |
| params.ssl_config_service = ssl_config_service.get(); |
| params.http_server_properties = http_server_properties.GetWeakPtr(); |
| @@ -815,8 +852,14 @@ TEST_P(HttpStreamFactoryTest, QuicLossyProxyMarkedAsBad) { |
| params.client_socket_factory = &socket_factory; |
| MockHostResolver host_resolver; |
| params.host_resolver = &host_resolver; |
| + MockCertVerifier cert_verifier; |
| + params.cert_verifier = &cert_verifier; |
| TransportSecurityState transport_security_state; |
| params.transport_security_state = &transport_security_state; |
| + MultiLogCTVerifier ct_verifier; |
| + params.cert_transparency_verifier = &ct_verifier; |
| + CTPolicyEnforcer ct_policy_enforcer; |
| + params.ct_policy_enforcer = &ct_policy_enforcer; |
| params.proxy_service = proxy_service.get(); |
| params.ssl_config_service = ssl_config_service.get(); |
| params.http_server_properties = http_server_properties.GetWeakPtr(); |
| @@ -891,10 +934,16 @@ TEST_P(HttpStreamFactoryTest, UsePreConnectIfNoZeroRTT) { |
| HostPortPair proxy_host("http_proxy", 80); |
| CapturePreconnectsHttpProxySocketPool* http_proxy_pool = |
| new CapturePreconnectsHttpProxySocketPool( |
| - session_deps.host_resolver.get(), session_deps.cert_verifier.get()); |
| + session_deps.host_resolver.get(), session_deps.cert_verifier.get(), |
| + session_deps.transport_security_state.get(), |
| + session_deps.cert_transparency_verifier.get(), |
| + session_deps.ct_policy_enforcer.get()); |
| CapturePreconnectsSSLSocketPool* ssl_conn_pool = |
| - new CapturePreconnectsSSLSocketPool(session_deps.host_resolver.get(), |
| - session_deps.cert_verifier.get()); |
| + new CapturePreconnectsSSLSocketPool( |
| + session_deps.host_resolver.get(), session_deps.cert_verifier.get(), |
| + session_deps.transport_security_state.get(), |
| + session_deps.cert_transparency_verifier.get(), |
| + session_deps.ct_policy_enforcer.get()); |
| std::unique_ptr<MockClientSocketPoolManager> mock_pool_manager( |
| new MockClientSocketPoolManager); |
| mock_pool_manager->SetSocketPoolForHTTPProxy(proxy_host, http_proxy_pool); |
| @@ -942,7 +991,10 @@ TEST_P(HttpStreamFactoryTest, QuicDisablePreConnectIfZeroRtt) { |
| HttpNetworkSessionPeer peer(session.get()); |
| CapturePreconnectsTransportSocketPool* transport_conn_pool = |
| new CapturePreconnectsTransportSocketPool( |
| - session_deps.host_resolver.get(), session_deps.cert_verifier.get()); |
| + session_deps.host_resolver.get(), session_deps.cert_verifier.get(), |
| + session_deps.transport_security_state.get(), |
| + session_deps.cert_transparency_verifier.get(), |
| + session_deps.ct_policy_enforcer.get()); |
| std::unique_ptr<MockClientSocketPoolManager> mock_pool_manager( |
| new MockClientSocketPoolManager); |
| mock_pool_manager->SetTransportSocketPool(transport_conn_pool); |
| @@ -1031,12 +1083,22 @@ TEST_P(HttpStreamFactoryTest, PrivacyModeUsesDifferentSocketPoolGroup) { |
| SpdySessionDependencies session_deps( |
| GetParam(), ProxyService::CreateDirect()); |
| - StaticSocketDataProvider socket_data; |
| - socket_data.set_connect_data(MockConnect(ASYNC, OK)); |
| - session_deps.socket_factory->AddSocketDataProvider(&socket_data); |
| - |
| - SSLSocketDataProvider ssl(ASYNC, OK); |
| - session_deps.socket_factory->AddSSLSocketDataProvider(&ssl); |
| + StaticSocketDataProvider socket_data_1; |
| + socket_data_1.set_connect_data(MockConnect(ASYNC, OK)); |
| + session_deps.socket_factory->AddSocketDataProvider(&socket_data_1); |
| + StaticSocketDataProvider socket_data_2; |
| + socket_data_2.set_connect_data(MockConnect(ASYNC, OK)); |
| + session_deps.socket_factory->AddSocketDataProvider(&socket_data_2); |
| + StaticSocketDataProvider socket_data_3; |
| + socket_data_3.set_connect_data(MockConnect(ASYNC, OK)); |
| + session_deps.socket_factory->AddSocketDataProvider(&socket_data_3); |
| + |
| + SSLSocketDataProvider ssl_1(ASYNC, OK); |
| + session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_1); |
| + SSLSocketDataProvider ssl_2(ASYNC, OK); |
| + session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_2); |
| + SSLSocketDataProvider ssl_3(ASYNC, OK); |
| + session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_3); |
| std::unique_ptr<HttpNetworkSession> session( |
| SpdySessionDependencies::SpdyCreateSession(&session_deps)); |
| @@ -1084,6 +1146,10 @@ TEST_P(HttpStreamFactoryTest, GetLoadState) { |
| SpdySessionDependencies session_deps( |
| GetParam(), ProxyService::CreateDirect()); |
| + // Force asynchronous host resolutions, so that the LoadState will be |
| + // resolving the host. |
| + session_deps.host_resolver->set_synchronous_mode(false); |
| + |
| StaticSocketDataProvider socket_data; |
| socket_data.set_connect_data(MockConnect(ASYNC, OK)); |
| session_deps.socket_factory->AddSocketDataProvider(&socket_data); |
| @@ -1518,9 +1584,12 @@ class HttpStreamFactoryBidirectionalQuicTest |
| crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); |
| crypto_client_stream_factory_.set_handshake_mode( |
| MockCryptoClientStream::CONFIRM_HANDSHAKE); |
| + params_.cert_verifier = &cert_verifier_; |
| params_.quic_crypto_client_stream_factory = &crypto_client_stream_factory_; |
| params_.quic_supported_versions = test::SupportedVersions(GetParam()); |
| params_.transport_security_state = &transport_security_state_; |
| + params_.cert_transparency_verifier = &ct_verifier_; |
| + params_.ct_policy_enforcer = &ct_policy_enforcer_; |
| params_.host_resolver = &host_resolver_; |
| params_.proxy_service = proxy_service_.get(); |
| params_.ssl_config_service = ssl_config_service_.get(); |
| @@ -1558,10 +1627,13 @@ class HttpStreamFactoryBidirectionalQuicTest |
| MockClientSocketFactory socket_factory_; |
| std::unique_ptr<HttpNetworkSession> session_; |
| test::MockRandom random_generator_; |
| + MockCertVerifier cert_verifier_; |
| ProofVerifyDetailsChromium verify_details_; |
| MockCryptoClientStreamFactory crypto_client_stream_factory_; |
| HttpServerPropertiesImpl http_server_properties_; |
| TransportSecurityState transport_security_state_; |
| + MultiLogCTVerifier ct_verifier_; |
| + CTPolicyEnforcer ct_policy_enforcer_; |
| MockHostResolver host_resolver_; |
| std::unique_ptr<ProxyService> proxy_service_; |
| scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_; |