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 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1102 EXPECT_EQ(static_cast<int>(i + 1), | 1102 EXPECT_EQ(static_cast<int>(i + 1), |
1103 test_proxy_delegate.get_alternative_proxy_invocations()); | 1103 test_proxy_delegate.get_alternative_proxy_invocations()); |
1104 } | 1104 } |
1105 } | 1105 } |
1106 } | 1106 } |
1107 | 1107 |
1108 TEST_F(HttpStreamFactoryTest, UsePreConnectIfNoZeroRTT) { | 1108 TEST_F(HttpStreamFactoryTest, UsePreConnectIfNoZeroRTT) { |
1109 for (int num_streams = 1; num_streams < 3; ++num_streams) { | 1109 for (int num_streams = 1; num_streams < 3; ++num_streams) { |
1110 GURL url = GURL("https://www.google.com"); | 1110 GURL url = GURL("https://www.google.com"); |
1111 | 1111 |
1112 // Set up QUIC as alternative_service. | |
1113 HttpServerPropertiesImpl http_server_properties; | |
1114 const AlternativeService alternative_service(kProtoQUIC, url.host().c_str(), | |
1115 url.IntPort()); | |
1116 AlternativeServiceInfoVector alternative_service_info_vector; | |
1117 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | |
1118 alternative_service_info_vector.push_back( | |
1119 AlternativeServiceInfo(alternative_service, expiration)); | |
1120 HostPortPair host_port_pair(alternative_service.host_port_pair()); | |
1121 url::SchemeHostPort server("https", host_port_pair.host(), | |
1122 host_port_pair.port()); | |
1123 http_server_properties.SetAlternativeServices( | |
1124 server, alternative_service_info_vector); | |
1125 | |
1126 SpdySessionDependencies session_deps( | 1112 SpdySessionDependencies session_deps( |
1127 ProxyService::CreateFixed("http_proxy")); | 1113 ProxyService::CreateFixed("http_proxy")); |
1128 | 1114 |
1129 // Setup params to disable preconnect, but QUIC doesn't 0RTT. | 1115 // Setup params to disable preconnect, but QUIC doesn't 0RTT. |
1130 HttpNetworkSession::Params session_params = | 1116 HttpNetworkSession::Params session_params = |
1131 SpdySessionDependencies::CreateSessionParams(&session_deps); | 1117 SpdySessionDependencies::CreateSessionParams(&session_deps); |
1132 session_params.enable_quic = true; | 1118 session_params.enable_quic = true; |
1133 | 1119 |
| 1120 // Set up QUIC as alternative_service. |
| 1121 HttpServerPropertiesImpl http_server_properties; |
| 1122 const AlternativeService alternative_service(kProtoQUIC, url.host().c_str(), |
| 1123 url.IntPort()); |
| 1124 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 1125 HostPortPair host_port_pair(alternative_service.host_port_pair()); |
| 1126 url::SchemeHostPort server("https", host_port_pair.host(), |
| 1127 host_port_pair.port()); |
| 1128 http_server_properties.SetQuicAlternativeService( |
| 1129 server, alternative_service, expiration, |
| 1130 session_params.quic_supported_versions); |
| 1131 |
1134 HttpNetworkSession::Context session_context = | 1132 HttpNetworkSession::Context session_context = |
1135 SpdySessionDependencies::CreateSessionContext(&session_deps); | 1133 SpdySessionDependencies::CreateSessionContext(&session_deps); |
1136 session_context.http_server_properties = &http_server_properties; | 1134 session_context.http_server_properties = &http_server_properties; |
1137 | 1135 |
1138 auto session = | 1136 auto session = |
1139 base::MakeUnique<HttpNetworkSession>(session_params, session_context); | 1137 base::MakeUnique<HttpNetworkSession>(session_params, session_context); |
1140 HttpNetworkSessionPeer peer(session.get()); | 1138 HttpNetworkSessionPeer peer(session.get()); |
1141 HostPortPair proxy_host("http_proxy", 80); | 1139 HostPortPair proxy_host("http_proxy", 80); |
1142 CapturePreconnectsHttpProxySocketPool* http_proxy_pool = | 1140 CapturePreconnectsHttpProxySocketPool* http_proxy_pool = |
1143 new CapturePreconnectsHttpProxySocketPool( | 1141 new CapturePreconnectsHttpProxySocketPool( |
(...skipping 1121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2265 session_context.proxy_service = proxy_service_.get(); | 2263 session_context.proxy_service = proxy_service_.get(); |
2266 session_context.ssl_config_service = ssl_config_service_.get(); | 2264 session_context.ssl_config_service = ssl_config_service_.get(); |
2267 session_context.client_socket_factory = &socket_factory_; | 2265 session_context.client_socket_factory = &socket_factory_; |
2268 session_.reset(new HttpNetworkSession(params_, session_context)); | 2266 session_.reset(new HttpNetworkSession(params_, session_context)); |
2269 session_->quic_stream_factory()->set_require_confirmation(false); | 2267 session_->quic_stream_factory()->set_require_confirmation(false); |
2270 } | 2268 } |
2271 | 2269 |
2272 void AddQuicAlternativeService() { | 2270 void AddQuicAlternativeService() { |
2273 const AlternativeService alternative_service(kProtoQUIC, "www.example.org", | 2271 const AlternativeService alternative_service(kProtoQUIC, "www.example.org", |
2274 443); | 2272 443); |
2275 AlternativeServiceInfoVector alternative_service_info_vector; | |
2276 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 2273 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
2277 alternative_service_info_vector.push_back( | 2274 http_server_properties_.SetQuicAlternativeService( |
2278 AlternativeServiceInfo(alternative_service, expiration)); | 2275 url::SchemeHostPort(default_url_), alternative_service, expiration, |
2279 http_server_properties_.SetAlternativeServices( | 2276 session_->params().quic_supported_versions); |
2280 url::SchemeHostPort(default_url_), alternative_service_info_vector); | |
2281 } | 2277 } |
2282 | 2278 |
2283 test::QuicTestPacketMaker& client_packet_maker() { | 2279 test::QuicTestPacketMaker& client_packet_maker() { |
2284 return client_packet_maker_; | 2280 return client_packet_maker_; |
2285 } | 2281 } |
2286 test::QuicTestPacketMaker& server_packet_maker() { | 2282 test::QuicTestPacketMaker& server_packet_maker() { |
2287 return server_packet_maker_; | 2283 return server_packet_maker_; |
2288 } | 2284 } |
2289 | 2285 |
2290 MockClientSocketFactory& socket_factory() { return socket_factory_; } | 2286 MockClientSocketFactory& socket_factory() { return socket_factory_; } |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2345 | 2341 |
2346 // Add hanging data for http job. | 2342 // Add hanging data for http job. |
2347 auto hanging_data = base::MakeUnique<StaticSocketDataProvider>(); | 2343 auto hanging_data = base::MakeUnique<StaticSocketDataProvider>(); |
2348 MockConnect hanging_connect(SYNCHRONOUS, ERR_IO_PENDING); | 2344 MockConnect hanging_connect(SYNCHRONOUS, ERR_IO_PENDING); |
2349 hanging_data->set_connect_data(hanging_connect); | 2345 hanging_data->set_connect_data(hanging_connect); |
2350 socket_factory().AddSocketDataProvider(hanging_data.get()); | 2346 socket_factory().AddSocketDataProvider(hanging_data.get()); |
2351 SSLSocketDataProvider ssl_data(ASYNC, OK); | 2347 SSLSocketDataProvider ssl_data(ASYNC, OK); |
2352 socket_factory().AddSSLSocketDataProvider(&ssl_data); | 2348 socket_factory().AddSSLSocketDataProvider(&ssl_data); |
2353 | 2349 |
2354 // Set up QUIC as alternative_service. | 2350 // Set up QUIC as alternative_service. |
| 2351 Initialize(); |
2355 AddQuicAlternativeService(); | 2352 AddQuicAlternativeService(); |
2356 Initialize(); | |
2357 | 2353 |
2358 // Now request a stream. | 2354 // Now request a stream. |
2359 SSLConfig ssl_config; | 2355 SSLConfig ssl_config; |
2360 HttpRequestInfo request_info; | 2356 HttpRequestInfo request_info; |
2361 request_info.method = "GET"; | 2357 request_info.method = "GET"; |
2362 request_info.url = default_url_; | 2358 request_info.url = default_url_; |
2363 request_info.load_flags = 0; | 2359 request_info.load_flags = 0; |
2364 | 2360 |
2365 StreamRequestWaiter waiter; | 2361 StreamRequestWaiter waiter; |
2366 std::unique_ptr<HttpStreamRequest> request( | 2362 std::unique_ptr<HttpStreamRequest> request( |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2409 RequestBidirectionalStreamImplQuicNotEnabled) { | 2405 RequestBidirectionalStreamImplQuicNotEnabled) { |
2410 // Make the http job fail. | 2406 // Make the http job fail. |
2411 auto http_job_data = base::MakeUnique<StaticSocketDataProvider>(); | 2407 auto http_job_data = base::MakeUnique<StaticSocketDataProvider>(); |
2412 MockConnect failed_connect(ASYNC, ERR_CONNECTION_REFUSED); | 2408 MockConnect failed_connect(ASYNC, ERR_CONNECTION_REFUSED); |
2413 http_job_data->set_connect_data(failed_connect); | 2409 http_job_data->set_connect_data(failed_connect); |
2414 socket_factory().AddSocketDataProvider(http_job_data.get()); | 2410 socket_factory().AddSocketDataProvider(http_job_data.get()); |
2415 SSLSocketDataProvider ssl_data(ASYNC, OK); | 2411 SSLSocketDataProvider ssl_data(ASYNC, OK); |
2416 socket_factory().AddSSLSocketDataProvider(&ssl_data); | 2412 socket_factory().AddSSLSocketDataProvider(&ssl_data); |
2417 | 2413 |
2418 // Set up QUIC as alternative_service. | 2414 // Set up QUIC as alternative_service. |
2419 AddQuicAlternativeService(); | |
2420 DisableQuicBidirectionalStream(); | 2415 DisableQuicBidirectionalStream(); |
2421 Initialize(); | 2416 Initialize(); |
| 2417 AddQuicAlternativeService(); |
2422 | 2418 |
2423 // Now request a stream. | 2419 // Now request a stream. |
2424 SSLConfig ssl_config; | 2420 SSLConfig ssl_config; |
2425 HttpRequestInfo request_info; | 2421 HttpRequestInfo request_info; |
2426 request_info.method = "GET"; | 2422 request_info.method = "GET"; |
2427 request_info.url = default_url_; | 2423 request_info.url = default_url_; |
2428 request_info.load_flags = 0; | 2424 request_info.load_flags = 0; |
2429 | 2425 |
2430 StreamRequestWaiter waiter; | 2426 StreamRequestWaiter waiter; |
2431 std::unique_ptr<HttpStreamRequest> request( | 2427 std::unique_ptr<HttpStreamRequest> request( |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2471 | 2467 |
2472 // Make the http job fail. | 2468 // Make the http job fail. |
2473 auto http_job_data = base::MakeUnique<StaticSocketDataProvider>(); | 2469 auto http_job_data = base::MakeUnique<StaticSocketDataProvider>(); |
2474 MockConnect failed_connect(ASYNC, ERR_CONNECTION_REFUSED); | 2470 MockConnect failed_connect(ASYNC, ERR_CONNECTION_REFUSED); |
2475 http_job_data->set_connect_data(failed_connect); | 2471 http_job_data->set_connect_data(failed_connect); |
2476 socket_factory().AddSocketDataProvider(http_job_data.get()); | 2472 socket_factory().AddSocketDataProvider(http_job_data.get()); |
2477 SSLSocketDataProvider ssl_data(ASYNC, OK); | 2473 SSLSocketDataProvider ssl_data(ASYNC, OK); |
2478 socket_factory().AddSSLSocketDataProvider(&ssl_data); | 2474 socket_factory().AddSSLSocketDataProvider(&ssl_data); |
2479 | 2475 |
2480 // Set up QUIC as alternative_service. | 2476 // Set up QUIC as alternative_service. |
| 2477 Initialize(); |
2481 AddQuicAlternativeService(); | 2478 AddQuicAlternativeService(); |
2482 Initialize(); | |
2483 | 2479 |
2484 // Now request a stream. | 2480 // Now request a stream. |
2485 SSLConfig ssl_config; | 2481 SSLConfig ssl_config; |
2486 HttpRequestInfo request_info; | 2482 HttpRequestInfo request_info; |
2487 request_info.method = "GET"; | 2483 request_info.method = "GET"; |
2488 request_info.url = default_url_; | 2484 request_info.url = default_url_; |
2489 request_info.load_flags = 0; | 2485 request_info.load_flags = 0; |
2490 | 2486 |
2491 StreamRequestWaiter waiter; | 2487 StreamRequestWaiter waiter; |
2492 std::unique_ptr<HttpStreamRequest> request( | 2488 std::unique_ptr<HttpStreamRequest> request( |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2574 HttpNetworkSession::NORMAL_SOCKET_POOL))); | 2570 HttpNetworkSession::NORMAL_SOCKET_POOL))); |
2575 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetTransportSocketPool( | 2571 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetTransportSocketPool( |
2576 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 2572 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
2577 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( | 2573 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( |
2578 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 2574 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
2579 } | 2575 } |
2580 | 2576 |
2581 } // namespace | 2577 } // namespace |
2582 | 2578 |
2583 } // namespace net | 2579 } // namespace net |
OLD | NEW |