| 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 <memory> | 5 #include <memory> |
| 6 #include <ostream> | 6 #include <ostream> |
| 7 #include <string> | 7 #include <string> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 bool should_include_version, | 472 bool should_include_version, |
| 473 bool fin, | 473 bool fin, |
| 474 SpdyHeaderBlock headers, | 474 SpdyHeaderBlock headers, |
| 475 QuicStreamOffset* offset) { | 475 QuicStreamOffset* offset) { |
| 476 return server_maker_.MakeResponseHeadersPacketWithOffsetTracking( | 476 return server_maker_.MakeResponseHeadersPacketWithOffsetTracking( |
| 477 packet_number, stream_id, should_include_version, fin, | 477 packet_number, stream_id, should_include_version, fin, |
| 478 std::move(headers), offset); | 478 std::move(headers), offset); |
| 479 } | 479 } |
| 480 | 480 |
| 481 void CreateSession() { | 481 void CreateSession() { |
| 482 params_.enable_quic = true; | 482 params_.dynamic_shared_params = &dynamic_shared_params_; |
| 483 dynamic_shared_params_.enable_quic = true; |
| 483 params_.quic_clock = clock_; | 484 params_.quic_clock = clock_; |
| 484 params_.quic_random = &random_generator_; | 485 params_.quic_random = &random_generator_; |
| 485 params_.client_socket_factory = &socket_factory_; | 486 params_.client_socket_factory = &socket_factory_; |
| 486 params_.quic_crypto_client_stream_factory = &crypto_client_stream_factory_; | 487 params_.quic_crypto_client_stream_factory = &crypto_client_stream_factory_; |
| 487 params_.host_resolver = &host_resolver_; | 488 params_.host_resolver = &host_resolver_; |
| 488 params_.cert_verifier = &cert_verifier_; | 489 params_.cert_verifier = &cert_verifier_; |
| 489 params_.transport_security_state = &transport_security_state_; | 490 params_.transport_security_state = &transport_security_state_; |
| 490 params_.cert_transparency_verifier = cert_transparency_verifier_.get(); | 491 params_.cert_transparency_verifier = cert_transparency_verifier_.get(); |
| 491 params_.ct_policy_enforcer = &ct_policy_enforcer_; | 492 params_.ct_policy_enforcer = &ct_policy_enforcer_; |
| 492 params_.socket_performance_watcher_factory = | 493 params_.socket_performance_watcher_factory = |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 716 TransportSecurityState transport_security_state_; | 717 TransportSecurityState transport_security_state_; |
| 717 std::unique_ptr<CTVerifier> cert_transparency_verifier_; | 718 std::unique_ptr<CTVerifier> cert_transparency_verifier_; |
| 718 CTPolicyEnforcer ct_policy_enforcer_; | 719 CTPolicyEnforcer ct_policy_enforcer_; |
| 719 TestSocketPerformanceWatcherFactory test_socket_performance_watcher_factory_; | 720 TestSocketPerformanceWatcherFactory test_socket_performance_watcher_factory_; |
| 720 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_; | 721 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_; |
| 721 std::unique_ptr<ProxyService> proxy_service_; | 722 std::unique_ptr<ProxyService> proxy_service_; |
| 722 std::unique_ptr<HttpAuthHandlerFactory> auth_handler_factory_; | 723 std::unique_ptr<HttpAuthHandlerFactory> auth_handler_factory_; |
| 723 MockRandom random_generator_; | 724 MockRandom random_generator_; |
| 724 HttpServerPropertiesImpl http_server_properties_; | 725 HttpServerPropertiesImpl http_server_properties_; |
| 725 HttpNetworkSession::Params params_; | 726 HttpNetworkSession::Params params_; |
| 727 HttpNetworkSession::DynamicSharedParams dynamic_shared_params_; |
| 726 HttpRequestInfo request_; | 728 HttpRequestInfo request_; |
| 727 BoundTestNetLog net_log_; | 729 BoundTestNetLog net_log_; |
| 728 std::vector<std::unique_ptr<StaticSocketDataProvider>> hanging_data_; | 730 std::vector<std::unique_ptr<StaticSocketDataProvider>> hanging_data_; |
| 729 SSLSocketDataProvider ssl_data_; | 731 SSLSocketDataProvider ssl_data_; |
| 730 | 732 |
| 731 private: | 733 private: |
| 732 void SendRequestAndExpectQuicResponseMaybeFromProxy( | 734 void SendRequestAndExpectQuicResponseMaybeFromProxy( |
| 733 const std::string& expected, | 735 const std::string& expected, |
| 734 bool used_proxy, | 736 bool used_proxy, |
| 735 uint16_t port) { | 737 uint16_t port) { |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 846 mock_quic_data.AddSocketDataToFactory(&socket_factory_); | 848 mock_quic_data.AddSocketDataToFactory(&socket_factory_); |
| 847 | 849 |
| 848 CreateSession(); | 850 CreateSession(); |
| 849 | 851 |
| 850 SendRequestAndExpectQuicResponse("hello!"); | 852 SendRequestAndExpectQuicResponse("hello!"); |
| 851 EXPECT_TRUE( | 853 EXPECT_TRUE( |
| 852 test_socket_performance_watcher_factory_.rtt_notification_received()); | 854 test_socket_performance_watcher_factory_.rtt_notification_received()); |
| 853 } | 855 } |
| 854 | 856 |
| 855 TEST_P(QuicNetworkTransactionTest, QuicProxy) { | 857 TEST_P(QuicNetworkTransactionTest, QuicProxy) { |
| 856 params_.enable_quic = true; | 858 dynamic_shared_params_.enable_quic = true; |
| 857 proxy_service_ = | 859 proxy_service_ = |
| 858 ProxyService::CreateFixedFromPacResult("QUIC mail.example.org:70"); | 860 ProxyService::CreateFixedFromPacResult("QUIC mail.example.org:70"); |
| 859 | 861 |
| 860 MockQuicData mock_quic_data; | 862 MockQuicData mock_quic_data; |
| 861 QuicStreamOffset header_stream_offset = 0; | 863 QuicStreamOffset header_stream_offset = 0; |
| 862 mock_quic_data.AddWrite(ConstructSettingsPacket( | 864 mock_quic_data.AddWrite(ConstructSettingsPacket( |
| 863 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, | 865 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, |
| 864 &header_stream_offset)); | 866 &header_stream_offset)); |
| 865 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( | 867 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( |
| 866 2, kClientDataStreamId1, true, true, | 868 2, kClientDataStreamId1, true, true, |
| (...skipping 21 matching lines...) Expand all Loading... |
| 888 test_socket_performance_watcher_factory_.rtt_notification_received()); | 890 test_socket_performance_watcher_factory_.rtt_notification_received()); |
| 889 } | 891 } |
| 890 | 892 |
| 891 // Regression test for https://crbug.com/492458. Test that for an HTTP | 893 // Regression test for https://crbug.com/492458. Test that for an HTTP |
| 892 // connection through a QUIC proxy, the certificate exhibited by the proxy is | 894 // connection through a QUIC proxy, the certificate exhibited by the proxy is |
| 893 // checked against the proxy hostname, not the origin hostname. | 895 // checked against the proxy hostname, not the origin hostname. |
| 894 TEST_P(QuicNetworkTransactionTest, QuicProxyWithCert) { | 896 TEST_P(QuicNetworkTransactionTest, QuicProxyWithCert) { |
| 895 const std::string origin_host = "mail.example.com"; | 897 const std::string origin_host = "mail.example.com"; |
| 896 const std::string proxy_host = "www.example.org"; | 898 const std::string proxy_host = "www.example.org"; |
| 897 | 899 |
| 898 params_.enable_quic = true; | 900 dynamic_shared_params_.enable_quic = true; |
| 899 proxy_service_ = | 901 proxy_service_ = |
| 900 ProxyService::CreateFixedFromPacResult("QUIC " + proxy_host + ":70"); | 902 ProxyService::CreateFixedFromPacResult("QUIC " + proxy_host + ":70"); |
| 901 | 903 |
| 902 client_maker_.set_hostname(origin_host); | 904 client_maker_.set_hostname(origin_host); |
| 903 MockQuicData mock_quic_data; | 905 MockQuicData mock_quic_data; |
| 904 QuicStreamOffset header_stream_offset = 0; | 906 QuicStreamOffset header_stream_offset = 0; |
| 905 mock_quic_data.AddWrite(ConstructSettingsPacket( | 907 mock_quic_data.AddWrite(ConstructSettingsPacket( |
| 906 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, | 908 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, |
| 907 &header_stream_offset)); | 909 &header_stream_offset)); |
| 908 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( | 910 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( |
| (...skipping 2115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3024 | 3026 |
| 3025 HttpNetworkSession::Params params; | 3027 HttpNetworkSession::Params params; |
| 3026 | 3028 |
| 3027 clock_->AdvanceTime(QuicTime::Delta::FromMilliseconds(20)); | 3029 clock_->AdvanceTime(QuicTime::Delta::FromMilliseconds(20)); |
| 3028 params.quic_clock = clock_; | 3030 params.quic_clock = clock_; |
| 3029 | 3031 |
| 3030 crypto_client_stream_factory_.set_handshake_mode( | 3032 crypto_client_stream_factory_.set_handshake_mode( |
| 3031 MockCryptoClientStream::CONFIRM_HANDSHAKE); | 3033 MockCryptoClientStream::CONFIRM_HANDSHAKE); |
| 3032 params.quic_crypto_client_stream_factory = &crypto_client_stream_factory_; | 3034 params.quic_crypto_client_stream_factory = &crypto_client_stream_factory_; |
| 3033 | 3035 |
| 3034 params.enable_quic = true; | 3036 dynamic_shared_params_.enable_quic = true; |
| 3037 params.dynamic_shared_params = &dynamic_shared_params_; |
| 3035 params.quic_random = &random_generator_; | 3038 params.quic_random = &random_generator_; |
| 3036 params.client_socket_factory = &socket_factory_; | 3039 params.client_socket_factory = &socket_factory_; |
| 3037 params.host_resolver = &host_resolver_; | 3040 params.host_resolver = &host_resolver_; |
| 3038 params.cert_verifier = &cert_verifier_; | 3041 params.cert_verifier = &cert_verifier_; |
| 3039 params.transport_security_state = &transport_security_state_; | 3042 params.transport_security_state = &transport_security_state_; |
| 3040 params.cert_transparency_verifier = cert_transparency_verifier_.get(); | 3043 params.cert_transparency_verifier = cert_transparency_verifier_.get(); |
| 3041 params.ct_policy_enforcer = &ct_policy_enforcer_; | 3044 params.ct_policy_enforcer = &ct_policy_enforcer_; |
| 3042 params.socket_performance_watcher_factory = | 3045 params.socket_performance_watcher_factory = |
| 3043 &test_socket_performance_watcher_factory_; | 3046 &test_socket_performance_watcher_factory_; |
| 3044 params.ssl_config_service = ssl_config_service_.get(); | 3047 params.ssl_config_service = ssl_config_service_.get(); |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3227 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_; | 3230 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_; |
| 3228 std::unique_ptr<ProxyService> proxy_service_; | 3231 std::unique_ptr<ProxyService> proxy_service_; |
| 3229 std::unique_ptr<HttpAuthHandlerFactory> auth_handler_factory_; | 3232 std::unique_ptr<HttpAuthHandlerFactory> auth_handler_factory_; |
| 3230 MockRandom random_generator_; | 3233 MockRandom random_generator_; |
| 3231 HttpServerPropertiesImpl http_server_properties_; | 3234 HttpServerPropertiesImpl http_server_properties_; |
| 3232 BoundTestNetLog net_log_; | 3235 BoundTestNetLog net_log_; |
| 3233 MockCryptoClientStreamFactory crypto_client_stream_factory_; | 3236 MockCryptoClientStreamFactory crypto_client_stream_factory_; |
| 3234 std::vector<std::unique_ptr<StaticSocketDataProvider>> | 3237 std::vector<std::unique_ptr<StaticSocketDataProvider>> |
| 3235 static_socket_data_provider_vector_; | 3238 static_socket_data_provider_vector_; |
| 3236 SSLSocketDataProvider ssl_data_; | 3239 SSLSocketDataProvider ssl_data_; |
| 3240 HttpNetworkSession::DynamicSharedParams dynamic_shared_params_; |
| 3237 }; | 3241 }; |
| 3238 | 3242 |
| 3239 INSTANTIATE_TEST_CASE_P(Version, | 3243 INSTANTIATE_TEST_CASE_P(Version, |
| 3240 QuicNetworkTransactionWithDestinationTest, | 3244 QuicNetworkTransactionWithDestinationTest, |
| 3241 ::testing::ValuesIn(GetPoolingTestParams())); | 3245 ::testing::ValuesIn(GetPoolingTestParams())); |
| 3242 | 3246 |
| 3243 // A single QUIC request fails because the certificate does not match the origin | 3247 // A single QUIC request fails because the certificate does not match the origin |
| 3244 // hostname, regardless of whether it matches the alternative service hostname. | 3248 // hostname, regardless of whether it matches the alternative service hostname. |
| 3245 TEST_P(QuicNetworkTransactionWithDestinationTest, InvalidCertificate) { | 3249 TEST_P(QuicNetworkTransactionWithDestinationTest, InvalidCertificate) { |
| 3246 if (destination_type_ == DIFFERENT) | 3250 if (destination_type_ == DIFFERENT) |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3438 AddHangingSocketData(); | 3442 AddHangingSocketData(); |
| 3439 | 3443 |
| 3440 SendRequestAndExpectQuicResponse(origin1_); | 3444 SendRequestAndExpectQuicResponse(origin1_); |
| 3441 SendRequestAndExpectQuicResponse(origin2_); | 3445 SendRequestAndExpectQuicResponse(origin2_); |
| 3442 | 3446 |
| 3443 EXPECT_TRUE(AllDataConsumed()); | 3447 EXPECT_TRUE(AllDataConsumed()); |
| 3444 } | 3448 } |
| 3445 | 3449 |
| 3446 } // namespace test | 3450 } // namespace test |
| 3447 } // namespace net | 3451 } // namespace net |
| OLD | NEW |