| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_stream_factory_impl.h" | 5 #include "net/http/http_stream_factory_impl.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 695 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 706 ERR_MSG_TOO_BIG, | 706 ERR_MSG_TOO_BIG, |
| 707 }; | 707 }; |
| 708 | 708 |
| 709 // Tests that a bad QUIC proxy is added to the list of bad proxies. | 709 // Tests that a bad QUIC proxy is added to the list of bad proxies. |
| 710 TEST_F(HttpStreamFactoryTest, QuicProxyMarkedAsBad) { | 710 TEST_F(HttpStreamFactoryTest, QuicProxyMarkedAsBad) { |
| 711 for (size_t i = 0; i < arraysize(quic_proxy_test_mock_errors); ++i) { | 711 for (size_t i = 0; i < arraysize(quic_proxy_test_mock_errors); ++i) { |
| 712 std::unique_ptr<ProxyService> proxy_service; | 712 std::unique_ptr<ProxyService> proxy_service; |
| 713 proxy_service = | 713 proxy_service = |
| 714 ProxyService::CreateFixedFromPacResult("QUIC bad:99; DIRECT"); | 714 ProxyService::CreateFixedFromPacResult("QUIC bad:99; DIRECT"); |
| 715 | 715 |
| 716 HttpNetworkSession::Params params; | 716 HttpNetworkSession::Params session_params; |
| 717 params.enable_quic = true; | 717 session_params.enable_quic = true; |
| 718 |
| 719 HttpNetworkSession::Context session_context; |
| 718 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service( | 720 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service( |
| 719 new SSLConfigServiceDefaults); | 721 new SSLConfigServiceDefaults); |
| 720 HttpServerPropertiesImpl http_server_properties; | 722 HttpServerPropertiesImpl http_server_properties; |
| 721 MockClientSocketFactory socket_factory; | 723 MockClientSocketFactory socket_factory; |
| 722 params.client_socket_factory = &socket_factory; | 724 session_context.client_socket_factory = &socket_factory; |
| 723 MockHostResolver host_resolver; | 725 MockHostResolver host_resolver; |
| 724 params.host_resolver = &host_resolver; | 726 session_context.host_resolver = &host_resolver; |
| 725 MockCertVerifier cert_verifier; | 727 MockCertVerifier cert_verifier; |
| 726 params.cert_verifier = &cert_verifier; | 728 session_context.cert_verifier = &cert_verifier; |
| 727 TransportSecurityState transport_security_state; | 729 TransportSecurityState transport_security_state; |
| 728 params.transport_security_state = &transport_security_state; | 730 session_context.transport_security_state = &transport_security_state; |
| 729 MultiLogCTVerifier ct_verifier; | 731 MultiLogCTVerifier ct_verifier; |
| 730 params.cert_transparency_verifier = &ct_verifier; | 732 session_context.cert_transparency_verifier = &ct_verifier; |
| 731 CTPolicyEnforcer ct_policy_enforcer; | 733 CTPolicyEnforcer ct_policy_enforcer; |
| 732 params.ct_policy_enforcer = &ct_policy_enforcer; | 734 session_context.ct_policy_enforcer = &ct_policy_enforcer; |
| 733 params.proxy_service = proxy_service.get(); | 735 session_context.proxy_service = proxy_service.get(); |
| 734 params.ssl_config_service = ssl_config_service.get(); | 736 session_context.ssl_config_service = ssl_config_service.get(); |
| 735 params.http_server_properties = &http_server_properties; | 737 session_context.http_server_properties = &http_server_properties; |
| 736 | 738 |
| 737 auto session = base::MakeUnique<HttpNetworkSession>(params); | 739 auto session = |
| 740 base::MakeUnique<HttpNetworkSession>(session_params, session_context); |
| 738 session->quic_stream_factory()->set_require_confirmation(false); | 741 session->quic_stream_factory()->set_require_confirmation(false); |
| 739 | 742 |
| 740 StaticSocketDataProvider socket_data1; | 743 StaticSocketDataProvider socket_data1; |
| 741 socket_data1.set_connect_data( | 744 socket_data1.set_connect_data( |
| 742 MockConnect(ASYNC, quic_proxy_test_mock_errors[i])); | 745 MockConnect(ASYNC, quic_proxy_test_mock_errors[i])); |
| 743 socket_factory.AddSocketDataProvider(&socket_data1); | 746 socket_factory.AddSocketDataProvider(&socket_data1); |
| 744 | 747 |
| 745 // Second connection attempt succeeds. | 748 // Second connection attempt succeeds. |
| 746 StaticSocketDataProvider socket_data2; | 749 StaticSocketDataProvider socket_data2; |
| 747 socket_data2.set_connect_data(MockConnect(ASYNC, OK)); | 750 socket_data2.set_connect_data(MockConnect(ASYNC, OK)); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 831 | 834 |
| 832 private: | 835 private: |
| 833 std::vector<std::unique_ptr<QuicEncryptedPacket>> packets_; | 836 std::vector<std::unique_ptr<QuicEncryptedPacket>> packets_; |
| 834 std::vector<MockWrite> writes_; | 837 std::vector<MockWrite> writes_; |
| 835 std::vector<MockRead> reads_; | 838 std::vector<MockRead> reads_; |
| 836 size_t packet_number_; | 839 size_t packet_number_; |
| 837 std::unique_ptr<SequencedSocketData> socket_data_; | 840 std::unique_ptr<SequencedSocketData> socket_data_; |
| 838 }; | 841 }; |
| 839 | 842 |
| 840 void SetupForQuicAlternativeProxyTest( | 843 void SetupForQuicAlternativeProxyTest( |
| 841 HttpNetworkSession::Params* params, | 844 HttpNetworkSession::Params* session_params, |
| 845 HttpNetworkSession::Context* session_context, |
| 842 MockClientSocketFactory* socket_factory, | 846 MockClientSocketFactory* socket_factory, |
| 843 ProxyService* proxy_service, | 847 ProxyService* proxy_service, |
| 844 TestProxyDelegate* test_proxy_delegate, | 848 TestProxyDelegate* test_proxy_delegate, |
| 845 HttpServerPropertiesImpl* http_server_properties, | 849 HttpServerPropertiesImpl* http_server_properties, |
| 846 MockCertVerifier* cert_verifier, | 850 MockCertVerifier* cert_verifier, |
| 847 CTPolicyEnforcer* ct_policy_enforcer, | 851 CTPolicyEnforcer* ct_policy_enforcer, |
| 848 MultiLogCTVerifier* ct_verifier, | 852 MultiLogCTVerifier* ct_verifier, |
| 849 SSLConfigServiceDefaults* ssl_config_service, | 853 SSLConfigServiceDefaults* ssl_config_service, |
| 850 MockHostResolver* host_resolver, | 854 MockHostResolver* host_resolver, |
| 851 TransportSecurityState* transport_security_state, | 855 TransportSecurityState* transport_security_state, |
| 852 bool set_alternative_proxy_server) { | 856 bool set_alternative_proxy_server) { |
| 853 params->enable_quic = true; | 857 session_params->enable_quic = true; |
| 854 params->client_socket_factory = socket_factory; | 858 |
| 855 params->host_resolver = host_resolver; | 859 session_context->client_socket_factory = socket_factory; |
| 856 params->transport_security_state = transport_security_state; | 860 session_context->host_resolver = host_resolver; |
| 857 params->proxy_service = proxy_service; | 861 session_context->transport_security_state = transport_security_state; |
| 858 params->ssl_config_service = ssl_config_service; | 862 session_context->proxy_service = proxy_service; |
| 859 params->http_server_properties = http_server_properties; | 863 session_context->ssl_config_service = ssl_config_service; |
| 860 params->cert_verifier = cert_verifier; | 864 session_context->http_server_properties = http_server_properties; |
| 861 params->ct_policy_enforcer = ct_policy_enforcer; | 865 session_context->cert_verifier = cert_verifier; |
| 862 params->cert_transparency_verifier = ct_verifier; | 866 session_context->ct_policy_enforcer = ct_policy_enforcer; |
| 867 session_context->cert_transparency_verifier = ct_verifier; |
| 863 | 868 |
| 864 if (set_alternative_proxy_server) { | 869 if (set_alternative_proxy_server) { |
| 865 test_proxy_delegate->set_alternative_proxy_server( | 870 test_proxy_delegate->set_alternative_proxy_server( |
| 866 ProxyServer::FromPacString("QUIC badproxy:99")); | 871 ProxyServer::FromPacString("QUIC badproxy:99")); |
| 867 } | 872 } |
| 868 params->proxy_delegate = test_proxy_delegate; | 873 session_context->proxy_delegate = test_proxy_delegate; |
| 869 } | 874 } |
| 870 | 875 |
| 871 } // namespace | 876 } // namespace |
| 872 | 877 |
| 873 // Tests that a HTTPS proxy that supports QUIC alternative proxy server is | 878 // Tests that a HTTPS proxy that supports QUIC alternative proxy server is |
| 874 // marked as bad if connecting to both the default proxy and the alternative | 879 // marked as bad if connecting to both the default proxy and the alternative |
| 875 // proxy is unsuccessful. | 880 // proxy is unsuccessful. |
| 876 TEST_F(HttpStreamFactoryTest, WithQUICAlternativeProxyMarkedAsBad) { | 881 TEST_F(HttpStreamFactoryTest, WithQUICAlternativeProxyMarkedAsBad) { |
| 877 const bool set_alternative_proxy_server_values[] = { | 882 const bool set_alternative_proxy_server_values[] = { |
| 878 false, true, | 883 false, true, |
| 879 }; | 884 }; |
| 880 | 885 |
| 881 for (auto mock_error : quic_proxy_test_mock_errors) { | 886 for (auto mock_error : quic_proxy_test_mock_errors) { |
| 882 for (auto set_alternative_proxy_server : | 887 for (auto set_alternative_proxy_server : |
| 883 set_alternative_proxy_server_values) { | 888 set_alternative_proxy_server_values) { |
| 884 HttpNetworkSession::Params params; | 889 HttpNetworkSession::Params session_params; |
| 890 HttpNetworkSession::Context session_context; |
| 885 MockClientSocketFactory socket_factory; | 891 MockClientSocketFactory socket_factory; |
| 886 std::unique_ptr<ProxyService> proxy_service = | 892 std::unique_ptr<ProxyService> proxy_service = |
| 887 ProxyService::CreateFixedFromPacResult( | 893 ProxyService::CreateFixedFromPacResult( |
| 888 "HTTPS badproxy:99; HTTPS badfallbackproxy:98; DIRECT"); | 894 "HTTPS badproxy:99; HTTPS badfallbackproxy:98; DIRECT"); |
| 889 TestProxyDelegate test_proxy_delegate; | 895 TestProxyDelegate test_proxy_delegate; |
| 890 HttpServerPropertiesImpl http_server_properties; | 896 HttpServerPropertiesImpl http_server_properties; |
| 891 MockCertVerifier cert_verifier; | 897 MockCertVerifier cert_verifier; |
| 892 CTPolicyEnforcer ct_policy_enforcer; | 898 CTPolicyEnforcer ct_policy_enforcer; |
| 893 MultiLogCTVerifier ct_verifier; | 899 MultiLogCTVerifier ct_verifier; |
| 894 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service( | 900 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service( |
| 895 new SSLConfigServiceDefaults); | 901 new SSLConfigServiceDefaults); |
| 896 MockHostResolver host_resolver; | 902 MockHostResolver host_resolver; |
| 897 TransportSecurityState transport_security_state; | 903 TransportSecurityState transport_security_state; |
| 898 SetupForQuicAlternativeProxyTest( | 904 SetupForQuicAlternativeProxyTest( |
| 899 ¶ms, &socket_factory, proxy_service.get(), &test_proxy_delegate, | 905 &session_params, &session_context, &socket_factory, |
| 900 &http_server_properties, &cert_verifier, &ct_policy_enforcer, | 906 proxy_service.get(), &test_proxy_delegate, &http_server_properties, |
| 901 &ct_verifier, ssl_config_service.get(), &host_resolver, | 907 &cert_verifier, &ct_policy_enforcer, &ct_verifier, |
| 902 &transport_security_state, set_alternative_proxy_server); | 908 ssl_config_service.get(), &host_resolver, &transport_security_state, |
| 909 set_alternative_proxy_server); |
| 903 | 910 |
| 904 auto session = base::MakeUnique<HttpNetworkSession>(params); | 911 auto session = |
| 912 base::MakeUnique<HttpNetworkSession>(session_params, session_context); |
| 905 | 913 |
| 906 // Before starting the test, verify that there are no proxies marked as | 914 // Before starting the test, verify that there are no proxies marked as |
| 907 // bad. | 915 // bad. |
| 908 ASSERT_TRUE(session->proxy_service()->proxy_retry_info().empty()) | 916 ASSERT_TRUE(session->proxy_service()->proxy_retry_info().empty()) |
| 909 << mock_error; | 917 << mock_error; |
| 910 | 918 |
| 911 StaticSocketDataProvider socket_data_proxy_main_job; | 919 StaticSocketDataProvider socket_data_proxy_main_job; |
| 912 socket_data_proxy_main_job.set_connect_data( | 920 socket_data_proxy_main_job.set_connect_data( |
| 913 MockConnect(ASYNC, mock_error)); | 921 MockConnect(ASYNC, mock_error)); |
| 914 socket_factory.AddSocketDataProvider(&socket_data_proxy_main_job); | 922 socket_factory.AddSocketDataProvider(&socket_data_proxy_main_job); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 992 } | 1000 } |
| 993 } | 1001 } |
| 994 } | 1002 } |
| 995 } | 1003 } |
| 996 } | 1004 } |
| 997 | 1005 |
| 998 // Tests that a HTTPS proxy that supports QUIC alternative proxy server is | 1006 // Tests that a HTTPS proxy that supports QUIC alternative proxy server is |
| 999 // not marked as bad if only the alternative proxy server job fails. | 1007 // not marked as bad if only the alternative proxy server job fails. |
| 1000 TEST_F(HttpStreamFactoryTest, WithQUICAlternativeProxyNotMarkedAsBad) { | 1008 TEST_F(HttpStreamFactoryTest, WithQUICAlternativeProxyNotMarkedAsBad) { |
| 1001 for (auto mock_error : quic_proxy_test_mock_errors) { | 1009 for (auto mock_error : quic_proxy_test_mock_errors) { |
| 1002 HttpNetworkSession::Params params; | 1010 HttpNetworkSession::Params session_params; |
| 1011 HttpNetworkSession::Context session_context; |
| 1003 MockClientSocketFactory socket_factory; | 1012 MockClientSocketFactory socket_factory; |
| 1004 std::unique_ptr<ProxyService> proxy_service = | 1013 std::unique_ptr<ProxyService> proxy_service = |
| 1005 ProxyService::CreateFixedFromPacResult("HTTPS badproxy:99; DIRECT"); | 1014 ProxyService::CreateFixedFromPacResult("HTTPS badproxy:99; DIRECT"); |
| 1006 TestProxyDelegate test_proxy_delegate; | 1015 TestProxyDelegate test_proxy_delegate; |
| 1007 HttpServerPropertiesImpl http_server_properties; | 1016 HttpServerPropertiesImpl http_server_properties; |
| 1008 MockCertVerifier cert_verifier; | 1017 MockCertVerifier cert_verifier; |
| 1009 CTPolicyEnforcer ct_policy_enforcer; | 1018 CTPolicyEnforcer ct_policy_enforcer; |
| 1010 MultiLogCTVerifier ct_verifier; | 1019 MultiLogCTVerifier ct_verifier; |
| 1011 | 1020 |
| 1012 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service( | 1021 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service( |
| 1013 new SSLConfigServiceDefaults); | 1022 new SSLConfigServiceDefaults); |
| 1014 MockHostResolver host_resolver; | 1023 MockHostResolver host_resolver; |
| 1015 TransportSecurityState transport_security_state; | 1024 TransportSecurityState transport_security_state; |
| 1016 | 1025 |
| 1017 SetupForQuicAlternativeProxyTest( | 1026 SetupForQuicAlternativeProxyTest( |
| 1018 ¶ms, &socket_factory, proxy_service.get(), &test_proxy_delegate, | 1027 &session_params, &session_context, &socket_factory, proxy_service.get(), |
| 1019 &http_server_properties, &cert_verifier, &ct_policy_enforcer, | 1028 &test_proxy_delegate, &http_server_properties, &cert_verifier, |
| 1020 &ct_verifier, ssl_config_service.get(), &host_resolver, | 1029 &ct_policy_enforcer, &ct_verifier, ssl_config_service.get(), |
| 1021 &transport_security_state, true); | 1030 &host_resolver, &transport_security_state, true); |
| 1022 | 1031 |
| 1023 HostPortPair host_port_pair("badproxy", 99); | 1032 HostPortPair host_port_pair("badproxy", 99); |
| 1024 auto session = base::MakeUnique<HttpNetworkSession>(params); | 1033 auto session = |
| 1034 base::MakeUnique<HttpNetworkSession>(session_params, session_context); |
| 1025 | 1035 |
| 1026 // Before starting the test, verify that there are no proxies marked as | 1036 // Before starting the test, verify that there are no proxies marked as |
| 1027 // bad. | 1037 // bad. |
| 1028 ASSERT_TRUE(session->proxy_service()->proxy_retry_info().empty()) | 1038 ASSERT_TRUE(session->proxy_service()->proxy_retry_info().empty()) |
| 1029 << mock_error; | 1039 << mock_error; |
| 1030 | 1040 |
| 1031 StaticSocketDataProvider socket_data_proxy_main_job; | 1041 StaticSocketDataProvider socket_data_proxy_main_job; |
| 1032 socket_data_proxy_main_job.set_connect_data(MockConnect(ASYNC, mock_error)); | 1042 socket_data_proxy_main_job.set_connect_data(MockConnect(ASYNC, mock_error)); |
| 1033 socket_factory.AddSocketDataProvider(&socket_data_proxy_main_job); | 1043 socket_factory.AddSocketDataProvider(&socket_data_proxy_main_job); |
| 1034 | 1044 |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1106 HostPortPair host_port_pair(alternative_service.host_port_pair()); | 1116 HostPortPair host_port_pair(alternative_service.host_port_pair()); |
| 1107 url::SchemeHostPort server("https", host_port_pair.host(), | 1117 url::SchemeHostPort server("https", host_port_pair.host(), |
| 1108 host_port_pair.port()); | 1118 host_port_pair.port()); |
| 1109 http_server_properties.SetAlternativeServices( | 1119 http_server_properties.SetAlternativeServices( |
| 1110 server, alternative_service_info_vector); | 1120 server, alternative_service_info_vector); |
| 1111 | 1121 |
| 1112 SpdySessionDependencies session_deps( | 1122 SpdySessionDependencies session_deps( |
| 1113 ProxyService::CreateFixed("http_proxy")); | 1123 ProxyService::CreateFixed("http_proxy")); |
| 1114 | 1124 |
| 1115 // Setup params to disable preconnect, but QUIC doesn't 0RTT. | 1125 // Setup params to disable preconnect, but QUIC doesn't 0RTT. |
| 1116 HttpNetworkSession::Params params = | 1126 HttpNetworkSession::Params session_params = |
| 1117 SpdySessionDependencies::CreateSessionParams(&session_deps); | 1127 SpdySessionDependencies::CreateSessionParams(&session_deps); |
| 1118 params.enable_quic = true; | 1128 session_params.enable_quic = true; |
| 1119 params.http_server_properties = &http_server_properties; | |
| 1120 | 1129 |
| 1121 auto session = base::MakeUnique<HttpNetworkSession>(params); | 1130 HttpNetworkSession::Context session_context = |
| 1131 SpdySessionDependencies::CreateSessionContext(&session_deps); |
| 1132 session_context.http_server_properties = &http_server_properties; |
| 1133 |
| 1134 auto session = |
| 1135 base::MakeUnique<HttpNetworkSession>(session_params, session_context); |
| 1122 HttpNetworkSessionPeer peer(session.get()); | 1136 HttpNetworkSessionPeer peer(session.get()); |
| 1123 HostPortPair proxy_host("http_proxy", 80); | 1137 HostPortPair proxy_host("http_proxy", 80); |
| 1124 CapturePreconnectsHttpProxySocketPool* http_proxy_pool = | 1138 CapturePreconnectsHttpProxySocketPool* http_proxy_pool = |
| 1125 new CapturePreconnectsHttpProxySocketPool( | 1139 new CapturePreconnectsHttpProxySocketPool( |
| 1126 session_deps.host_resolver.get(), session_deps.cert_verifier.get(), | 1140 session_deps.host_resolver.get(), session_deps.cert_verifier.get(), |
| 1127 session_deps.transport_security_state.get(), | 1141 session_deps.transport_security_state.get(), |
| 1128 session_deps.cert_transparency_verifier.get(), | 1142 session_deps.cert_transparency_verifier.get(), |
| 1129 session_deps.ct_policy_enforcer.get()); | 1143 session_deps.ct_policy_enforcer.get()); |
| 1130 CapturePreconnectsSSLSocketPool* ssl_conn_pool = | 1144 CapturePreconnectsSSLSocketPool* ssl_conn_pool = |
| 1131 new CapturePreconnectsSSLSocketPool( | 1145 new CapturePreconnectsSSLSocketPool( |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1155 ProxyService::CreateFixedFromPacResult("HTTPS myproxy.org:443"); | 1169 ProxyService::CreateFixedFromPacResult("HTTPS myproxy.org:443"); |
| 1156 | 1170 |
| 1157 // Set up the proxy server as a server that supports request priorities. | 1171 // Set up the proxy server as a server that supports request priorities. |
| 1158 HttpServerPropertiesImpl http_server_properties; | 1172 HttpServerPropertiesImpl http_server_properties; |
| 1159 if (set_http_server_properties) { | 1173 if (set_http_server_properties) { |
| 1160 url::SchemeHostPort spdy_server("https", "myproxy.org", 443); | 1174 url::SchemeHostPort spdy_server("https", "myproxy.org", 443); |
| 1161 http_server_properties.SetSupportsSpdy(spdy_server, true); | 1175 http_server_properties.SetSupportsSpdy(spdy_server, true); |
| 1162 } | 1176 } |
| 1163 | 1177 |
| 1164 SpdySessionDependencies session_deps; | 1178 SpdySessionDependencies session_deps; |
| 1165 HttpNetworkSession::Params params = | 1179 HttpNetworkSession::Params session_params = |
| 1166 SpdySessionDependencies::CreateSessionParams(&session_deps); | 1180 SpdySessionDependencies::CreateSessionParams(&session_deps); |
| 1167 params.enable_quic = true; | 1181 session_params.enable_quic = true; |
| 1168 params.proxy_service = proxy_service.get(); | |
| 1169 params.http_server_properties = &http_server_properties; | |
| 1170 | 1182 |
| 1171 auto session = base::MakeUnique<HttpNetworkSession>(params); | 1183 HttpNetworkSession::Context session_context = |
| 1184 SpdySessionDependencies::CreateSessionContext(&session_deps); |
| 1185 session_context.proxy_service = proxy_service.get(); |
| 1186 session_context.http_server_properties = &http_server_properties; |
| 1187 |
| 1188 auto session = |
| 1189 base::MakeUnique<HttpNetworkSession>(session_params, session_context); |
| 1172 | 1190 |
| 1173 HttpNetworkSessionPeer peer(session.get()); | 1191 HttpNetworkSessionPeer peer(session.get()); |
| 1174 HostPortPair proxy_host("myproxy.org", 443); | 1192 HostPortPair proxy_host("myproxy.org", 443); |
| 1175 | 1193 |
| 1176 for (int preconnect_request = 0; preconnect_request < 2; | 1194 for (int preconnect_request = 0; preconnect_request < 2; |
| 1177 ++preconnect_request) { | 1195 ++preconnect_request) { |
| 1178 CapturePreconnectsHttpProxySocketPool* http_proxy_pool = | 1196 CapturePreconnectsHttpProxySocketPool* http_proxy_pool = |
| 1179 new CapturePreconnectsHttpProxySocketPool( | 1197 new CapturePreconnectsHttpProxySocketPool( |
| 1180 session_deps.host_resolver.get(), | 1198 session_deps.host_resolver.get(), |
| 1181 session_deps.cert_verifier.get(), | 1199 session_deps.cert_verifier.get(), |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1243 std::unique_ptr<ProxyService> proxy_service = | 1261 std::unique_ptr<ProxyService> proxy_service = |
| 1244 ProxyService::CreateFixedFromPacResult("HTTPS myproxy.org:443"); | 1262 ProxyService::CreateFixedFromPacResult("HTTPS myproxy.org:443"); |
| 1245 | 1263 |
| 1246 // Set up the proxy server as a server that supports request priorities. | 1264 // Set up the proxy server as a server that supports request priorities. |
| 1247 HttpServerPropertiesImpl http_server_properties; | 1265 HttpServerPropertiesImpl http_server_properties; |
| 1248 | 1266 |
| 1249 url::SchemeHostPort spdy_server("https", "myproxy.org", 443); | 1267 url::SchemeHostPort spdy_server("https", "myproxy.org", 443); |
| 1250 http_server_properties.SetSupportsSpdy(spdy_server, true); | 1268 http_server_properties.SetSupportsSpdy(spdy_server, true); |
| 1251 | 1269 |
| 1252 SpdySessionDependencies session_deps; | 1270 SpdySessionDependencies session_deps; |
| 1253 HttpNetworkSession::Params params = | 1271 HttpNetworkSession::Params session_params = |
| 1254 SpdySessionDependencies::CreateSessionParams(&session_deps); | 1272 SpdySessionDependencies::CreateSessionParams(&session_deps); |
| 1255 params.enable_quic = true; | 1273 session_params.enable_quic = true; |
| 1256 params.proxy_service = proxy_service.get(); | |
| 1257 params.http_server_properties = &http_server_properties; | |
| 1258 | 1274 |
| 1259 auto session = base::MakeUnique<HttpNetworkSession>(params); | 1275 HttpNetworkSession::Context session_context = |
| 1276 SpdySessionDependencies::CreateSessionContext(&session_deps); |
| 1277 session_context.proxy_service = proxy_service.get(); |
| 1278 session_context.http_server_properties = &http_server_properties; |
| 1279 |
| 1280 auto session = |
| 1281 base::MakeUnique<HttpNetworkSession>(session_params, session_context); |
| 1260 | 1282 |
| 1261 HttpNetworkSessionPeer peer(session.get()); | 1283 HttpNetworkSessionPeer peer(session.get()); |
| 1262 HostPortPair proxy_host("myproxy.org", 443); | 1284 HostPortPair proxy_host("myproxy.org", 443); |
| 1263 | 1285 |
| 1264 CapturePreconnectsHttpProxySocketPool* http_proxy_pool = | 1286 CapturePreconnectsHttpProxySocketPool* http_proxy_pool = |
| 1265 new CapturePreconnectsHttpProxySocketPool( | 1287 new CapturePreconnectsHttpProxySocketPool( |
| 1266 session_deps.host_resolver.get(), session_deps.cert_verifier.get(), | 1288 session_deps.host_resolver.get(), session_deps.cert_verifier.get(), |
| 1267 session_deps.transport_security_state.get(), | 1289 session_deps.transport_security_state.get(), |
| 1268 session_deps.cert_transparency_verifier.get(), | 1290 session_deps.cert_transparency_verifier.get(), |
| 1269 session_deps.ct_policy_enforcer.get()); | 1291 session_deps.ct_policy_enforcer.get()); |
| (...skipping 875 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2145 void TearDown() override { session_.reset(); } | 2167 void TearDown() override { session_.reset(); } |
| 2146 | 2168 |
| 2147 // Disable bidirectional stream over QUIC. This should be invoked before | 2169 // Disable bidirectional stream over QUIC. This should be invoked before |
| 2148 // Initialize(). | 2170 // Initialize(). |
| 2149 void DisableQuicBidirectionalStream() { | 2171 void DisableQuicBidirectionalStream() { |
| 2150 params_.quic_disable_bidirectional_streams = true; | 2172 params_.quic_disable_bidirectional_streams = true; |
| 2151 } | 2173 } |
| 2152 | 2174 |
| 2153 void Initialize() { | 2175 void Initialize() { |
| 2154 params_.enable_quic = true; | 2176 params_.enable_quic = true; |
| 2155 params_.http_server_properties = &http_server_properties_; | 2177 params_.quic_supported_versions = test::SupportedVersions(GetParam()); |
| 2156 params_.quic_random = &random_generator_; | 2178 |
| 2157 params_.quic_clock = &clock_; | 2179 HttpNetworkSession::Context session_context; |
| 2180 session_context.http_server_properties = &http_server_properties_; |
| 2181 session_context.quic_random = &random_generator_; |
| 2182 session_context.quic_clock = &clock_; |
| 2158 | 2183 |
| 2159 // Load a certificate that is valid for *.example.org | 2184 // Load a certificate that is valid for *.example.org |
| 2160 scoped_refptr<X509Certificate> test_cert( | 2185 scoped_refptr<X509Certificate> test_cert( |
| 2161 ImportCertFromFile(GetTestCertsDirectory(), "wildcard.pem")); | 2186 ImportCertFromFile(GetTestCertsDirectory(), "wildcard.pem")); |
| 2162 EXPECT_TRUE(test_cert.get()); | 2187 EXPECT_TRUE(test_cert.get()); |
| 2163 verify_details_.cert_verify_result.verified_cert = test_cert; | 2188 verify_details_.cert_verify_result.verified_cert = test_cert; |
| 2164 verify_details_.cert_verify_result.is_issued_by_known_root = true; | 2189 verify_details_.cert_verify_result.is_issued_by_known_root = true; |
| 2165 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); | 2190 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); |
| 2166 crypto_client_stream_factory_.set_handshake_mode( | 2191 crypto_client_stream_factory_.set_handshake_mode( |
| 2167 MockCryptoClientStream::CONFIRM_HANDSHAKE); | 2192 MockCryptoClientStream::CONFIRM_HANDSHAKE); |
| 2168 params_.cert_verifier = &cert_verifier_; | 2193 session_context.cert_verifier = &cert_verifier_; |
| 2169 params_.quic_crypto_client_stream_factory = &crypto_client_stream_factory_; | 2194 session_context.quic_crypto_client_stream_factory = |
| 2170 params_.quic_supported_versions = test::SupportedVersions(GetParam()); | 2195 &crypto_client_stream_factory_; |
| 2171 params_.transport_security_state = &transport_security_state_; | 2196 session_context.transport_security_state = &transport_security_state_; |
| 2172 params_.cert_transparency_verifier = &ct_verifier_; | 2197 session_context.cert_transparency_verifier = &ct_verifier_; |
| 2173 params_.ct_policy_enforcer = &ct_policy_enforcer_; | 2198 session_context.ct_policy_enforcer = &ct_policy_enforcer_; |
| 2174 params_.host_resolver = &host_resolver_; | 2199 session_context.host_resolver = &host_resolver_; |
| 2175 params_.proxy_service = proxy_service_.get(); | 2200 session_context.proxy_service = proxy_service_.get(); |
| 2176 params_.ssl_config_service = ssl_config_service_.get(); | 2201 session_context.ssl_config_service = ssl_config_service_.get(); |
| 2177 params_.client_socket_factory = &socket_factory_; | 2202 session_context.client_socket_factory = &socket_factory_; |
| 2178 session_ = base::MakeUnique<HttpNetworkSession>(params_); | 2203 session_.reset(new HttpNetworkSession(params_, session_context)); |
| 2179 session_->quic_stream_factory()->set_require_confirmation(false); | 2204 session_->quic_stream_factory()->set_require_confirmation(false); |
| 2180 } | 2205 } |
| 2181 | 2206 |
| 2182 void AddQuicAlternativeService() { | 2207 void AddQuicAlternativeService() { |
| 2183 const AlternativeService alternative_service(kProtoQUIC, "www.example.org", | 2208 const AlternativeService alternative_service(kProtoQUIC, "www.example.org", |
| 2184 443); | 2209 443); |
| 2185 AlternativeServiceInfoVector alternative_service_info_vector; | 2210 AlternativeServiceInfoVector alternative_service_info_vector; |
| 2186 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 2211 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 2187 alternative_service_info_vector.push_back( | 2212 alternative_service_info_vector.push_back( |
| 2188 AlternativeServiceInfo(alternative_service, expiration)); | 2213 AlternativeServiceInfo(alternative_service, expiration)); |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2484 HttpNetworkSession::NORMAL_SOCKET_POOL))); | 2509 HttpNetworkSession::NORMAL_SOCKET_POOL))); |
| 2485 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetTransportSocketPool( | 2510 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetTransportSocketPool( |
| 2486 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 2511 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 2487 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( | 2512 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( |
| 2488 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 2513 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 2489 } | 2514 } |
| 2490 | 2515 |
| 2491 } // namespace | 2516 } // namespace |
| 2492 | 2517 |
| 2493 } // namespace net | 2518 } // namespace net |
| OLD | NEW |