| Index: net/quic/quic_stream_factory_test.cc
|
| diff --git a/net/quic/quic_stream_factory_test.cc b/net/quic/quic_stream_factory_test.cc
|
| index ef056be66ec7a0d81f4edd1dc298276f71a7f718..cb159de83acc88e2867e211c23b54ea6e8dc44e6 100644
|
| --- a/net/quic/quic_stream_factory_test.cc
|
| +++ b/net/quic/quic_stream_factory_test.cc
|
| @@ -320,7 +320,8 @@ class QuicStreamFactoryTestBase {
|
| disable_quic_on_timeout_with_open_streams_(false),
|
| idle_connection_timeout_seconds_(kIdleConnectionTimeoutSeconds),
|
| migrate_sessions_on_network_change_(false),
|
| - migrate_sessions_early_(false) {
|
| + migrate_sessions_early_(false),
|
| + force_hol_blocking_(false) {
|
| clock_->AdvanceTime(QuicTime::Delta::FromSeconds(1));
|
| }
|
|
|
| @@ -352,7 +353,7 @@ class QuicStreamFactoryTestBase {
|
| close_sessions_on_ip_change_,
|
| disable_quic_on_timeout_with_open_streams_,
|
| idle_connection_timeout_seconds_, migrate_sessions_on_network_change_,
|
| - migrate_sessions_early_, QuicTagVector(),
|
| + migrate_sessions_early_, force_hol_blocking_, QuicTagVector(),
|
| /*enable_token_binding*/ false));
|
| factory_->set_require_confirmation(false);
|
| EXPECT_FALSE(factory_->has_quic_server_info_factory());
|
| @@ -545,6 +546,7 @@ class QuicStreamFactoryTestBase {
|
| int idle_connection_timeout_seconds_;
|
| bool migrate_sessions_on_network_change_;
|
| bool migrate_sessions_early_;
|
| + bool force_hol_blocking_;
|
| };
|
|
|
| class QuicStreamFactoryTest : public QuicStreamFactoryTestBase,
|
| @@ -4394,6 +4396,33 @@ TEST_P(QuicStreamFactoryTest, PoolByOrigin) {
|
| EXPECT_TRUE(socket_data.AllWriteDataConsumed());
|
| }
|
|
|
| +TEST_P(QuicStreamFactoryTest, ForceHolBlockingEnabled) {
|
| + force_hol_blocking_ = true;
|
| + Initialize();
|
| +
|
| + ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
|
| + crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
|
| +
|
| + MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
|
| + SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
|
| + socket_factory_.AddSocketDataProvider(&socket_data);
|
| +
|
| + QuicStreamRequest request(factory_.get());
|
| + EXPECT_EQ(ERR_IO_PENDING,
|
| + request.Request(host_port_pair_, privacy_mode_,
|
| + /*cert_verify_flags=*/0, url_, "GET", net_log_,
|
| + callback_.callback()));
|
| +
|
| + EXPECT_EQ(OK, callback_.WaitForResult());
|
| +
|
| + QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
|
| + if (session->connection()->version() > QUIC_VERSION_35) {
|
| + EXPECT_TRUE(session->force_hol_blocking());
|
| + } else {
|
| + EXPECT_FALSE(session->force_hol_blocking());
|
| + }
|
| +}
|
| +
|
| class QuicStreamFactoryWithDestinationTest
|
| : public QuicStreamFactoryTestBase,
|
| public ::testing::TestWithParam<PoolingTestParams> {
|
|
|