| 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/quic/quic_stream_factory.h" | 5 #include "net/quic/quic_stream_factory.h" |
| 6 | 6 |
| 7 #include <ostream> | 7 #include <ostream> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 #include "net/quic/test_tools/quic_stream_factory_peer.h" | 35 #include "net/quic/test_tools/quic_stream_factory_peer.h" |
| 36 #include "net/quic/test_tools/quic_test_packet_maker.h" | 36 #include "net/quic/test_tools/quic_test_packet_maker.h" |
| 37 #include "net/quic/test_tools/quic_test_utils.h" | 37 #include "net/quic/test_tools/quic_test_utils.h" |
| 38 #include "net/quic/test_tools/test_task_runner.h" | 38 #include "net/quic/test_tools/test_task_runner.h" |
| 39 #include "net/socket/socket_test_util.h" | 39 #include "net/socket/socket_test_util.h" |
| 40 #include "net/spdy/spdy_session_test_util.h" | 40 #include "net/spdy/spdy_session_test_util.h" |
| 41 #include "net/spdy/spdy_test_utils.h" | 41 #include "net/spdy/spdy_test_utils.h" |
| 42 #include "net/ssl/channel_id_service.h" | 42 #include "net/ssl/channel_id_service.h" |
| 43 #include "net/ssl/default_channel_id_store.h" | 43 #include "net/ssl/default_channel_id_store.h" |
| 44 #include "net/test/cert_test_util.h" | 44 #include "net/test/cert_test_util.h" |
| 45 #include "net/test/gtest_util.h" |
| 45 #include "net/test/test_data_directory.h" | 46 #include "net/test/test_data_directory.h" |
| 47 #include "testing/gmock/include/gmock/gmock.h" |
| 46 #include "testing/gtest/include/gtest/gtest.h" | 48 #include "testing/gtest/include/gtest/gtest.h" |
| 47 | 49 |
| 50 using net::test::IsError; |
| 51 using net::test::IsOk; |
| 52 |
| 48 using std::string; | 53 using std::string; |
| 49 using std::vector; | 54 using std::vector; |
| 50 | 55 |
| 51 namespace net { | 56 namespace net { |
| 52 | 57 |
| 53 namespace { | 58 namespace { |
| 54 | 59 |
| 55 class MockSSLConfigService : public SSLConfigService { | 60 class MockSSLConfigService : public SSLConfigService { |
| 56 public: | 61 public: |
| 57 MockSSLConfigService() {} | 62 MockSSLConfigService() {} |
| (...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); | 408 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 404 socket_factory_.AddSocketDataProvider(&socket_data); | 409 socket_factory_.AddSocketDataProvider(&socket_data); |
| 405 | 410 |
| 406 QuicStreamRequest request(factory_.get()); | 411 QuicStreamRequest request(factory_.get()); |
| 407 GURL url("https://" + destination.host() + "/"); | 412 GURL url("https://" + destination.host() + "/"); |
| 408 EXPECT_EQ(ERR_IO_PENDING, | 413 EXPECT_EQ(ERR_IO_PENDING, |
| 409 request.Request(destination, privacy_mode_, | 414 request.Request(destination, privacy_mode_, |
| 410 /*cert_verify_flags=*/0, url, "GET", net_log_, | 415 /*cert_verify_flags=*/0, url, "GET", net_log_, |
| 411 callback_.callback())); | 416 callback_.callback())); |
| 412 | 417 |
| 413 EXPECT_EQ(OK, callback_.WaitForResult()); | 418 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 414 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 419 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 415 EXPECT_TRUE(stream.get()); | 420 EXPECT_TRUE(stream.get()); |
| 416 stream.reset(); | 421 stream.reset(); |
| 417 | 422 |
| 418 QuicChromiumClientSession* session = GetActiveSession(destination); | 423 QuicChromiumClientSession* session = GetActiveSession(destination); |
| 419 | 424 |
| 420 if (socket_count + 1 != socket_factory_.udp_client_socket_ports().size()) { | 425 if (socket_count + 1 != socket_factory_.udp_client_socket_ports().size()) { |
| 421 ADD_FAILURE(); | 426 ADD_FAILURE(); |
| 422 return 0; | 427 return 0; |
| 423 } | 428 } |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 562 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 567 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 563 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); | 568 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 564 socket_factory_.AddSocketDataProvider(&socket_data); | 569 socket_factory_.AddSocketDataProvider(&socket_data); |
| 565 | 570 |
| 566 QuicStreamRequest request(factory_.get()); | 571 QuicStreamRequest request(factory_.get()); |
| 567 EXPECT_EQ(ERR_IO_PENDING, | 572 EXPECT_EQ(ERR_IO_PENDING, |
| 568 request.Request(host_port_pair_, privacy_mode_, | 573 request.Request(host_port_pair_, privacy_mode_, |
| 569 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 574 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 570 callback_.callback())); | 575 callback_.callback())); |
| 571 | 576 |
| 572 EXPECT_EQ(OK, callback_.WaitForResult()); | 577 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 573 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 578 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 574 EXPECT_TRUE(stream.get()); | 579 EXPECT_TRUE(stream.get()); |
| 575 | 580 |
| 576 // Will reset stream 3. | 581 // Will reset stream 3. |
| 577 stream = CreateFromSession(host_port_pair_); | 582 stream = CreateFromSession(host_port_pair_); |
| 578 EXPECT_TRUE(stream.get()); | 583 EXPECT_TRUE(stream.get()); |
| 579 | 584 |
| 580 // TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result | 585 // TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result |
| 581 // in streams on different sessions. | 586 // in streams on different sessions. |
| 582 QuicStreamRequest request2(factory_.get()); | 587 QuicStreamRequest request2(factory_.get()); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 650 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 655 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 651 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); | 656 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 652 socket_factory_.AddSocketDataProvider(&socket_data); | 657 socket_factory_.AddSocketDataProvider(&socket_data); |
| 653 | 658 |
| 654 QuicStreamRequest request(factory_.get()); | 659 QuicStreamRequest request(factory_.get()); |
| 655 EXPECT_EQ(ERR_IO_PENDING, | 660 EXPECT_EQ(ERR_IO_PENDING, |
| 656 request.Request(host_port_pair_, privacy_mode_, | 661 request.Request(host_port_pair_, privacy_mode_, |
| 657 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 662 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 658 callback_.callback())); | 663 callback_.callback())); |
| 659 | 664 |
| 660 EXPECT_EQ(OK, callback_.WaitForResult()); | 665 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 661 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 666 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 662 EXPECT_TRUE(stream.get()); | 667 EXPECT_TRUE(stream.get()); |
| 663 | 668 |
| 664 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 669 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| 665 | 670 |
| 666 session->OnGoAway(QuicGoAwayFrame()); | 671 session->OnGoAway(QuicGoAwayFrame()); |
| 667 | 672 |
| 668 EXPECT_FALSE(HasActiveSession(host_port_pair_)); | 673 EXPECT_FALSE(HasActiveSession(host_port_pair_)); |
| 669 | 674 |
| 670 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 675 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 671 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 676 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 672 } | 677 } |
| 673 | 678 |
| 674 TEST_P(QuicStreamFactoryTest, GoAwayForConnectionMigrationWithPortOnly) { | 679 TEST_P(QuicStreamFactoryTest, GoAwayForConnectionMigrationWithPortOnly) { |
| 675 Initialize(); | 680 Initialize(); |
| 676 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 681 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 677 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 682 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 678 | 683 |
| 679 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 684 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 680 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); | 685 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 681 socket_factory_.AddSocketDataProvider(&socket_data); | 686 socket_factory_.AddSocketDataProvider(&socket_data); |
| 682 | 687 |
| 683 QuicStreamRequest request(factory_.get()); | 688 QuicStreamRequest request(factory_.get()); |
| 684 EXPECT_EQ(ERR_IO_PENDING, | 689 EXPECT_EQ(ERR_IO_PENDING, |
| 685 request.Request(host_port_pair_, privacy_mode_, | 690 request.Request(host_port_pair_, privacy_mode_, |
| 686 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 691 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 687 callback_.callback())); | 692 callback_.callback())); |
| 688 | 693 |
| 689 EXPECT_EQ(OK, callback_.WaitForResult()); | 694 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 690 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 695 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 691 EXPECT_TRUE(stream.get()); | 696 EXPECT_TRUE(stream.get()); |
| 692 | 697 |
| 693 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 698 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| 694 | 699 |
| 695 session->OnGoAway( | 700 session->OnGoAway( |
| 696 QuicGoAwayFrame(QUIC_ERROR_MIGRATING_PORT, 0, | 701 QuicGoAwayFrame(QUIC_ERROR_MIGRATING_PORT, 0, |
| 697 "peer connection migration due to port change only")); | 702 "peer connection migration due to port change only")); |
| 698 NetErrorDetails details; | 703 NetErrorDetails details; |
| 699 EXPECT_FALSE(details.quic_port_migration_detected); | 704 EXPECT_FALSE(details.quic_port_migration_detected); |
| (...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1079 socket_factory_.AddSocketDataProvider(&socket_data); | 1084 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1080 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0); | 1085 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0); |
| 1081 socket_factory_.AddSocketDataProvider(&socket_data2); | 1086 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 1082 | 1087 |
| 1083 QuicStreamRequest request(factory_.get()); | 1088 QuicStreamRequest request(factory_.get()); |
| 1084 EXPECT_EQ(ERR_IO_PENDING, | 1089 EXPECT_EQ(ERR_IO_PENDING, |
| 1085 request.Request(host_port_pair_, privacy_mode_, | 1090 request.Request(host_port_pair_, privacy_mode_, |
| 1086 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1091 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1087 callback_.callback())); | 1092 callback_.callback())); |
| 1088 | 1093 |
| 1089 EXPECT_EQ(OK, callback_.WaitForResult()); | 1094 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1090 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1095 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 1091 EXPECT_TRUE(stream.get()); | 1096 EXPECT_TRUE(stream.get()); |
| 1092 | 1097 |
| 1093 // Mark the session as going away. Ensure that while it is still alive | 1098 // Mark the session as going away. Ensure that while it is still alive |
| 1094 // that it is no longer active. | 1099 // that it is no longer active. |
| 1095 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 1100 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| 1096 factory_->OnSessionGoingAway(session); | 1101 factory_->OnSessionGoingAway(session); |
| 1097 EXPECT_EQ(true, | 1102 EXPECT_EQ(true, |
| 1098 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 1103 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
| 1099 EXPECT_FALSE(HasActiveSession(host_port_pair_)); | 1104 EXPECT_FALSE(HasActiveSession(host_port_pair_)); |
| 1100 | 1105 |
| 1101 // Create a new request for the same destination and verify that a | 1106 // Create a new request for the same destination and verify that a |
| 1102 // new session is created. | 1107 // new session is created. |
| 1103 QuicStreamRequest request2(factory_.get()); | 1108 QuicStreamRequest request2(factory_.get()); |
| 1104 EXPECT_EQ(ERR_IO_PENDING, | 1109 EXPECT_EQ(ERR_IO_PENDING, |
| 1105 request2.Request(host_port_pair_, privacy_mode_, | 1110 request2.Request(host_port_pair_, privacy_mode_, |
| 1106 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1111 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1107 callback_.callback())); | 1112 callback_.callback())); |
| 1108 EXPECT_EQ(OK, callback_.WaitForResult()); | 1113 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1109 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); | 1114 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); |
| 1110 EXPECT_TRUE(stream2.get()); | 1115 EXPECT_TRUE(stream2.get()); |
| 1111 | 1116 |
| 1112 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 1117 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
| 1113 EXPECT_NE(session, GetActiveSession(host_port_pair_)); | 1118 EXPECT_NE(session, GetActiveSession(host_port_pair_)); |
| 1114 EXPECT_EQ(true, | 1119 EXPECT_EQ(true, |
| 1115 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 1120 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
| 1116 | 1121 |
| 1117 stream2.reset(); | 1122 stream2.reset(); |
| 1118 stream.reset(); | 1123 stream.reset(); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1146 HttpRequestInfo request_info; | 1151 HttpRequestInfo request_info; |
| 1147 vector<QuicHttpStream*> streams; | 1152 vector<QuicHttpStream*> streams; |
| 1148 // The MockCryptoClientStream sets max_open_streams to be | 1153 // The MockCryptoClientStream sets max_open_streams to be |
| 1149 // kDefaultMaxStreamsPerConnection / 2. | 1154 // kDefaultMaxStreamsPerConnection / 2. |
| 1150 for (size_t i = 0; i < kDefaultMaxStreamsPerConnection / 2; i++) { | 1155 for (size_t i = 0; i < kDefaultMaxStreamsPerConnection / 2; i++) { |
| 1151 QuicStreamRequest request(factory_.get()); | 1156 QuicStreamRequest request(factory_.get()); |
| 1152 int rv = request.Request(host_port_pair_, privacy_mode_, | 1157 int rv = request.Request(host_port_pair_, privacy_mode_, |
| 1153 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1158 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1154 callback_.callback()); | 1159 callback_.callback()); |
| 1155 if (i == 0) { | 1160 if (i == 0) { |
| 1156 EXPECT_EQ(ERR_IO_PENDING, rv); | 1161 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 1157 EXPECT_EQ(OK, callback_.WaitForResult()); | 1162 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1158 } else { | 1163 } else { |
| 1159 EXPECT_EQ(OK, rv); | 1164 EXPECT_THAT(rv, IsOk()); |
| 1160 } | 1165 } |
| 1161 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1166 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 1162 EXPECT_TRUE(stream); | 1167 EXPECT_TRUE(stream); |
| 1163 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1168 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 1164 net_log_, CompletionCallback())); | 1169 net_log_, CompletionCallback())); |
| 1165 streams.push_back(stream.release()); | 1170 streams.push_back(stream.release()); |
| 1166 } | 1171 } |
| 1167 | 1172 |
| 1168 QuicStreamRequest request(factory_.get()); | 1173 QuicStreamRequest request(factory_.get()); |
| 1169 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, | 1174 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, |
| 1170 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1175 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1171 CompletionCallback())); | 1176 CompletionCallback())); |
| 1172 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1177 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 1173 EXPECT_TRUE(stream); | 1178 EXPECT_TRUE(stream); |
| 1174 EXPECT_EQ(ERR_IO_PENDING, | 1179 EXPECT_EQ(ERR_IO_PENDING, |
| 1175 stream->InitializeStream(&request_info, DEFAULT_PRIORITY, net_log_, | 1180 stream->InitializeStream(&request_info, DEFAULT_PRIORITY, net_log_, |
| 1176 callback_.callback())); | 1181 callback_.callback())); |
| 1177 | 1182 |
| 1178 // Close the first stream. | 1183 // Close the first stream. |
| 1179 streams.front()->Close(false); | 1184 streams.front()->Close(false); |
| 1180 // Trigger exchange of RSTs that in turn allow progress for the last | 1185 // Trigger exchange of RSTs that in turn allow progress for the last |
| 1181 // stream. | 1186 // stream. |
| 1182 EXPECT_EQ(OK, callback_.WaitForResult()); | 1187 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1183 | 1188 |
| 1184 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 1189 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 1185 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 1190 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 1186 | 1191 |
| 1187 // Force close of the connection to suppress the generation of RST | 1192 // Force close of the connection to suppress the generation of RST |
| 1188 // packets when streams are torn down, which wouldn't be relevant to | 1193 // packets when streams are torn down, which wouldn't be relevant to |
| 1189 // this test anyway. | 1194 // this test anyway. |
| 1190 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 1195 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| 1191 session->connection()->CloseConnection(QUIC_PUBLIC_RESET, "test", | 1196 session->connection()->CloseConnection(QUIC_PUBLIC_RESET, "test", |
| 1192 ConnectionCloseBehavior::SILENT_CLOSE); | 1197 ConnectionCloseBehavior::SILENT_CLOSE); |
| 1193 | 1198 |
| 1194 STLDeleteElements(&streams); | 1199 STLDeleteElements(&streams); |
| 1195 } | 1200 } |
| 1196 | 1201 |
| 1197 TEST_P(QuicStreamFactoryTest, ResolutionErrorInCreate) { | 1202 TEST_P(QuicStreamFactoryTest, ResolutionErrorInCreate) { |
| 1198 Initialize(); | 1203 Initialize(); |
| 1199 SequencedSocketData socket_data(nullptr, 0, nullptr, 0); | 1204 SequencedSocketData socket_data(nullptr, 0, nullptr, 0); |
| 1200 socket_factory_.AddSocketDataProvider(&socket_data); | 1205 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1201 | 1206 |
| 1202 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName); | 1207 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName); |
| 1203 | 1208 |
| 1204 QuicStreamRequest request(factory_.get()); | 1209 QuicStreamRequest request(factory_.get()); |
| 1205 EXPECT_EQ(ERR_IO_PENDING, | 1210 EXPECT_EQ(ERR_IO_PENDING, |
| 1206 request.Request(host_port_pair_, privacy_mode_, | 1211 request.Request(host_port_pair_, privacy_mode_, |
| 1207 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1212 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1208 callback_.callback())); | 1213 callback_.callback())); |
| 1209 | 1214 |
| 1210 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, callback_.WaitForResult()); | 1215 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_NAME_NOT_RESOLVED)); |
| 1211 | 1216 |
| 1212 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 1217 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 1213 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 1218 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 1214 } | 1219 } |
| 1215 | 1220 |
| 1216 TEST_P(QuicStreamFactoryTest, ConnectErrorInCreate) { | 1221 TEST_P(QuicStreamFactoryTest, ConnectErrorInCreate) { |
| 1217 Initialize(); | 1222 Initialize(); |
| 1218 MockConnect connect(SYNCHRONOUS, ERR_ADDRESS_IN_USE); | 1223 MockConnect connect(SYNCHRONOUS, ERR_ADDRESS_IN_USE); |
| 1219 SequencedSocketData socket_data(nullptr, 0, nullptr, 0); | 1224 SequencedSocketData socket_data(nullptr, 0, nullptr, 0); |
| 1220 socket_data.set_connect_data(connect); | 1225 socket_data.set_connect_data(connect); |
| 1221 socket_factory_.AddSocketDataProvider(&socket_data); | 1226 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1222 | 1227 |
| 1223 QuicStreamRequest request(factory_.get()); | 1228 QuicStreamRequest request(factory_.get()); |
| 1224 EXPECT_EQ(ERR_IO_PENDING, | 1229 EXPECT_EQ(ERR_IO_PENDING, |
| 1225 request.Request(host_port_pair_, privacy_mode_, | 1230 request.Request(host_port_pair_, privacy_mode_, |
| 1226 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1231 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1227 callback_.callback())); | 1232 callback_.callback())); |
| 1228 | 1233 |
| 1229 EXPECT_EQ(ERR_ADDRESS_IN_USE, callback_.WaitForResult()); | 1234 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_ADDRESS_IN_USE)); |
| 1230 | 1235 |
| 1231 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 1236 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 1232 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 1237 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 1233 } | 1238 } |
| 1234 | 1239 |
| 1235 TEST_P(QuicStreamFactoryTest, CancelCreate) { | 1240 TEST_P(QuicStreamFactoryTest, CancelCreate) { |
| 1236 Initialize(); | 1241 Initialize(); |
| 1237 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 1242 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 1238 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); | 1243 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 1239 socket_factory_.AddSocketDataProvider(&socket_data); | 1244 socket_factory_.AddSocketDataProvider(&socket_data); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1308 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 1313 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 1309 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 1314 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
| 1310 socket_factory_.AddSocketDataProvider(&socket_data2); | 1315 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 1311 | 1316 |
| 1312 QuicStreamRequest request(factory_.get()); | 1317 QuicStreamRequest request(factory_.get()); |
| 1313 EXPECT_EQ(ERR_IO_PENDING, | 1318 EXPECT_EQ(ERR_IO_PENDING, |
| 1314 request.Request(host_port_pair_, privacy_mode_, | 1319 request.Request(host_port_pair_, privacy_mode_, |
| 1315 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1320 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1316 callback_.callback())); | 1321 callback_.callback())); |
| 1317 | 1322 |
| 1318 EXPECT_EQ(OK, callback_.WaitForResult()); | 1323 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1319 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1324 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 1320 HttpRequestInfo request_info; | 1325 HttpRequestInfo request_info; |
| 1321 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1326 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 1322 net_log_, CompletionCallback())); | 1327 net_log_, CompletionCallback())); |
| 1323 | 1328 |
| 1324 // Close the session and verify that stream saw the error. | 1329 // Close the session and verify that stream saw the error. |
| 1325 factory_->CloseAllSessions(ERR_INTERNET_DISCONNECTED, QUIC_INTERNAL_ERROR); | 1330 factory_->CloseAllSessions(ERR_INTERNET_DISCONNECTED, QUIC_INTERNAL_ERROR); |
| 1326 EXPECT_EQ(ERR_INTERNET_DISCONNECTED, | 1331 EXPECT_EQ(ERR_INTERNET_DISCONNECTED, |
| 1327 stream->ReadResponseHeaders(callback_.callback())); | 1332 stream->ReadResponseHeaders(callback_.callback())); |
| 1328 | 1333 |
| 1329 // Now attempting to request a stream to the same origin should create | 1334 // Now attempting to request a stream to the same origin should create |
| 1330 // a new session. | 1335 // a new session. |
| 1331 | 1336 |
| 1332 QuicStreamRequest request2(factory_.get()); | 1337 QuicStreamRequest request2(factory_.get()); |
| 1333 EXPECT_EQ(ERR_IO_PENDING, | 1338 EXPECT_EQ(ERR_IO_PENDING, |
| 1334 request2.Request(host_port_pair_, privacy_mode_, | 1339 request2.Request(host_port_pair_, privacy_mode_, |
| 1335 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1340 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1336 callback_.callback())); | 1341 callback_.callback())); |
| 1337 | 1342 |
| 1338 EXPECT_EQ(OK, callback_.WaitForResult()); | 1343 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1339 stream = request2.CreateStream(); | 1344 stream = request2.CreateStream(); |
| 1340 stream.reset(); // Will reset stream 3. | 1345 stream.reset(); // Will reset stream 3. |
| 1341 | 1346 |
| 1342 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 1347 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 1343 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 1348 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 1344 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 1349 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
| 1345 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 1350 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
| 1346 } | 1351 } |
| 1347 | 1352 |
| 1348 TEST_P(QuicStreamFactoryTest, OnIPAddressChanged) { | 1353 TEST_P(QuicStreamFactoryTest, OnIPAddressChanged) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1364 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 1369 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 1365 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 1370 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
| 1366 socket_factory_.AddSocketDataProvider(&socket_data2); | 1371 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 1367 | 1372 |
| 1368 QuicStreamRequest request(factory_.get()); | 1373 QuicStreamRequest request(factory_.get()); |
| 1369 EXPECT_EQ(ERR_IO_PENDING, | 1374 EXPECT_EQ(ERR_IO_PENDING, |
| 1370 request.Request(host_port_pair_, privacy_mode_, | 1375 request.Request(host_port_pair_, privacy_mode_, |
| 1371 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1376 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1372 callback_.callback())); | 1377 callback_.callback())); |
| 1373 | 1378 |
| 1374 EXPECT_EQ(OK, callback_.WaitForResult()); | 1379 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1375 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1380 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 1376 HttpRequestInfo request_info; | 1381 HttpRequestInfo request_info; |
| 1377 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1382 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 1378 net_log_, CompletionCallback())); | 1383 net_log_, CompletionCallback())); |
| 1379 | 1384 |
| 1380 // Change the IP address and verify that stream saw the error. | 1385 // Change the IP address and verify that stream saw the error. |
| 1381 NotifyIPAddressChanged(); | 1386 NotifyIPAddressChanged(); |
| 1382 EXPECT_EQ(ERR_NETWORK_CHANGED, | 1387 EXPECT_EQ(ERR_NETWORK_CHANGED, |
| 1383 stream->ReadResponseHeaders(callback_.callback())); | 1388 stream->ReadResponseHeaders(callback_.callback())); |
| 1384 EXPECT_TRUE(factory_->require_confirmation()); | 1389 EXPECT_TRUE(factory_->require_confirmation()); |
| 1385 | 1390 |
| 1386 // Now attempting to request a stream to the same origin should create | 1391 // Now attempting to request a stream to the same origin should create |
| 1387 // a new session. | 1392 // a new session. |
| 1388 | 1393 |
| 1389 QuicStreamRequest request2(factory_.get()); | 1394 QuicStreamRequest request2(factory_.get()); |
| 1390 EXPECT_EQ(ERR_IO_PENDING, | 1395 EXPECT_EQ(ERR_IO_PENDING, |
| 1391 request2.Request(host_port_pair_, privacy_mode_, | 1396 request2.Request(host_port_pair_, privacy_mode_, |
| 1392 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1397 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1393 callback_.callback())); | 1398 callback_.callback())); |
| 1394 | 1399 |
| 1395 EXPECT_EQ(OK, callback_.WaitForResult()); | 1400 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1396 stream = request2.CreateStream(); | 1401 stream = request2.CreateStream(); |
| 1397 stream.reset(); // Will reset stream 3. | 1402 stream.reset(); // Will reset stream 3. |
| 1398 | 1403 |
| 1399 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 1404 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 1400 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 1405 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 1401 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 1406 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
| 1402 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 1407 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
| 1403 } | 1408 } |
| 1404 | 1409 |
| 1405 TEST_P(QuicStreamFactoryTest, OnNetworkChangeSoonToDisconnect) { | 1410 TEST_P(QuicStreamFactoryTest, OnNetworkChangeSoonToDisconnect) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1417 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1422 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 1418 arraysize(writes)); | 1423 arraysize(writes)); |
| 1419 socket_factory_.AddSocketDataProvider(&socket_data); | 1424 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1420 | 1425 |
| 1421 // Create request and QuicHttpStream. | 1426 // Create request and QuicHttpStream. |
| 1422 QuicStreamRequest request(factory_.get()); | 1427 QuicStreamRequest request(factory_.get()); |
| 1423 EXPECT_EQ(ERR_IO_PENDING, | 1428 EXPECT_EQ(ERR_IO_PENDING, |
| 1424 request.Request(host_port_pair_, privacy_mode_, | 1429 request.Request(host_port_pair_, privacy_mode_, |
| 1425 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1430 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1426 callback_.callback())); | 1431 callback_.callback())); |
| 1427 EXPECT_EQ(OK, callback_.WaitForResult()); | 1432 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1428 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1433 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 1429 EXPECT_TRUE(stream.get()); | 1434 EXPECT_TRUE(stream.get()); |
| 1430 | 1435 |
| 1431 // Cause QUIC stream to be created. | 1436 // Cause QUIC stream to be created. |
| 1432 HttpRequestInfo request_info; | 1437 HttpRequestInfo request_info; |
| 1433 request_info.method = "GET"; | 1438 request_info.method = "GET"; |
| 1434 request_info.url = url_; | 1439 request_info.url = url_; |
| 1435 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1440 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 1436 net_log_, CompletionCallback())); | 1441 net_log_, CompletionCallback())); |
| 1437 | 1442 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1467 ->NotifyNetworkSoonToDisconnect(kDefaultNetworkForTests); | 1472 ->NotifyNetworkSoonToDisconnect(kDefaultNetworkForTests); |
| 1468 | 1473 |
| 1469 // The session should now be marked as going away. Ensure that | 1474 // The session should now be marked as going away. Ensure that |
| 1470 // while it is still alive, it is no longer active. | 1475 // while it is still alive, it is no longer active. |
| 1471 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 1476 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
| 1472 EXPECT_FALSE(HasActiveSession(host_port_pair_)); | 1477 EXPECT_FALSE(HasActiveSession(host_port_pair_)); |
| 1473 EXPECT_EQ(1u, session->GetNumActiveStreams()); | 1478 EXPECT_EQ(1u, session->GetNumActiveStreams()); |
| 1474 | 1479 |
| 1475 // Verify that response headers on the migrated socket were delivered to the | 1480 // Verify that response headers on the migrated socket were delivered to the |
| 1476 // stream. | 1481 // stream. |
| 1477 EXPECT_EQ(OK, stream->ReadResponseHeaders(callback_.callback())); | 1482 EXPECT_THAT(stream->ReadResponseHeaders(callback_.callback()), IsOk()); |
| 1478 EXPECT_EQ(200, response.headers->response_code()); | 1483 EXPECT_EQ(200, response.headers->response_code()); |
| 1479 | 1484 |
| 1480 // Create a new request for the same destination and verify that a | 1485 // Create a new request for the same destination and verify that a |
| 1481 // new session is created. | 1486 // new session is created. |
| 1482 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 1487 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 1483 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 1488 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
| 1484 socket_factory_.AddSocketDataProvider(&socket_data2); | 1489 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 1485 | 1490 |
| 1486 QuicStreamRequest request2(factory_.get()); | 1491 QuicStreamRequest request2(factory_.get()); |
| 1487 EXPECT_EQ(ERR_IO_PENDING, | 1492 EXPECT_EQ(ERR_IO_PENDING, |
| 1488 request2.Request(host_port_pair_, privacy_mode_, | 1493 request2.Request(host_port_pair_, privacy_mode_, |
| 1489 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1494 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1490 callback_.callback())); | 1495 callback_.callback())); |
| 1491 EXPECT_EQ(OK, callback_.WaitForResult()); | 1496 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1492 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); | 1497 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); |
| 1493 EXPECT_TRUE(stream2.get()); | 1498 EXPECT_TRUE(stream2.get()); |
| 1494 | 1499 |
| 1495 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 1500 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
| 1496 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); | 1501 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); |
| 1497 EXPECT_NE(session, new_session); | 1502 EXPECT_NE(session, new_session); |
| 1498 | 1503 |
| 1499 // On a DISCONNECTED notification, nothing happens to the migrated | 1504 // On a DISCONNECTED notification, nothing happens to the migrated |
| 1500 // session, but the new session is closed since it has no open | 1505 // session, but the new session is closed since it has no open |
| 1501 // streams. | 1506 // streams. |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1529 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1534 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 1530 arraysize(writes)); | 1535 arraysize(writes)); |
| 1531 socket_factory_.AddSocketDataProvider(&socket_data); | 1536 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1532 | 1537 |
| 1533 // Create request and QuicHttpStream. | 1538 // Create request and QuicHttpStream. |
| 1534 QuicStreamRequest request(factory_.get()); | 1539 QuicStreamRequest request(factory_.get()); |
| 1535 EXPECT_EQ(ERR_IO_PENDING, | 1540 EXPECT_EQ(ERR_IO_PENDING, |
| 1536 request.Request(host_port_pair_, privacy_mode_, | 1541 request.Request(host_port_pair_, privacy_mode_, |
| 1537 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1542 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1538 callback_.callback())); | 1543 callback_.callback())); |
| 1539 EXPECT_EQ(OK, callback_.WaitForResult()); | 1544 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1540 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1545 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 1541 EXPECT_TRUE(stream.get()); | 1546 EXPECT_TRUE(stream.get()); |
| 1542 | 1547 |
| 1543 // Cause QUIC stream to be created. | 1548 // Cause QUIC stream to be created. |
| 1544 HttpRequestInfo request_info; | 1549 HttpRequestInfo request_info; |
| 1545 request_info.method = "GET"; | 1550 request_info.method = "GET"; |
| 1546 request_info.url = url_; | 1551 request_info.url = url_; |
| 1547 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1552 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 1548 net_log_, CompletionCallback())); | 1553 net_log_, CompletionCallback())); |
| 1549 | 1554 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1589 // new session is created. | 1594 // new session is created. |
| 1590 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 1595 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 1591 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 1596 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
| 1592 socket_factory_.AddSocketDataProvider(&socket_data2); | 1597 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 1593 | 1598 |
| 1594 QuicStreamRequest request2(factory_.get()); | 1599 QuicStreamRequest request2(factory_.get()); |
| 1595 EXPECT_EQ(ERR_IO_PENDING, | 1600 EXPECT_EQ(ERR_IO_PENDING, |
| 1596 request2.Request(host_port_pair_, privacy_mode_, | 1601 request2.Request(host_port_pair_, privacy_mode_, |
| 1597 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1602 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1598 callback_.callback())); | 1603 callback_.callback())); |
| 1599 EXPECT_EQ(OK, callback_.WaitForResult()); | 1604 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1600 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); | 1605 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); |
| 1601 EXPECT_TRUE(stream2.get()); | 1606 EXPECT_TRUE(stream2.get()); |
| 1602 | 1607 |
| 1603 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 1608 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
| 1604 EXPECT_NE(session, GetActiveSession(host_port_pair_)); | 1609 EXPECT_NE(session, GetActiveSession(host_port_pair_)); |
| 1605 EXPECT_EQ(true, | 1610 EXPECT_EQ(true, |
| 1606 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 1611 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
| 1607 | 1612 |
| 1608 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 1613 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 1609 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 1614 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1628 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1633 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 1629 arraysize(writes)); | 1634 arraysize(writes)); |
| 1630 socket_factory_.AddSocketDataProvider(&socket_data); | 1635 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1631 | 1636 |
| 1632 // Create request and QuicHttpStream. | 1637 // Create request and QuicHttpStream. |
| 1633 QuicStreamRequest request(factory_.get()); | 1638 QuicStreamRequest request(factory_.get()); |
| 1634 EXPECT_EQ(ERR_IO_PENDING, | 1639 EXPECT_EQ(ERR_IO_PENDING, |
| 1635 request.Request(host_port_pair_, privacy_mode_, | 1640 request.Request(host_port_pair_, privacy_mode_, |
| 1636 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1641 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1637 callback_.callback())); | 1642 callback_.callback())); |
| 1638 EXPECT_EQ(OK, callback_.WaitForResult()); | 1643 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1639 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1644 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 1640 EXPECT_TRUE(stream.get()); | 1645 EXPECT_TRUE(stream.get()); |
| 1641 | 1646 |
| 1642 // Cause QUIC stream to be created. | 1647 // Cause QUIC stream to be created. |
| 1643 HttpRequestInfo request_info; | 1648 HttpRequestInfo request_info; |
| 1644 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1649 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 1645 net_log_, CompletionCallback())); | 1650 net_log_, CompletionCallback())); |
| 1646 | 1651 |
| 1647 // Ensure that session is alive and active. | 1652 // Ensure that session is alive and active. |
| 1648 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 1653 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1681 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1686 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 1682 arraysize(writes)); | 1687 arraysize(writes)); |
| 1683 socket_factory_.AddSocketDataProvider(&socket_data); | 1688 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1684 | 1689 |
| 1685 // Create request and QuicHttpStream. | 1690 // Create request and QuicHttpStream. |
| 1686 QuicStreamRequest request(factory_.get()); | 1691 QuicStreamRequest request(factory_.get()); |
| 1687 EXPECT_EQ(ERR_IO_PENDING, | 1692 EXPECT_EQ(ERR_IO_PENDING, |
| 1688 request.Request(host_port_pair_, privacy_mode_, | 1693 request.Request(host_port_pair_, privacy_mode_, |
| 1689 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1694 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1690 callback_.callback())); | 1695 callback_.callback())); |
| 1691 EXPECT_EQ(OK, callback_.WaitForResult()); | 1696 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1692 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1697 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 1693 EXPECT_TRUE(stream.get()); | 1698 EXPECT_TRUE(stream.get()); |
| 1694 | 1699 |
| 1695 // Cause QUIC stream to be created. | 1700 // Cause QUIC stream to be created. |
| 1696 HttpRequestInfo request_info; | 1701 HttpRequestInfo request_info; |
| 1697 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1702 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 1698 net_log_, CompletionCallback())); | 1703 net_log_, CompletionCallback())); |
| 1699 | 1704 |
| 1700 // Ensure that session is alive and active. | 1705 // Ensure that session is alive and active. |
| 1701 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 1706 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1729 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1734 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 1730 arraysize(writes)); | 1735 arraysize(writes)); |
| 1731 socket_factory_.AddSocketDataProvider(&socket_data); | 1736 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1732 | 1737 |
| 1733 // Create request and QuicHttpStream. | 1738 // Create request and QuicHttpStream. |
| 1734 QuicStreamRequest request(factory_.get()); | 1739 QuicStreamRequest request(factory_.get()); |
| 1735 EXPECT_EQ(ERR_IO_PENDING, | 1740 EXPECT_EQ(ERR_IO_PENDING, |
| 1736 request.Request(host_port_pair_, privacy_mode_, | 1741 request.Request(host_port_pair_, privacy_mode_, |
| 1737 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1742 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1738 callback_.callback())); | 1743 callback_.callback())); |
| 1739 EXPECT_EQ(OK, callback_.WaitForResult()); | 1744 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1740 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1745 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 1741 EXPECT_TRUE(stream.get()); | 1746 EXPECT_TRUE(stream.get()); |
| 1742 | 1747 |
| 1743 // Cause QUIC stream to be created. | 1748 // Cause QUIC stream to be created. |
| 1744 HttpRequestInfo request_info; | 1749 HttpRequestInfo request_info; |
| 1745 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1750 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 1746 net_log_, CompletionCallback())); | 1751 net_log_, CompletionCallback())); |
| 1747 | 1752 |
| 1748 // Ensure that session is alive and active. | 1753 // Ensure that session is alive and active. |
| 1749 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 1754 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1780 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1785 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 1781 arraysize(writes)); | 1786 arraysize(writes)); |
| 1782 socket_factory_.AddSocketDataProvider(&socket_data); | 1787 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1783 | 1788 |
| 1784 // Create request and QuicHttpStream. | 1789 // Create request and QuicHttpStream. |
| 1785 QuicStreamRequest request(factory_.get()); | 1790 QuicStreamRequest request(factory_.get()); |
| 1786 EXPECT_EQ(ERR_IO_PENDING, | 1791 EXPECT_EQ(ERR_IO_PENDING, |
| 1787 request.Request(host_port_pair_, privacy_mode_, | 1792 request.Request(host_port_pair_, privacy_mode_, |
| 1788 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1793 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1789 callback_.callback())); | 1794 callback_.callback())); |
| 1790 EXPECT_EQ(OK, callback_.WaitForResult()); | 1795 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1791 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1796 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 1792 EXPECT_TRUE(stream.get()); | 1797 EXPECT_TRUE(stream.get()); |
| 1793 | 1798 |
| 1794 // Cause QUIC stream to be created. | 1799 // Cause QUIC stream to be created. |
| 1795 HttpRequestInfo request_info; | 1800 HttpRequestInfo request_info; |
| 1796 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1801 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 1797 net_log_, CompletionCallback())); | 1802 net_log_, CompletionCallback())); |
| 1798 | 1803 |
| 1799 // Ensure that session is alive and active. | 1804 // Ensure that session is alive and active. |
| 1800 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 1805 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1830 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1835 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 1831 arraysize(writes)); | 1836 arraysize(writes)); |
| 1832 socket_factory_.AddSocketDataProvider(&socket_data); | 1837 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1833 | 1838 |
| 1834 // Create request and QuicHttpStream. | 1839 // Create request and QuicHttpStream. |
| 1835 QuicStreamRequest request(factory_.get()); | 1840 QuicStreamRequest request(factory_.get()); |
| 1836 EXPECT_EQ(ERR_IO_PENDING, | 1841 EXPECT_EQ(ERR_IO_PENDING, |
| 1837 request.Request(host_port_pair_, privacy_mode_, | 1842 request.Request(host_port_pair_, privacy_mode_, |
| 1838 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1843 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1839 callback_.callback())); | 1844 callback_.callback())); |
| 1840 EXPECT_EQ(OK, callback_.WaitForResult()); | 1845 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1841 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1846 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 1842 EXPECT_TRUE(stream.get()); | 1847 EXPECT_TRUE(stream.get()); |
| 1843 | 1848 |
| 1844 // Cause QUIC stream to be created, but marked as non-migratable. | 1849 // Cause QUIC stream to be created, but marked as non-migratable. |
| 1845 HttpRequestInfo request_info; | 1850 HttpRequestInfo request_info; |
| 1846 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; | 1851 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; |
| 1847 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1852 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 1848 net_log_, CompletionCallback())); | 1853 net_log_, CompletionCallback())); |
| 1849 | 1854 |
| 1850 // Ensure that session is alive and active. | 1855 // Ensure that session is alive and active. |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1883 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1888 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 1884 arraysize(writes)); | 1889 arraysize(writes)); |
| 1885 socket_factory_.AddSocketDataProvider(&socket_data); | 1890 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1886 | 1891 |
| 1887 // Create request and QuicHttpStream. | 1892 // Create request and QuicHttpStream. |
| 1888 QuicStreamRequest request(factory_.get()); | 1893 QuicStreamRequest request(factory_.get()); |
| 1889 EXPECT_EQ(ERR_IO_PENDING, | 1894 EXPECT_EQ(ERR_IO_PENDING, |
| 1890 request.Request(host_port_pair_, privacy_mode_, | 1895 request.Request(host_port_pair_, privacy_mode_, |
| 1891 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1896 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1892 callback_.callback())); | 1897 callback_.callback())); |
| 1893 EXPECT_EQ(OK, callback_.WaitForResult()); | 1898 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1894 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1899 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 1895 EXPECT_TRUE(stream.get()); | 1900 EXPECT_TRUE(stream.get()); |
| 1896 | 1901 |
| 1897 // Cause QUIC stream to be created. | 1902 // Cause QUIC stream to be created. |
| 1898 HttpRequestInfo request_info; | 1903 HttpRequestInfo request_info; |
| 1899 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1904 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 1900 net_log_, CompletionCallback())); | 1905 net_log_, CompletionCallback())); |
| 1901 | 1906 |
| 1902 // Ensure that session is alive and active. | 1907 // Ensure that session is alive and active. |
| 1903 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 1908 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1938 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1943 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 1939 arraysize(writes)); | 1944 arraysize(writes)); |
| 1940 socket_factory_.AddSocketDataProvider(&socket_data); | 1945 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1941 | 1946 |
| 1942 // Create request and QuicHttpStream. | 1947 // Create request and QuicHttpStream. |
| 1943 QuicStreamRequest request(factory_.get()); | 1948 QuicStreamRequest request(factory_.get()); |
| 1944 EXPECT_EQ(ERR_IO_PENDING, | 1949 EXPECT_EQ(ERR_IO_PENDING, |
| 1945 request.Request(host_port_pair_, privacy_mode_, | 1950 request.Request(host_port_pair_, privacy_mode_, |
| 1946 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1951 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1947 callback_.callback())); | 1952 callback_.callback())); |
| 1948 EXPECT_EQ(OK, callback_.WaitForResult()); | 1953 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 1949 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1954 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 1950 EXPECT_TRUE(stream.get()); | 1955 EXPECT_TRUE(stream.get()); |
| 1951 | 1956 |
| 1952 // Cause QUIC stream to be created, but marked as non-migratable. | 1957 // Cause QUIC stream to be created, but marked as non-migratable. |
| 1953 HttpRequestInfo request_info; | 1958 HttpRequestInfo request_info; |
| 1954 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; | 1959 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; |
| 1955 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1960 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 1956 net_log_, CompletionCallback())); | 1961 net_log_, CompletionCallback())); |
| 1957 | 1962 |
| 1958 // Ensure that session is alive and active. | 1963 // Ensure that session is alive and active. |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1989 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1994 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 1990 arraysize(writes)); | 1995 arraysize(writes)); |
| 1991 socket_factory_.AddSocketDataProvider(&socket_data); | 1996 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1992 | 1997 |
| 1993 // Create request and QuicHttpStream. | 1998 // Create request and QuicHttpStream. |
| 1994 QuicStreamRequest request(factory_.get()); | 1999 QuicStreamRequest request(factory_.get()); |
| 1995 EXPECT_EQ(ERR_IO_PENDING, | 2000 EXPECT_EQ(ERR_IO_PENDING, |
| 1996 request.Request(host_port_pair_, privacy_mode_, | 2001 request.Request(host_port_pair_, privacy_mode_, |
| 1997 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2002 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 1998 callback_.callback())); | 2003 callback_.callback())); |
| 1999 EXPECT_EQ(OK, callback_.WaitForResult()); | 2004 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2000 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2005 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 2001 EXPECT_TRUE(stream.get()); | 2006 EXPECT_TRUE(stream.get()); |
| 2002 | 2007 |
| 2003 // Cause QUIC stream to be created. | 2008 // Cause QUIC stream to be created. |
| 2004 HttpRequestInfo request_info; | 2009 HttpRequestInfo request_info; |
| 2005 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2010 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 2006 net_log_, CompletionCallback())); | 2011 net_log_, CompletionCallback())); |
| 2007 | 2012 |
| 2008 // Ensure that session is alive and active. | 2013 // Ensure that session is alive and active. |
| 2009 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 2014 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 2036 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2041 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 2037 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u); | 2042 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u); |
| 2038 socket_factory_.AddSocketDataProvider(&socket_data); | 2043 socket_factory_.AddSocketDataProvider(&socket_data); |
| 2039 | 2044 |
| 2040 // Create request and QuicHttpStream. | 2045 // Create request and QuicHttpStream. |
| 2041 QuicStreamRequest request(factory_.get()); | 2046 QuicStreamRequest request(factory_.get()); |
| 2042 EXPECT_EQ(ERR_IO_PENDING, | 2047 EXPECT_EQ(ERR_IO_PENDING, |
| 2043 request.Request(host_port_pair_, privacy_mode_, | 2048 request.Request(host_port_pair_, privacy_mode_, |
| 2044 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2049 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2045 callback_.callback())); | 2050 callback_.callback())); |
| 2046 EXPECT_EQ(OK, callback_.WaitForResult()); | 2051 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2047 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2052 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 2048 EXPECT_TRUE(stream.get()); | 2053 EXPECT_TRUE(stream.get()); |
| 2049 | 2054 |
| 2050 // Ensure that session is alive and active. | 2055 // Ensure that session is alive and active. |
| 2051 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 2056 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| 2052 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 2057 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
| 2053 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 2058 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
| 2054 | 2059 |
| 2055 // Trigger connection migration. Since there are no active streams, | 2060 // Trigger connection migration. Since there are no active streams, |
| 2056 // the session will be closed. | 2061 // the session will be closed. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 2073 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2078 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 2074 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u); | 2079 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u); |
| 2075 socket_factory_.AddSocketDataProvider(&socket_data); | 2080 socket_factory_.AddSocketDataProvider(&socket_data); |
| 2076 | 2081 |
| 2077 // Create request and QuicHttpStream. | 2082 // Create request and QuicHttpStream. |
| 2078 QuicStreamRequest request(factory_.get()); | 2083 QuicStreamRequest request(factory_.get()); |
| 2079 EXPECT_EQ(ERR_IO_PENDING, | 2084 EXPECT_EQ(ERR_IO_PENDING, |
| 2080 request.Request(host_port_pair_, privacy_mode_, | 2085 request.Request(host_port_pair_, privacy_mode_, |
| 2081 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2086 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2082 callback_.callback())); | 2087 callback_.callback())); |
| 2083 EXPECT_EQ(OK, callback_.WaitForResult()); | 2088 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2084 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2089 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 2085 EXPECT_TRUE(stream.get()); | 2090 EXPECT_TRUE(stream.get()); |
| 2086 | 2091 |
| 2087 // Ensure that session is alive and active. | 2092 // Ensure that session is alive and active. |
| 2088 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 2093 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| 2089 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 2094 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
| 2090 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 2095 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
| 2091 | 2096 |
| 2092 // Trigger connection migration. Since there are no active streams, | 2097 // Trigger connection migration. Since there are no active streams, |
| 2093 // the session will be closed. | 2098 // the session will be closed. |
| (...skipping 22 matching lines...) Expand all Loading... |
| 2116 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 2121 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 2117 arraysize(writes)); | 2122 arraysize(writes)); |
| 2118 socket_factory_.AddSocketDataProvider(&socket_data); | 2123 socket_factory_.AddSocketDataProvider(&socket_data); |
| 2119 | 2124 |
| 2120 // Create request and QuicHttpStream. | 2125 // Create request and QuicHttpStream. |
| 2121 QuicStreamRequest request(factory_.get()); | 2126 QuicStreamRequest request(factory_.get()); |
| 2122 EXPECT_EQ(ERR_IO_PENDING, | 2127 EXPECT_EQ(ERR_IO_PENDING, |
| 2123 request.Request(host_port_pair_, privacy_mode_, | 2128 request.Request(host_port_pair_, privacy_mode_, |
| 2124 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2129 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2125 callback_.callback())); | 2130 callback_.callback())); |
| 2126 EXPECT_EQ(OK, callback_.WaitForResult()); | 2131 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2127 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2132 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 2128 EXPECT_TRUE(stream.get()); | 2133 EXPECT_TRUE(stream.get()); |
| 2129 | 2134 |
| 2130 // Cause QUIC stream to be created. | 2135 // Cause QUIC stream to be created. |
| 2131 HttpRequestInfo request_info; | 2136 HttpRequestInfo request_info; |
| 2132 request_info.method = "GET"; | 2137 request_info.method = "GET"; |
| 2133 request_info.url = url_; | 2138 request_info.url = url_; |
| 2134 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2139 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 2135 net_log_, CompletionCallback())); | 2140 net_log_, CompletionCallback())); |
| 2136 | 2141 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2169 base::RunLoop().RunUntilIdle(); | 2174 base::RunLoop().RunUntilIdle(); |
| 2170 | 2175 |
| 2171 // The session should now be marked as going away. Ensure that | 2176 // The session should now be marked as going away. Ensure that |
| 2172 // while it is still alive, it is no longer active. | 2177 // while it is still alive, it is no longer active. |
| 2173 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 2178 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
| 2174 EXPECT_FALSE(HasActiveSession(host_port_pair_)); | 2179 EXPECT_FALSE(HasActiveSession(host_port_pair_)); |
| 2175 EXPECT_EQ(1u, session->GetNumActiveStreams()); | 2180 EXPECT_EQ(1u, session->GetNumActiveStreams()); |
| 2176 | 2181 |
| 2177 // Verify that response headers on the migrated socket were delivered to the | 2182 // Verify that response headers on the migrated socket were delivered to the |
| 2178 // stream. | 2183 // stream. |
| 2179 EXPECT_EQ(OK, stream->ReadResponseHeaders(callback_.callback())); | 2184 EXPECT_THAT(stream->ReadResponseHeaders(callback_.callback()), IsOk()); |
| 2180 EXPECT_EQ(200, response.headers->response_code()); | 2185 EXPECT_EQ(200, response.headers->response_code()); |
| 2181 | 2186 |
| 2182 // Create a new request for the same destination and verify that a | 2187 // Create a new request for the same destination and verify that a |
| 2183 // new session is created. | 2188 // new session is created. |
| 2184 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2189 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 2185 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 2190 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
| 2186 socket_factory_.AddSocketDataProvider(&socket_data2); | 2191 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 2187 | 2192 |
| 2188 QuicStreamRequest request2(factory_.get()); | 2193 QuicStreamRequest request2(factory_.get()); |
| 2189 EXPECT_EQ(ERR_IO_PENDING, | 2194 EXPECT_EQ(ERR_IO_PENDING, |
| 2190 request2.Request(host_port_pair_, privacy_mode_, | 2195 request2.Request(host_port_pair_, privacy_mode_, |
| 2191 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2196 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2192 callback_.callback())); | 2197 callback_.callback())); |
| 2193 EXPECT_EQ(OK, callback_.WaitForResult()); | 2198 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2194 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); | 2199 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); |
| 2195 EXPECT_TRUE(stream2.get()); | 2200 EXPECT_TRUE(stream2.get()); |
| 2196 | 2201 |
| 2197 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 2202 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
| 2198 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); | 2203 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); |
| 2199 EXPECT_NE(session, new_session); | 2204 EXPECT_NE(session, new_session); |
| 2200 | 2205 |
| 2201 // On a SOON_TO_DISCONNECT notification, nothing happens to the | 2206 // On a SOON_TO_DISCONNECT notification, nothing happens to the |
| 2202 // migrated session, but the new session is closed since it has no | 2207 // migrated session, but the new session is closed since it has no |
| 2203 // open streams. | 2208 // open streams. |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2236 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 2241 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 2237 arraysize(writes)); | 2242 arraysize(writes)); |
| 2238 socket_factory_.AddSocketDataProvider(&socket_data); | 2243 socket_factory_.AddSocketDataProvider(&socket_data); |
| 2239 | 2244 |
| 2240 // Create request and QuicHttpStream. | 2245 // Create request and QuicHttpStream. |
| 2241 QuicStreamRequest request(factory_.get()); | 2246 QuicStreamRequest request(factory_.get()); |
| 2242 EXPECT_EQ(ERR_IO_PENDING, | 2247 EXPECT_EQ(ERR_IO_PENDING, |
| 2243 request.Request(host_port_pair_, privacy_mode_, | 2248 request.Request(host_port_pair_, privacy_mode_, |
| 2244 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2249 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2245 callback_.callback())); | 2250 callback_.callback())); |
| 2246 EXPECT_EQ(OK, callback_.WaitForResult()); | 2251 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2247 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2252 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 2248 EXPECT_TRUE(stream.get()); | 2253 EXPECT_TRUE(stream.get()); |
| 2249 | 2254 |
| 2250 // Cause QUIC stream to be created. | 2255 // Cause QUIC stream to be created. |
| 2251 HttpRequestInfo request_info; | 2256 HttpRequestInfo request_info; |
| 2252 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2257 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 2253 net_log_, CompletionCallback())); | 2258 net_log_, CompletionCallback())); |
| 2254 | 2259 |
| 2255 // Ensure that session is alive and active. | 2260 // Ensure that session is alive and active. |
| 2256 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 2261 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2291 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 2296 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 2292 arraysize(writes)); | 2297 arraysize(writes)); |
| 2293 socket_factory_.AddSocketDataProvider(&socket_data); | 2298 socket_factory_.AddSocketDataProvider(&socket_data); |
| 2294 | 2299 |
| 2295 // Create request and QuicHttpStream. | 2300 // Create request and QuicHttpStream. |
| 2296 QuicStreamRequest request(factory_.get()); | 2301 QuicStreamRequest request(factory_.get()); |
| 2297 EXPECT_EQ(ERR_IO_PENDING, | 2302 EXPECT_EQ(ERR_IO_PENDING, |
| 2298 request.Request(host_port_pair_, privacy_mode_, | 2303 request.Request(host_port_pair_, privacy_mode_, |
| 2299 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2304 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2300 callback_.callback())); | 2305 callback_.callback())); |
| 2301 EXPECT_EQ(OK, callback_.WaitForResult()); | 2306 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2302 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2307 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 2303 EXPECT_TRUE(stream.get()); | 2308 EXPECT_TRUE(stream.get()); |
| 2304 | 2309 |
| 2305 // Cause QUIC stream to be created, but marked as non-migratable. | 2310 // Cause QUIC stream to be created, but marked as non-migratable. |
| 2306 HttpRequestInfo request_info; | 2311 HttpRequestInfo request_info; |
| 2307 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; | 2312 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; |
| 2308 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2313 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 2309 net_log_, CompletionCallback())); | 2314 net_log_, CompletionCallback())); |
| 2310 | 2315 |
| 2311 // Ensure that session is alive and active. | 2316 // Ensure that session is alive and active. |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2346 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 2351 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 2347 arraysize(writes)); | 2352 arraysize(writes)); |
| 2348 socket_factory_.AddSocketDataProvider(&socket_data); | 2353 socket_factory_.AddSocketDataProvider(&socket_data); |
| 2349 | 2354 |
| 2350 // Create request and QuicHttpStream. | 2355 // Create request and QuicHttpStream. |
| 2351 QuicStreamRequest request(factory_.get()); | 2356 QuicStreamRequest request(factory_.get()); |
| 2352 EXPECT_EQ(ERR_IO_PENDING, | 2357 EXPECT_EQ(ERR_IO_PENDING, |
| 2353 request.Request(host_port_pair_, privacy_mode_, | 2358 request.Request(host_port_pair_, privacy_mode_, |
| 2354 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2359 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2355 callback_.callback())); | 2360 callback_.callback())); |
| 2356 EXPECT_EQ(OK, callback_.WaitForResult()); | 2361 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2357 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2362 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 2358 EXPECT_TRUE(stream.get()); | 2363 EXPECT_TRUE(stream.get()); |
| 2359 | 2364 |
| 2360 // Cause QUIC stream to be created. | 2365 // Cause QUIC stream to be created. |
| 2361 HttpRequestInfo request_info; | 2366 HttpRequestInfo request_info; |
| 2362 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2367 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 2363 net_log_, CompletionCallback())); | 2368 net_log_, CompletionCallback())); |
| 2364 | 2369 |
| 2365 // Ensure that session is alive and active. | 2370 // Ensure that session is alive and active. |
| 2366 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 2371 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2407 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2412 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 2408 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 2413 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
| 2409 socket_factory_.AddSocketDataProvider(&socket_data2); | 2414 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 2410 | 2415 |
| 2411 QuicStreamRequest request(factory_.get()); | 2416 QuicStreamRequest request(factory_.get()); |
| 2412 EXPECT_EQ(ERR_IO_PENDING, | 2417 EXPECT_EQ(ERR_IO_PENDING, |
| 2413 request.Request(host_port_pair_, privacy_mode_, | 2418 request.Request(host_port_pair_, privacy_mode_, |
| 2414 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2419 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2415 callback_.callback())); | 2420 callback_.callback())); |
| 2416 | 2421 |
| 2417 EXPECT_EQ(OK, callback_.WaitForResult()); | 2422 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2418 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2423 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 2419 HttpRequestInfo request_info; | 2424 HttpRequestInfo request_info; |
| 2420 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2425 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 2421 net_log_, CompletionCallback())); | 2426 net_log_, CompletionCallback())); |
| 2422 | 2427 |
| 2423 ssl_config_service_->NotifySSLConfigChange(); | 2428 ssl_config_service_->NotifySSLConfigChange(); |
| 2424 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, | 2429 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, |
| 2425 stream->ReadResponseHeaders(callback_.callback())); | 2430 stream->ReadResponseHeaders(callback_.callback())); |
| 2426 EXPECT_FALSE(factory_->require_confirmation()); | 2431 EXPECT_FALSE(factory_->require_confirmation()); |
| 2427 | 2432 |
| 2428 // Now attempting to request a stream to the same origin should create | 2433 // Now attempting to request a stream to the same origin should create |
| 2429 // a new session. | 2434 // a new session. |
| 2430 | 2435 |
| 2431 QuicStreamRequest request2(factory_.get()); | 2436 QuicStreamRequest request2(factory_.get()); |
| 2432 EXPECT_EQ(ERR_IO_PENDING, | 2437 EXPECT_EQ(ERR_IO_PENDING, |
| 2433 request2.Request(host_port_pair_, privacy_mode_, | 2438 request2.Request(host_port_pair_, privacy_mode_, |
| 2434 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2439 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2435 callback_.callback())); | 2440 callback_.callback())); |
| 2436 | 2441 |
| 2437 EXPECT_EQ(OK, callback_.WaitForResult()); | 2442 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2438 stream = request2.CreateStream(); | 2443 stream = request2.CreateStream(); |
| 2439 stream.reset(); // Will reset stream 3. | 2444 stream.reset(); // Will reset stream 3. |
| 2440 | 2445 |
| 2441 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 2446 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 2442 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 2447 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 2443 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 2448 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
| 2444 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 2449 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
| 2445 } | 2450 } |
| 2446 | 2451 |
| 2447 TEST_P(QuicStreamFactoryTest, OnCertAdded) { | 2452 TEST_P(QuicStreamFactoryTest, OnCertAdded) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 2462 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2467 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 2463 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 2468 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
| 2464 socket_factory_.AddSocketDataProvider(&socket_data2); | 2469 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 2465 | 2470 |
| 2466 QuicStreamRequest request(factory_.get()); | 2471 QuicStreamRequest request(factory_.get()); |
| 2467 EXPECT_EQ(ERR_IO_PENDING, | 2472 EXPECT_EQ(ERR_IO_PENDING, |
| 2468 request.Request(host_port_pair_, privacy_mode_, | 2473 request.Request(host_port_pair_, privacy_mode_, |
| 2469 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2474 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2470 callback_.callback())); | 2475 callback_.callback())); |
| 2471 | 2476 |
| 2472 EXPECT_EQ(OK, callback_.WaitForResult()); | 2477 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2473 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2478 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 2474 HttpRequestInfo request_info; | 2479 HttpRequestInfo request_info; |
| 2475 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2480 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 2476 net_log_, CompletionCallback())); | 2481 net_log_, CompletionCallback())); |
| 2477 | 2482 |
| 2478 // Add a cert and verify that stream saw the event. | 2483 // Add a cert and verify that stream saw the event. |
| 2479 factory_->OnCertAdded(nullptr); | 2484 factory_->OnCertAdded(nullptr); |
| 2480 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, | 2485 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, |
| 2481 stream->ReadResponseHeaders(callback_.callback())); | 2486 stream->ReadResponseHeaders(callback_.callback())); |
| 2482 EXPECT_FALSE(factory_->require_confirmation()); | 2487 EXPECT_FALSE(factory_->require_confirmation()); |
| 2483 | 2488 |
| 2484 // Now attempting to request a stream to the same origin should create | 2489 // Now attempting to request a stream to the same origin should create |
| 2485 // a new session. | 2490 // a new session. |
| 2486 | 2491 |
| 2487 QuicStreamRequest request2(factory_.get()); | 2492 QuicStreamRequest request2(factory_.get()); |
| 2488 EXPECT_EQ(ERR_IO_PENDING, | 2493 EXPECT_EQ(ERR_IO_PENDING, |
| 2489 request2.Request(host_port_pair_, privacy_mode_, | 2494 request2.Request(host_port_pair_, privacy_mode_, |
| 2490 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2495 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2491 callback_.callback())); | 2496 callback_.callback())); |
| 2492 | 2497 |
| 2493 EXPECT_EQ(OK, callback_.WaitForResult()); | 2498 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2494 stream = request2.CreateStream(); | 2499 stream = request2.CreateStream(); |
| 2495 stream.reset(); // Will reset stream 3. | 2500 stream.reset(); // Will reset stream 3. |
| 2496 | 2501 |
| 2497 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 2502 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 2498 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 2503 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 2499 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 2504 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
| 2500 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 2505 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
| 2501 } | 2506 } |
| 2502 | 2507 |
| 2503 TEST_P(QuicStreamFactoryTest, OnCACertChanged) { | 2508 TEST_P(QuicStreamFactoryTest, OnCACertChanged) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 2518 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2523 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 2519 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 2524 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
| 2520 socket_factory_.AddSocketDataProvider(&socket_data2); | 2525 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 2521 | 2526 |
| 2522 QuicStreamRequest request(factory_.get()); | 2527 QuicStreamRequest request(factory_.get()); |
| 2523 EXPECT_EQ(ERR_IO_PENDING, | 2528 EXPECT_EQ(ERR_IO_PENDING, |
| 2524 request.Request(host_port_pair_, privacy_mode_, | 2529 request.Request(host_port_pair_, privacy_mode_, |
| 2525 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2530 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2526 callback_.callback())); | 2531 callback_.callback())); |
| 2527 | 2532 |
| 2528 EXPECT_EQ(OK, callback_.WaitForResult()); | 2533 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2529 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2534 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 2530 HttpRequestInfo request_info; | 2535 HttpRequestInfo request_info; |
| 2531 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2536 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 2532 net_log_, CompletionCallback())); | 2537 net_log_, CompletionCallback())); |
| 2533 | 2538 |
| 2534 // Change the CA cert and verify that stream saw the event. | 2539 // Change the CA cert and verify that stream saw the event. |
| 2535 factory_->OnCACertChanged(nullptr); | 2540 factory_->OnCACertChanged(nullptr); |
| 2536 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, | 2541 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, |
| 2537 stream->ReadResponseHeaders(callback_.callback())); | 2542 stream->ReadResponseHeaders(callback_.callback())); |
| 2538 EXPECT_FALSE(factory_->require_confirmation()); | 2543 EXPECT_FALSE(factory_->require_confirmation()); |
| 2539 | 2544 |
| 2540 // Now attempting to request a stream to the same origin should create | 2545 // Now attempting to request a stream to the same origin should create |
| 2541 // a new session. | 2546 // a new session. |
| 2542 | 2547 |
| 2543 QuicStreamRequest request2(factory_.get()); | 2548 QuicStreamRequest request2(factory_.get()); |
| 2544 EXPECT_EQ(ERR_IO_PENDING, | 2549 EXPECT_EQ(ERR_IO_PENDING, |
| 2545 request2.Request(host_port_pair_, privacy_mode_, | 2550 request2.Request(host_port_pair_, privacy_mode_, |
| 2546 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2551 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2547 callback_.callback())); | 2552 callback_.callback())); |
| 2548 | 2553 |
| 2549 EXPECT_EQ(OK, callback_.WaitForResult()); | 2554 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2550 stream = request2.CreateStream(); | 2555 stream = request2.CreateStream(); |
| 2551 stream.reset(); // Will reset stream 3. | 2556 stream.reset(); // Will reset stream 3. |
| 2552 | 2557 |
| 2553 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 2558 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 2554 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 2559 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 2555 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 2560 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
| 2556 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 2561 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
| 2557 } | 2562 } |
| 2558 | 2563 |
| 2559 TEST_P(QuicStreamFactoryTest, SharedCryptoConfig) { | 2564 TEST_P(QuicStreamFactoryTest, SharedCryptoConfig) { |
| (...skipping 1132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3692 // server supports QUIC. | 3697 // server supports QUIC. |
| 3693 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), true); | 3698 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), true); |
| 3694 EXPECT_TRUE(factory_->delay_tcp_race()); | 3699 EXPECT_TRUE(factory_->delay_tcp_race()); |
| 3695 EXPECT_EQ(base::TimeDelta::FromMicroseconds(15), | 3700 EXPECT_EQ(base::TimeDelta::FromMicroseconds(15), |
| 3696 request.GetTimeDelayForWaitingJob()); | 3701 request.GetTimeDelayForWaitingJob()); |
| 3697 | 3702 |
| 3698 // Confirm the handshake and verify that the stream is created. | 3703 // Confirm the handshake and verify that the stream is created. |
| 3699 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( | 3704 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( |
| 3700 QuicSession::HANDSHAKE_CONFIRMED); | 3705 QuicSession::HANDSHAKE_CONFIRMED); |
| 3701 | 3706 |
| 3702 EXPECT_EQ(OK, callback_.WaitForResult()); | 3707 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 3703 | 3708 |
| 3704 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 3709 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 3705 EXPECT_TRUE(stream.get()); | 3710 EXPECT_TRUE(stream.get()); |
| 3706 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 3711 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 3707 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 3712 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 3708 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), delay_tcp_race); | 3713 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), delay_tcp_race); |
| 3709 } | 3714 } |
| 3710 | 3715 |
| 3711 TEST_P(QuicStreamFactoryTest, MaybeInitialize) { | 3716 TEST_P(QuicStreamFactoryTest, MaybeInitialize) { |
| 3712 idle_connection_timeout_seconds_ = 500; | 3717 idle_connection_timeout_seconds_ = 500; |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3990 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 3995 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 3991 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); | 3996 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 3992 socket_factory_.AddSocketDataProvider(&socket_data); | 3997 socket_factory_.AddSocketDataProvider(&socket_data); |
| 3993 | 3998 |
| 3994 QuicStreamRequest request(factory_.get()); | 3999 QuicStreamRequest request(factory_.get()); |
| 3995 EXPECT_EQ(ERR_IO_PENDING, | 4000 EXPECT_EQ(ERR_IO_PENDING, |
| 3996 request.Request(host_port_pair_, privacy_mode_, | 4001 request.Request(host_port_pair_, privacy_mode_, |
| 3997 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 4002 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 3998 callback_.callback())); | 4003 callback_.callback())); |
| 3999 | 4004 |
| 4000 EXPECT_EQ(OK, callback_.WaitForResult()); | 4005 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 4001 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 4006 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 4002 EXPECT_TRUE(stream.get()); | 4007 EXPECT_TRUE(stream.get()); |
| 4003 | 4008 |
| 4004 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); | 4009 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); |
| 4005 | 4010 |
| 4006 string url = "https://www.example.org/"; | 4011 string url = "https://www.example.org/"; |
| 4007 | 4012 |
| 4008 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 4013 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| 4009 | 4014 |
| 4010 QuicClientPromisedInfo promised(session, kServerDataStreamId1, kDefaultUrl); | 4015 QuicClientPromisedInfo promised(session, kServerDataStreamId1, kDefaultUrl); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 4039 | 4044 |
| 4040 socket_factory_.AddSocketDataProvider(&socket_data1); | 4045 socket_factory_.AddSocketDataProvider(&socket_data1); |
| 4041 socket_factory_.AddSocketDataProvider(&socket_data2); | 4046 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 4042 | 4047 |
| 4043 QuicStreamRequest request(factory_.get()); | 4048 QuicStreamRequest request(factory_.get()); |
| 4044 EXPECT_EQ(ERR_IO_PENDING, | 4049 EXPECT_EQ(ERR_IO_PENDING, |
| 4045 request.Request(host_port_pair_, privacy_mode_, | 4050 request.Request(host_port_pair_, privacy_mode_, |
| 4046 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 4051 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 4047 callback_.callback())); | 4052 callback_.callback())); |
| 4048 | 4053 |
| 4049 EXPECT_EQ(OK, callback_.WaitForResult()); | 4054 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 4050 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 4055 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 4051 EXPECT_TRUE(stream.get()); | 4056 EXPECT_TRUE(stream.get()); |
| 4052 | 4057 |
| 4053 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); | 4058 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); |
| 4054 | 4059 |
| 4055 string url = "https://www.example.org/"; | 4060 string url = "https://www.example.org/"; |
| 4056 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 4061 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| 4057 | 4062 |
| 4058 QuicClientPromisedInfo promised(session, kServerDataStreamId1, kDefaultUrl); | 4063 QuicClientPromisedInfo promised(session, kServerDataStreamId1, kDefaultUrl); |
| 4059 | 4064 |
| 4060 QuicClientPushPromiseIndex* index = | 4065 QuicClientPushPromiseIndex* index = |
| 4061 QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get()); | 4066 QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get()); |
| 4062 | 4067 |
| 4063 (*index->promised_by_url())[kDefaultUrl] = &promised; | 4068 (*index->promised_by_url())[kDefaultUrl] = &promised; |
| 4064 EXPECT_EQ(index->GetPromised(kDefaultUrl), &promised); | 4069 EXPECT_EQ(index->GetPromised(kDefaultUrl), &promised); |
| 4065 | 4070 |
| 4066 // Doing the request should not use the push stream, but rather | 4071 // Doing the request should not use the push stream, but rather |
| 4067 // cancel it because the privacy modes do not match. | 4072 // cancel it because the privacy modes do not match. |
| 4068 QuicStreamRequest request2(factory_.get()); | 4073 QuicStreamRequest request2(factory_.get()); |
| 4069 EXPECT_EQ(ERR_IO_PENDING, | 4074 EXPECT_EQ(ERR_IO_PENDING, |
| 4070 request2.Request(host_port_pair_, PRIVACY_MODE_ENABLED, | 4075 request2.Request(host_port_pair_, PRIVACY_MODE_ENABLED, |
| 4071 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 4076 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 4072 callback_.callback())); | 4077 callback_.callback())); |
| 4073 | 4078 |
| 4074 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); | 4079 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); |
| 4075 EXPECT_EQ(index->GetPromised(kDefaultUrl), nullptr); | 4080 EXPECT_EQ(index->GetPromised(kDefaultUrl), nullptr); |
| 4076 | 4081 |
| 4077 EXPECT_EQ(OK, callback_.WaitForResult()); | 4082 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 4078 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); | 4083 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); |
| 4079 EXPECT_TRUE(stream2.get()); | 4084 EXPECT_TRUE(stream2.get()); |
| 4080 | 4085 |
| 4081 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); | 4086 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); |
| 4082 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); | 4087 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); |
| 4083 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 4088 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
| 4084 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 4089 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
| 4085 } | 4090 } |
| 4086 | 4091 |
| 4087 // Pool to existing session with matching QuicServerId | 4092 // Pool to existing session with matching QuicServerId |
| 4088 // even if destination is different. | 4093 // even if destination is different. |
| 4089 TEST_P(QuicStreamFactoryTest, PoolByOrigin) { | 4094 TEST_P(QuicStreamFactoryTest, PoolByOrigin) { |
| 4090 Initialize(); | 4095 Initialize(); |
| 4091 | 4096 |
| 4092 HostPortPair destination1("first.example.com", 443); | 4097 HostPortPair destination1("first.example.com", 443); |
| 4093 HostPortPair destination2("second.example.com", 443); | 4098 HostPortPair destination2("second.example.com", 443); |
| 4094 | 4099 |
| 4095 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 4100 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 4096 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 4101 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 4097 | 4102 |
| 4098 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 4103 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 4099 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); | 4104 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 4100 socket_factory_.AddSocketDataProvider(&socket_data); | 4105 socket_factory_.AddSocketDataProvider(&socket_data); |
| 4101 | 4106 |
| 4102 QuicStreamRequest request1(factory_.get()); | 4107 QuicStreamRequest request1(factory_.get()); |
| 4103 EXPECT_EQ(ERR_IO_PENDING, | 4108 EXPECT_EQ(ERR_IO_PENDING, |
| 4104 request1.Request(destination1, privacy_mode_, | 4109 request1.Request(destination1, privacy_mode_, |
| 4105 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 4110 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 4106 callback_.callback())); | 4111 callback_.callback())); |
| 4107 EXPECT_EQ(OK, callback_.WaitForResult()); | 4112 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 4108 std::unique_ptr<QuicHttpStream> stream1 = request1.CreateStream(); | 4113 std::unique_ptr<QuicHttpStream> stream1 = request1.CreateStream(); |
| 4109 EXPECT_TRUE(stream1.get()); | 4114 EXPECT_TRUE(stream1.get()); |
| 4110 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 4115 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
| 4111 | 4116 |
| 4112 // Second request returns synchronously because it pools to existing session. | 4117 // Second request returns synchronously because it pools to existing session. |
| 4113 TestCompletionCallback callback2; | 4118 TestCompletionCallback callback2; |
| 4114 QuicStreamRequest request2(factory_.get()); | 4119 QuicStreamRequest request2(factory_.get()); |
| 4115 EXPECT_EQ(OK, request2.Request(destination2, privacy_mode_, | 4120 EXPECT_EQ(OK, request2.Request(destination2, privacy_mode_, |
| 4116 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 4121 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 4117 callback2.callback())); | 4122 callback2.callback())); |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4210 verify_details.cert_verify_result.is_issued_by_known_root = true; | 4215 verify_details.cert_verify_result.is_issued_by_known_root = true; |
| 4211 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 4216 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 4212 | 4217 |
| 4213 AddHangingSocketData(); | 4218 AddHangingSocketData(); |
| 4214 | 4219 |
| 4215 QuicStreamRequest request(factory_.get()); | 4220 QuicStreamRequest request(factory_.get()); |
| 4216 EXPECT_EQ(ERR_IO_PENDING, request.Request(destination, privacy_mode_, | 4221 EXPECT_EQ(ERR_IO_PENDING, request.Request(destination, privacy_mode_, |
| 4217 /*cert_verify_flags=*/0, url, "GET", | 4222 /*cert_verify_flags=*/0, url, "GET", |
| 4218 net_log_, callback_.callback())); | 4223 net_log_, callback_.callback())); |
| 4219 | 4224 |
| 4220 EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED, callback_.WaitForResult()); | 4225 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_QUIC_HANDSHAKE_FAILED)); |
| 4221 | 4226 |
| 4222 EXPECT_TRUE(AllDataConsumed()); | 4227 EXPECT_TRUE(AllDataConsumed()); |
| 4223 } | 4228 } |
| 4224 | 4229 |
| 4225 // QuicStreamRequest is pooled based on |destination| if certificate matches. | 4230 // QuicStreamRequest is pooled based on |destination| if certificate matches. |
| 4226 TEST_P(QuicStreamFactoryWithDestinationTest, SharedCertificate) { | 4231 TEST_P(QuicStreamFactoryWithDestinationTest, SharedCertificate) { |
| 4227 Initialize(); | 4232 Initialize(); |
| 4228 | 4233 |
| 4229 GURL url1("https://www.example.org/"); | 4234 GURL url1("https://www.example.org/"); |
| 4230 GURL url2("https://mail.example.org/"); | 4235 GURL url2("https://mail.example.org/"); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 4245 verify_details.cert_verify_result.is_issued_by_known_root = true; | 4250 verify_details.cert_verify_result.is_issued_by_known_root = true; |
| 4246 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 4251 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 4247 | 4252 |
| 4248 AddHangingSocketData(); | 4253 AddHangingSocketData(); |
| 4249 | 4254 |
| 4250 QuicStreamRequest request1(factory_.get()); | 4255 QuicStreamRequest request1(factory_.get()); |
| 4251 EXPECT_EQ(ERR_IO_PENDING, | 4256 EXPECT_EQ(ERR_IO_PENDING, |
| 4252 request1.Request(destination, privacy_mode_, | 4257 request1.Request(destination, privacy_mode_, |
| 4253 /*cert_verify_flags=*/0, url1, "GET", net_log_, | 4258 /*cert_verify_flags=*/0, url1, "GET", net_log_, |
| 4254 callback_.callback())); | 4259 callback_.callback())); |
| 4255 EXPECT_EQ(OK, callback_.WaitForResult()); | 4260 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 4256 std::unique_ptr<QuicHttpStream> stream1 = request1.CreateStream(); | 4261 std::unique_ptr<QuicHttpStream> stream1 = request1.CreateStream(); |
| 4257 EXPECT_TRUE(stream1.get()); | 4262 EXPECT_TRUE(stream1.get()); |
| 4258 EXPECT_TRUE(HasActiveSession(origin1_)); | 4263 EXPECT_TRUE(HasActiveSession(origin1_)); |
| 4259 | 4264 |
| 4260 // Second request returns synchronously because it pools to existing session. | 4265 // Second request returns synchronously because it pools to existing session. |
| 4261 TestCompletionCallback callback2; | 4266 TestCompletionCallback callback2; |
| 4262 QuicStreamRequest request2(factory_.get()); | 4267 QuicStreamRequest request2(factory_.get()); |
| 4263 EXPECT_EQ(OK, request2.Request(destination, privacy_mode_, | 4268 EXPECT_EQ(OK, request2.Request(destination, privacy_mode_, |
| 4264 /*cert_verify_flags=*/0, url2, "GET", net_log_, | 4269 /*cert_verify_flags=*/0, url2, "GET", net_log_, |
| 4265 callback2.callback())); | 4270 callback2.callback())); |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4379 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2); | 4384 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2); |
| 4380 | 4385 |
| 4381 AddHangingSocketData(); | 4386 AddHangingSocketData(); |
| 4382 AddHangingSocketData(); | 4387 AddHangingSocketData(); |
| 4383 | 4388 |
| 4384 QuicStreamRequest request1(factory_.get()); | 4389 QuicStreamRequest request1(factory_.get()); |
| 4385 EXPECT_EQ(ERR_IO_PENDING, | 4390 EXPECT_EQ(ERR_IO_PENDING, |
| 4386 request1.Request(destination, privacy_mode_, | 4391 request1.Request(destination, privacy_mode_, |
| 4387 /*cert_verify_flags=*/0, url1, "GET", net_log_, | 4392 /*cert_verify_flags=*/0, url1, "GET", net_log_, |
| 4388 callback_.callback())); | 4393 callback_.callback())); |
| 4389 EXPECT_EQ(OK, callback_.WaitForResult()); | 4394 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 4390 std::unique_ptr<QuicHttpStream> stream1 = request1.CreateStream(); | 4395 std::unique_ptr<QuicHttpStream> stream1 = request1.CreateStream(); |
| 4391 EXPECT_TRUE(stream1.get()); | 4396 EXPECT_TRUE(stream1.get()); |
| 4392 EXPECT_TRUE(HasActiveSession(origin1_)); | 4397 EXPECT_TRUE(HasActiveSession(origin1_)); |
| 4393 | 4398 |
| 4394 TestCompletionCallback callback2; | 4399 TestCompletionCallback callback2; |
| 4395 QuicStreamRequest request2(factory_.get()); | 4400 QuicStreamRequest request2(factory_.get()); |
| 4396 EXPECT_EQ(ERR_IO_PENDING, | 4401 EXPECT_EQ(ERR_IO_PENDING, |
| 4397 request2.Request(destination, privacy_mode_, | 4402 request2.Request(destination, privacy_mode_, |
| 4398 /*cert_verify_flags=*/0, url2, "GET", net_log_, | 4403 /*cert_verify_flags=*/0, url2, "GET", net_log_, |
| 4399 callback2.callback())); | 4404 callback2.callback())); |
| 4400 EXPECT_EQ(OK, callback2.WaitForResult()); | 4405 EXPECT_THAT(callback2.WaitForResult(), IsOk()); |
| 4401 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); | 4406 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); |
| 4402 EXPECT_TRUE(stream2.get()); | 4407 EXPECT_TRUE(stream2.get()); |
| 4403 | 4408 |
| 4404 // |request2| does not pool to the first session, because the certificate does | 4409 // |request2| does not pool to the first session, because the certificate does |
| 4405 // not match. Instead, another session is opened to the same destination, but | 4410 // not match. Instead, another session is opened to the same destination, but |
| 4406 // with a different QuicServerId. | 4411 // with a different QuicServerId. |
| 4407 QuicChromiumClientSession* session1 = | 4412 QuicChromiumClientSession* session1 = |
| 4408 QuicHttpStreamPeer::GetSession(stream1.get()); | 4413 QuicHttpStreamPeer::GetSession(stream1.get()); |
| 4409 QuicChromiumClientSession* session2 = | 4414 QuicChromiumClientSession* session2 = |
| 4410 QuicHttpStreamPeer::GetSession(stream2.get()); | 4415 QuicHttpStreamPeer::GetSession(stream2.get()); |
| 4411 EXPECT_NE(session1, session2); | 4416 EXPECT_NE(session1, session2); |
| 4412 | 4417 |
| 4413 EXPECT_EQ(QuicServerId(origin1_, privacy_mode_), session1->server_id()); | 4418 EXPECT_EQ(QuicServerId(origin1_, privacy_mode_), session1->server_id()); |
| 4414 EXPECT_EQ(QuicServerId(origin2_, privacy_mode_), session2->server_id()); | 4419 EXPECT_EQ(QuicServerId(origin2_, privacy_mode_), session2->server_id()); |
| 4415 | 4420 |
| 4416 EXPECT_TRUE(AllDataConsumed()); | 4421 EXPECT_TRUE(AllDataConsumed()); |
| 4417 } | 4422 } |
| 4418 | 4423 |
| 4419 } // namespace test | 4424 } // namespace test |
| 4420 } // namespace net | 4425 } // namespace net |
| OLD | NEW |