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 |