Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(493)

Side by Side Diff: net/quic/chromium/quic_stream_factory_test.cc

Issue 2958133002: Change QuicStreamRequest::Request() to take a preferred QuicVersion so that (Closed)
Patch Set: Add QuicNetworkTransactionTest: select correct Quic Version Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/chromium/quic_stream_factory.h" 5 #include "net/quic/chromium/quic_stream_factory.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <ostream> 8 #include <ostream>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 idle_connection_timeout_seconds_(kIdleConnectionTimeoutSeconds), 197 idle_connection_timeout_seconds_(kIdleConnectionTimeoutSeconds),
198 reduced_ping_timeout_seconds_(kPingTimeoutSecs), 198 reduced_ping_timeout_seconds_(kPingTimeoutSecs),
199 packet_reader_yield_after_duration_milliseconds_( 199 packet_reader_yield_after_duration_milliseconds_(
200 kQuicYieldAfterDurationMilliseconds), 200 kQuicYieldAfterDurationMilliseconds),
201 migrate_sessions_on_network_change_(false), 201 migrate_sessions_on_network_change_(false),
202 migrate_sessions_early_(false), 202 migrate_sessions_early_(false),
203 allow_server_migration_(false), 203 allow_server_migration_(false),
204 force_hol_blocking_(false), 204 force_hol_blocking_(false),
205 race_cert_verification_(false), 205 race_cert_verification_(false),
206 estimate_initial_rtt_(false) { 206 estimate_initial_rtt_(false) {
207 supported_versions_.push_back(version_);
208 advertised_versions_.push_back(version_);
207 clock_.AdvanceTime(QuicTime::Delta::FromSeconds(1)); 209 clock_.AdvanceTime(QuicTime::Delta::FromSeconds(1));
208 } 210 }
209 211
210 void Initialize() { 212 void Initialize() {
211 DCHECK(!factory_); 213 DCHECK(!factory_);
212 factory_.reset(new QuicStreamFactory( 214 factory_.reset(new QuicStreamFactory(
213 net_log_.net_log(), &host_resolver_, ssl_config_service_.get(), 215 net_log_.net_log(), &host_resolver_, ssl_config_service_.get(),
214 &socket_factory_, &http_server_properties_, cert_verifier_.get(), 216 &socket_factory_, &http_server_properties_, cert_verifier_.get(),
215 &ct_policy_enforcer_, channel_id_service_.get(), 217 &ct_policy_enforcer_, channel_id_service_.get(),
216 &transport_security_state_, cert_transparency_verifier_.get(), 218 &transport_security_state_, cert_transparency_verifier_.get(),
217 /*SocketPerformanceWatcherFactory*/ nullptr, 219 /*SocketPerformanceWatcherFactory*/ nullptr,
218 &crypto_client_stream_factory_, &random_generator_, &clock_, 220 &crypto_client_stream_factory_, &random_generator_, &clock_,
219 kDefaultMaxPacketSize, string(), SupportedVersions(version_), 221 kDefaultMaxPacketSize, string(), supported_versions_,
220 store_server_configs_in_properties_, close_sessions_on_ip_change_, 222 store_server_configs_in_properties_, close_sessions_on_ip_change_,
221 /*mark_quic_broken_when_network_blackholes*/ false, 223 /*mark_quic_broken_when_network_blackholes*/ false,
222 idle_connection_timeout_seconds_, reduced_ping_timeout_seconds_, 224 idle_connection_timeout_seconds_, reduced_ping_timeout_seconds_,
223 packet_reader_yield_after_duration_milliseconds_, 225 packet_reader_yield_after_duration_milliseconds_,
224 migrate_sessions_on_network_change_, migrate_sessions_early_, 226 migrate_sessions_on_network_change_, migrate_sessions_early_,
225 allow_server_migration_, force_hol_blocking_, race_cert_verification_, 227 allow_server_migration_, force_hol_blocking_, race_cert_verification_,
226 /*do_not_fragment*/ true, estimate_initial_rtt_, QuicTagVector(), 228 /*do_not_fragment*/ true, estimate_initial_rtt_, QuicTagVector(),
227 /*enable_token_binding*/ false)); 229 /*enable_token_binding*/ false));
228 factory_->set_require_confirmation(false); 230 factory_->set_require_confirmation(false);
229 } 231 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 size_t socket_count = socket_factory_.udp_client_socket_ports().size(); 280 size_t socket_count = socket_factory_.udp_client_socket_ports().size();
279 281
280 MockQuicData socket_data; 282 MockQuicData socket_data;
281 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 283 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
282 socket_data.AddWrite(ConstructInitialSettingsPacket()); 284 socket_data.AddWrite(ConstructInitialSettingsPacket());
283 socket_data.AddSocketDataToFactory(&socket_factory_); 285 socket_data.AddSocketDataToFactory(&socket_factory_);
284 286
285 QuicStreamRequest request(factory_.get()); 287 QuicStreamRequest request(factory_.get());
286 GURL url("https://" + destination.host() + "/"); 288 GURL url("https://" + destination.host() + "/");
287 EXPECT_EQ(ERR_IO_PENDING, 289 EXPECT_EQ(ERR_IO_PENDING,
288 request.Request(destination, privacy_mode_, 290 request.Request(destination, advertised_versions_, privacy_mode_,
289 /*cert_verify_flags=*/0, url, "GET", net_log_, 291 /*cert_verify_flags=*/0, url, "GET", net_log_,
290 callback_.callback())); 292 callback_.callback()));
291 293
292 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 294 EXPECT_THAT(callback_.WaitForResult(), IsOk());
293 std::unique_ptr<HttpStream> stream = request.CreateStream(); 295 std::unique_ptr<HttpStream> stream = request.CreateStream();
294 EXPECT_TRUE(stream.get()); 296 EXPECT_TRUE(stream.get());
295 stream.reset(); 297 stream.reset();
296 298
297 QuicChromiumClientSession* session = GetActiveSession(destination); 299 QuicChromiumClientSession* session = GetActiveSession(destination);
298 300
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 424 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
423 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 425 socket_data2.AddWrite(ConstructInitialSettingsPacket());
424 socket_data2.AddWrite( 426 socket_data2.AddWrite(
425 client_maker_.MakePingPacket(2, /*include_version=*/true)); 427 client_maker_.MakePingPacket(2, /*include_version=*/true));
426 socket_data2.AddWrite(client_maker_.MakeRstPacket( 428 socket_data2.AddWrite(client_maker_.MakeRstPacket(
427 3, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 429 3, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
428 socket_data2.AddSocketDataToFactory(&socket_factory_); 430 socket_data2.AddSocketDataToFactory(&socket_factory_);
429 431
430 // Create request and QuicHttpStream. 432 // Create request and QuicHttpStream.
431 QuicStreamRequest request(factory_.get()); 433 QuicStreamRequest request(factory_.get());
432 EXPECT_EQ(ERR_IO_PENDING, 434 EXPECT_EQ(
433 request.Request(host_port_pair_, privacy_mode_, 435 ERR_IO_PENDING,
434 /*cert_verify_flags=*/0, url_, "GET", net_log_, 436 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
435 callback_.callback())); 437 /*cert_verify_flags=*/0, url_, "GET", net_log_,
438 callback_.callback()));
436 EXPECT_EQ(OK, callback_.WaitForResult()); 439 EXPECT_EQ(OK, callback_.WaitForResult());
437 440
438 // Run QuicChromiumClientSession::WriteToNewSocket() 441 // Run QuicChromiumClientSession::WriteToNewSocket()
439 // posted by QuicChromiumClientSession::MigrateToSocket(). 442 // posted by QuicChromiumClientSession::MigrateToSocket().
440 base::RunLoop().RunUntilIdle(); 443 base::RunLoop().RunUntilIdle();
441 444
442 std::unique_ptr<HttpStream> stream = request.CreateStream(); 445 std::unique_ptr<HttpStream> stream = request.CreateStream();
443 EXPECT_TRUE(stream.get()); 446 EXPECT_TRUE(stream.get());
444 447
445 // Cause QUIC stream to be created. 448 // Cause QUIC stream to be created.
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 606 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
604 "192.168.0.1", ""); 607 "192.168.0.1", "");
605 608
606 // Create a session and verify that the cached state is loaded. 609 // Create a session and verify that the cached state is loaded.
607 MockQuicData socket_data; 610 MockQuicData socket_data;
608 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 611 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
609 socket_data.AddSocketDataToFactory(&socket_factory_); 612 socket_data.AddSocketDataToFactory(&socket_factory_);
610 613
611 QuicStreamRequest request(factory_.get()); 614 QuicStreamRequest request(factory_.get());
612 EXPECT_EQ(ERR_IO_PENDING, 615 EXPECT_EQ(ERR_IO_PENDING,
613 request.Request(quic_server_id.host_port_pair(), privacy_mode_, 616 request.Request(quic_server_id.host_port_pair(),
617 advertised_versions_, privacy_mode_,
614 /*cert_verify_flags=*/0, url_, "GET", net_log_, 618 /*cert_verify_flags=*/0, url_, "GET", net_log_,
615 callback_.callback())); 619 callback_.callback()));
616 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 620 EXPECT_THAT(callback_.WaitForResult(), IsOk());
617 621
618 EXPECT_FALSE(QuicStreamFactoryPeer::CryptoConfigCacheIsEmpty( 622 EXPECT_FALSE(QuicStreamFactoryPeer::CryptoConfigCacheIsEmpty(
619 factory_.get(), quic_server_id)); 623 factory_.get(), quic_server_id));
620 QuicCryptoClientConfig* crypto_config = 624 QuicCryptoClientConfig* crypto_config =
621 QuicStreamFactoryPeer::GetCryptoConfig(factory_.get()); 625 QuicStreamFactoryPeer::GetCryptoConfig(factory_.get());
622 QuicCryptoClientConfig::CachedState* cached = 626 QuicCryptoClientConfig::CachedState* cached =
623 crypto_config->LookupOrCreate(quic_server_id); 627 crypto_config->LookupOrCreate(quic_server_id);
(...skipping 12 matching lines...) Expand all
636 // Create a session and verify that the cached state is loaded. 640 // Create a session and verify that the cached state is loaded.
637 MockQuicData socket_data2; 641 MockQuicData socket_data2;
638 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 642 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
639 socket_data2.AddSocketDataToFactory(&socket_factory_); 643 socket_data2.AddSocketDataToFactory(&socket_factory_);
640 644
641 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 645 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
642 "192.168.0.2", ""); 646 "192.168.0.2", "");
643 647
644 QuicStreamRequest request2(factory_.get()); 648 QuicStreamRequest request2(factory_.get());
645 EXPECT_EQ(ERR_IO_PENDING, 649 EXPECT_EQ(ERR_IO_PENDING,
646 request2.Request(quic_server_id2.host_port_pair(), privacy_mode_, 650 request2.Request(quic_server_id2.host_port_pair(),
651 advertised_versions_, privacy_mode_,
647 /*cert_verify_flags=*/0, 652 /*cert_verify_flags=*/0,
648 GURL("https://mail.example.org/"), "GET", 653 GURL("https://mail.example.org/"), "GET",
649 net_log_, callback_.callback())); 654 net_log_, callback_.callback()));
650 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 655 EXPECT_THAT(callback_.WaitForResult(), IsOk());
651 656
652 EXPECT_FALSE(QuicStreamFactoryPeer::CryptoConfigCacheIsEmpty( 657 EXPECT_FALSE(QuicStreamFactoryPeer::CryptoConfigCacheIsEmpty(
653 factory_.get(), quic_server_id2)); 658 factory_.get(), quic_server_id2));
654 QuicCryptoClientConfig::CachedState* cached2 = 659 QuicCryptoClientConfig::CachedState* cached2 =
655 crypto_config->LookupOrCreate(quic_server_id2); 660 crypto_config->LookupOrCreate(quic_server_id2);
656 EXPECT_FALSE(cached2->server_config().empty()); 661 EXPECT_FALSE(cached2->server_config().empty());
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 bool disconnected); 701 bool disconnected);
697 702
698 MockHostResolver host_resolver_; 703 MockHostResolver host_resolver_;
699 scoped_refptr<SSLConfigService> ssl_config_service_; 704 scoped_refptr<SSLConfigService> ssl_config_service_;
700 MockClientSocketFactory socket_factory_; 705 MockClientSocketFactory socket_factory_;
701 MockCryptoClientStreamFactory crypto_client_stream_factory_; 706 MockCryptoClientStreamFactory crypto_client_stream_factory_;
702 MockRandom random_generator_; 707 MockRandom random_generator_;
703 MockClock clock_; 708 MockClock clock_;
704 scoped_refptr<TestTaskRunner> runner_; 709 scoped_refptr<TestTaskRunner> runner_;
705 QuicVersion version_; 710 QuicVersion version_;
711 QuicVersionVector supported_versions_;
712 QuicVersionVector advertised_versions_;
706 QuicTestPacketMaker client_maker_; 713 QuicTestPacketMaker client_maker_;
707 QuicTestPacketMaker server_maker_; 714 QuicTestPacketMaker server_maker_;
708 HttpServerPropertiesImpl http_server_properties_; 715 HttpServerPropertiesImpl http_server_properties_;
709 std::unique_ptr<CertVerifier> cert_verifier_; 716 std::unique_ptr<CertVerifier> cert_verifier_;
710 std::unique_ptr<ChannelIDService> channel_id_service_; 717 std::unique_ptr<ChannelIDService> channel_id_service_;
711 TransportSecurityState transport_security_state_; 718 TransportSecurityState transport_security_state_;
712 std::unique_ptr<CTVerifier> cert_transparency_verifier_; 719 std::unique_ptr<CTVerifier> cert_transparency_verifier_;
713 CTPolicyEnforcer ct_policy_enforcer_; 720 CTPolicyEnforcer ct_policy_enforcer_;
714 std::unique_ptr<ScopedMockNetworkChangeNotifier> 721 std::unique_ptr<ScopedMockNetworkChangeNotifier>
715 scoped_mock_network_change_notifier_; 722 scoped_mock_network_change_notifier_;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
752 Initialize(); 759 Initialize();
753 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 760 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
754 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 761 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
755 762
756 MockQuicData socket_data; 763 MockQuicData socket_data;
757 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 764 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
758 socket_data.AddWrite(ConstructInitialSettingsPacket()); 765 socket_data.AddWrite(ConstructInitialSettingsPacket());
759 socket_data.AddSocketDataToFactory(&socket_factory_); 766 socket_data.AddSocketDataToFactory(&socket_factory_);
760 767
761 QuicStreamRequest request(factory_.get()); 768 QuicStreamRequest request(factory_.get());
762 EXPECT_EQ(ERR_IO_PENDING, 769 EXPECT_EQ(
763 request.Request(host_port_pair_, privacy_mode_, 770 ERR_IO_PENDING,
764 /*cert_verify_flags=*/0, url_, "GET", net_log_, 771 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
765 callback_.callback())); 772 /*cert_verify_flags=*/0, url_, "GET", net_log_,
773 callback_.callback()));
766 774
767 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 775 EXPECT_THAT(callback_.WaitForResult(), IsOk());
768 std::unique_ptr<HttpStream> stream = request.CreateStream(); 776 std::unique_ptr<HttpStream> stream = request.CreateStream();
769 EXPECT_TRUE(stream.get()); 777 EXPECT_TRUE(stream.get());
770 778
771 QuicStreamRequest request2(factory_.get()); 779 QuicStreamRequest request2(factory_.get());
772 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_, 780 EXPECT_EQ(
773 /*cert_verify_flags=*/0, url_, "GET", net_log_, 781 OK, request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
774 callback_.callback())); 782 /*cert_verify_flags=*/0, url_, "GET", net_log_,
783 callback_.callback()));
775 // Will reset stream 3. 784 // Will reset stream 3.
776 stream = request2.CreateStream(); 785 stream = request2.CreateStream();
777 786
778 EXPECT_TRUE(stream.get()); 787 EXPECT_TRUE(stream.get());
779 788
780 // TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result 789 // TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result
781 // in streams on different sessions. 790 // in streams on different sessions.
782 QuicStreamRequest request3(factory_.get()); 791 QuicStreamRequest request3(factory_.get());
783 EXPECT_EQ(OK, request3.Request(host_port_pair_, privacy_mode_, 792 EXPECT_EQ(
784 /*cert_verify_flags=*/0, url_, "GET", net_log_, 793 OK, request3.Request(host_port_pair_, advertised_versions_, privacy_mode_,
785 callback_.callback())); 794 /*cert_verify_flags=*/0, url_, "GET", net_log_,
795 callback_.callback()));
786 stream = request3.CreateStream(); // Will reset stream 5. 796 stream = request3.CreateStream(); // Will reset stream 5.
787 stream.reset(); // Will reset stream 7. 797 stream.reset(); // Will reset stream 7.
788 798
789 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 799 EXPECT_TRUE(socket_data.AllReadDataConsumed());
790 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 800 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
791 } 801 }
792 802
793 TEST_P(QuicStreamFactoryTest, CreateZeroRtt) { 803 TEST_P(QuicStreamFactoryTest, CreateZeroRtt) {
794 Initialize(); 804 Initialize();
795 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 805 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
796 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 806 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
797 807
798 MockQuicData socket_data; 808 MockQuicData socket_data;
799 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 809 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
800 socket_data.AddSocketDataToFactory(&socket_factory_); 810 socket_data.AddSocketDataToFactory(&socket_factory_);
801 811
802 crypto_client_stream_factory_.set_handshake_mode( 812 crypto_client_stream_factory_.set_handshake_mode(
803 MockCryptoClientStream::ZERO_RTT); 813 MockCryptoClientStream::ZERO_RTT);
804 host_resolver_.set_synchronous_mode(true); 814 host_resolver_.set_synchronous_mode(true);
805 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 815 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
806 "192.168.0.1", ""); 816 "192.168.0.1", "");
807 817
808 QuicStreamRequest request(factory_.get()); 818 QuicStreamRequest request(factory_.get());
809 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 819 EXPECT_EQ(
810 /*cert_verify_flags=*/0, url_, "GET", net_log_, 820 OK, request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
811 callback_.callback())); 821 /*cert_verify_flags=*/0, url_, "GET", net_log_,
822 callback_.callback()));
812 823
813 std::unique_ptr<HttpStream> stream = request.CreateStream(); 824 std::unique_ptr<HttpStream> stream = request.CreateStream();
814 EXPECT_TRUE(stream.get()); 825 EXPECT_TRUE(stream.get());
815 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 826 EXPECT_TRUE(socket_data.AllReadDataConsumed());
816 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 827 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
817 } 828 }
818 829
819 TEST_P(QuicStreamFactoryTest, CreateZeroRttPost) { 830 TEST_P(QuicStreamFactoryTest, CreateZeroRttPost) {
820 Initialize(); 831 Initialize();
821 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 832 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
822 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 833 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
823 834
824 MockQuicData socket_data; 835 MockQuicData socket_data;
825 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 836 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
826 socket_data.AddSocketDataToFactory(&socket_factory_); 837 socket_data.AddSocketDataToFactory(&socket_factory_);
827 838
828 crypto_client_stream_factory_.set_handshake_mode( 839 crypto_client_stream_factory_.set_handshake_mode(
829 MockCryptoClientStream::ZERO_RTT); 840 MockCryptoClientStream::ZERO_RTT);
830 host_resolver_.set_synchronous_mode(true); 841 host_resolver_.set_synchronous_mode(true);
831 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 842 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
832 "192.168.0.1", ""); 843 "192.168.0.1", "");
833 844
834 QuicStreamRequest request(factory_.get()); 845 QuicStreamRequest request(factory_.get());
835 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 846 EXPECT_EQ(
836 /*cert_verify_flags=*/0, url_, "POST", net_log_, 847 OK, request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
837 callback_.callback())); 848 /*cert_verify_flags=*/0, url_, "POST", net_log_,
849 callback_.callback()));
838 850
839 std::unique_ptr<HttpStream> stream = request.CreateStream(); 851 std::unique_ptr<HttpStream> stream = request.CreateStream();
840 EXPECT_TRUE(stream.get()); 852 EXPECT_TRUE(stream.get());
841 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 853 EXPECT_TRUE(socket_data.AllReadDataConsumed());
842 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 854 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
843 } 855 }
844 856
845 TEST_P(QuicStreamFactoryTest, DefaultInitialRtt) { 857 TEST_P(QuicStreamFactoryTest, CreateWithNoAdvertisedVersion) {
858 // Set the net stack to support two QUIC versions.
859 if (version_ != QUIC_VERSION_40) {
860 supported_versions_.push_back(QUIC_VERSION_40);
861 } else {
862 supported_versions_.push_back(QUIC_VERSION_38);
863 }
846 Initialize(); 864 Initialize();
847 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 865 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
848 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 866 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
849 867
850 MockQuicData socket_data; 868 MockQuicData socket_data;
851 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 869 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
852 socket_data.AddWrite(ConstructInitialSettingsPacket()); 870 socket_data.AddWrite(ConstructInitialSettingsPacket());
853 socket_data.AddSocketDataToFactory(&socket_factory_); 871 socket_data.AddSocketDataToFactory(&socket_factory_);
854 872
855 QuicStreamRequest request(factory_.get()); 873 QuicStreamRequest request(factory_.get());
874 // There is no advertised QUIC version. QuicStreamFactory::Request will use
875 // the preferred QUIC version that is suppported by the net stack,
876 // i.e., |version_|.
856 EXPECT_EQ(ERR_IO_PENDING, 877 EXPECT_EQ(ERR_IO_PENDING,
857 request.Request(host_port_pair_, privacy_mode_, 878 request.Request(host_port_pair_, QuicVersionVector(), privacy_mode_,
858 /*cert_verify_flags=*/0, url_, "GET", net_log_, 879 /*cert_verify_flags=*/0, url_, "GET", net_log_,
859 callback_.callback())); 880 callback_.callback()));
860 881
861 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 882 EXPECT_THAT(callback_.WaitForResult(), IsOk());
862 std::unique_ptr<HttpStream> stream = request.CreateStream(); 883 std::unique_ptr<HttpStream> stream = request.CreateStream();
863 EXPECT_TRUE(stream.get()); 884 EXPECT_TRUE(stream.get());
864 885
865 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 886 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
887 EXPECT_EQ(version_, session->GetQuicVersion());
888 EXPECT_EQ(100000u, session->connection()->GetStats().srtt_us);
889 ASSERT_FALSE(session->config()->HasInitialRoundTripTimeUsToSend());
890 }
891
892 TEST_P(QuicStreamFactoryTest, CreateWithNoMutuallySupportedVersions) {
893 // Set the net stack to support two QUIC versions.
894 if (version_ != QUIC_VERSION_40) {
895 supported_versions_.push_back(QUIC_VERSION_40);
896 } else {
897 supported_versions_.push_back(QUIC_VERSION_38);
898 }
899 // Set the advertised versions to be different from all the versions that
900 // this net stack supports. QuicStreamFactory::Request should use the
901 // preferred QUIC version supported by the net stack.
902 advertised_versions_.clear();
903 advertised_versions_.push_back(QUIC_VERSION_UNSUPPORTED);
904
905 Initialize();
906 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
907 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
908
909 MockQuicData socket_data;
910 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
911 socket_data.AddWrite(ConstructInitialSettingsPacket());
912 socket_data.AddSocketDataToFactory(&socket_factory_);
913
914 QuicStreamRequest request(factory_.get());
915 EXPECT_EQ(
916 ERR_IO_PENDING,
917 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
918 /*cert_verify_flags=*/0, url_, "GET", net_log_,
919 callback_.callback()));
920
921 EXPECT_THAT(callback_.WaitForResult(), IsOk());
922 std::unique_ptr<HttpStream> stream = request.CreateStream();
923 EXPECT_TRUE(stream.get());
924
925 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
926 EXPECT_EQ(version_, session->GetQuicVersion());
927 EXPECT_EQ(100000u, session->connection()->GetStats().srtt_us);
928 ASSERT_FALSE(session->config()->HasInitialRoundTripTimeUsToSend());
929 }
930
931 TEST_P(QuicStreamFactoryTest, CreateWithMutuallySupportedVersions) {
932 // Set the net stack to support two QUIC versions: |version_| is the
933 // non-preferred version.
934 supported_versions_.clear();
935 if (version_ != QUIC_VERSION_40) {
936 supported_versions_.push_back(QUIC_VERSION_40);
937 } else {
938 supported_versions_.push_back(QUIC_VERSION_38);
939 }
940 supported_versions_.push_back(version_);
941
942 Initialize();
943 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
944 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
945
946 MockQuicData socket_data;
947 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
948 socket_data.AddWrite(ConstructInitialSettingsPacket());
949 socket_data.AddSocketDataToFactory(&socket_factory_);
950
951 QuicStreamRequest request(factory_.get());
952 // The version advertised {version_} is not preferred by the net stack but
953 // supportd. QuicStreamFactory::Request should select the mutually supported
Bence 2017/06/28 19:08:58 s/supportd/supported/
Zhongyi Shi 2017/07/05 23:08:59 Acknowledged.
954 // version.
955 EXPECT_EQ(
956 ERR_IO_PENDING,
957 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
958 /*cert_verify_flags=*/0, url_, "GET", net_log_,
959 callback_.callback()));
960
961 EXPECT_THAT(callback_.WaitForResult(), IsOk());
962 std::unique_ptr<HttpStream> stream = request.CreateStream();
963 EXPECT_TRUE(stream.get());
964
965 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
966 EXPECT_EQ(version_, session->GetQuicVersion());
967 EXPECT_EQ(100000u, session->connection()->GetStats().srtt_us);
968 ASSERT_FALSE(session->config()->HasInitialRoundTripTimeUsToSend());
969 }
970
971 TEST_P(QuicStreamFactoryTest, DefaultInitialRtt) {
972 Initialize();
973 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
974 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
975
976 MockQuicData socket_data;
977 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
978 socket_data.AddWrite(ConstructInitialSettingsPacket());
979 socket_data.AddSocketDataToFactory(&socket_factory_);
980
981 QuicStreamRequest request(factory_.get());
982 EXPECT_EQ(
983 ERR_IO_PENDING,
984 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
985 /*cert_verify_flags=*/0, url_, "GET", net_log_,
986 callback_.callback()));
987
988 EXPECT_THAT(callback_.WaitForResult(), IsOk());
989 std::unique_ptr<HttpStream> stream = request.CreateStream();
990 EXPECT_TRUE(stream.get());
991
992 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
866 EXPECT_EQ(100000u, session->connection()->GetStats().srtt_us); 993 EXPECT_EQ(100000u, session->connection()->GetStats().srtt_us);
867 ASSERT_FALSE(session->config()->HasInitialRoundTripTimeUsToSend()); 994 ASSERT_FALSE(session->config()->HasInitialRoundTripTimeUsToSend());
868 } 995 }
869 996
870 TEST_P(QuicStreamFactoryTest, CachedInitialRtt) { 997 TEST_P(QuicStreamFactoryTest, CachedInitialRtt) {
871 ServerNetworkStats stats; 998 ServerNetworkStats stats;
872 stats.srtt = base::TimeDelta::FromMilliseconds(10); 999 stats.srtt = base::TimeDelta::FromMilliseconds(10);
873 http_server_properties_.SetServerNetworkStats(url::SchemeHostPort(url_), 1000 http_server_properties_.SetServerNetworkStats(url::SchemeHostPort(url_),
874 stats); 1001 stats);
875 estimate_initial_rtt_ = true; 1002 estimate_initial_rtt_ = true;
876 1003
877 Initialize(); 1004 Initialize();
878 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1005 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
879 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1006 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
880 1007
881 MockQuicData socket_data; 1008 MockQuicData socket_data;
882 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1009 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
883 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1010 socket_data.AddWrite(ConstructInitialSettingsPacket());
884 socket_data.AddSocketDataToFactory(&socket_factory_); 1011 socket_data.AddSocketDataToFactory(&socket_factory_);
885 1012
886 QuicStreamRequest request(factory_.get()); 1013 QuicStreamRequest request(factory_.get());
887 EXPECT_EQ(ERR_IO_PENDING, 1014 EXPECT_EQ(
888 request.Request(host_port_pair_, privacy_mode_, 1015 ERR_IO_PENDING,
889 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1016 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
890 callback_.callback())); 1017 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1018 callback_.callback()));
891 1019
892 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1020 EXPECT_THAT(callback_.WaitForResult(), IsOk());
893 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1021 std::unique_ptr<HttpStream> stream = request.CreateStream();
894 EXPECT_TRUE(stream.get()); 1022 EXPECT_TRUE(stream.get());
895 1023
896 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 1024 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
897 EXPECT_EQ(10000u, session->connection()->GetStats().srtt_us); 1025 EXPECT_EQ(10000u, session->connection()->GetStats().srtt_us);
898 ASSERT_TRUE(session->config()->HasInitialRoundTripTimeUsToSend()); 1026 ASSERT_TRUE(session->config()->HasInitialRoundTripTimeUsToSend());
899 EXPECT_EQ(10000u, session->config()->GetInitialRoundTripTimeUsToSend()); 1027 EXPECT_EQ(10000u, session->config()->GetInitialRoundTripTimeUsToSend());
900 } 1028 }
901 1029
902 TEST_P(QuicStreamFactoryTest, 2gInitialRtt) { 1030 TEST_P(QuicStreamFactoryTest, 2gInitialRtt) {
903 ScopedMockNetworkChangeNotifier notifier; 1031 ScopedMockNetworkChangeNotifier notifier;
904 notifier.mock_network_change_notifier()->SetConnectionType( 1032 notifier.mock_network_change_notifier()->SetConnectionType(
905 NetworkChangeNotifier::CONNECTION_2G); 1033 NetworkChangeNotifier::CONNECTION_2G);
906 estimate_initial_rtt_ = true; 1034 estimate_initial_rtt_ = true;
907 1035
908 Initialize(); 1036 Initialize();
909 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1037 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
910 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1038 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
911 1039
912 MockQuicData socket_data; 1040 MockQuicData socket_data;
913 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1041 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
914 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1042 socket_data.AddWrite(ConstructInitialSettingsPacket());
915 socket_data.AddSocketDataToFactory(&socket_factory_); 1043 socket_data.AddSocketDataToFactory(&socket_factory_);
916 1044
917 QuicStreamRequest request(factory_.get()); 1045 QuicStreamRequest request(factory_.get());
918 EXPECT_EQ(ERR_IO_PENDING, 1046 EXPECT_EQ(
919 request.Request(host_port_pair_, privacy_mode_, 1047 ERR_IO_PENDING,
920 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1048 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
921 callback_.callback())); 1049 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1050 callback_.callback()));
922 1051
923 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1052 EXPECT_THAT(callback_.WaitForResult(), IsOk());
924 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1053 std::unique_ptr<HttpStream> stream = request.CreateStream();
925 EXPECT_TRUE(stream.get()); 1054 EXPECT_TRUE(stream.get());
926 1055
927 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 1056 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
928 EXPECT_EQ(1200000u, session->connection()->GetStats().srtt_us); 1057 EXPECT_EQ(1200000u, session->connection()->GetStats().srtt_us);
929 ASSERT_TRUE(session->config()->HasInitialRoundTripTimeUsToSend()); 1058 ASSERT_TRUE(session->config()->HasInitialRoundTripTimeUsToSend());
930 EXPECT_EQ(1200000u, session->config()->GetInitialRoundTripTimeUsToSend()); 1059 EXPECT_EQ(1200000u, session->config()->GetInitialRoundTripTimeUsToSend());
931 } 1060 }
932 1061
933 TEST_P(QuicStreamFactoryTest, 3gInitialRtt) { 1062 TEST_P(QuicStreamFactoryTest, 3gInitialRtt) {
934 ScopedMockNetworkChangeNotifier notifier; 1063 ScopedMockNetworkChangeNotifier notifier;
935 notifier.mock_network_change_notifier()->SetConnectionType( 1064 notifier.mock_network_change_notifier()->SetConnectionType(
936 NetworkChangeNotifier::CONNECTION_3G); 1065 NetworkChangeNotifier::CONNECTION_3G);
937 estimate_initial_rtt_ = true; 1066 estimate_initial_rtt_ = true;
938 1067
939 Initialize(); 1068 Initialize();
940 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1069 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
941 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1070 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
942 1071
943 MockQuicData socket_data; 1072 MockQuicData socket_data;
944 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1073 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
945 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1074 socket_data.AddWrite(ConstructInitialSettingsPacket());
946 socket_data.AddSocketDataToFactory(&socket_factory_); 1075 socket_data.AddSocketDataToFactory(&socket_factory_);
947 1076
948 QuicStreamRequest request(factory_.get()); 1077 QuicStreamRequest request(factory_.get());
949 EXPECT_EQ(ERR_IO_PENDING, 1078 EXPECT_EQ(
950 request.Request(host_port_pair_, privacy_mode_, 1079 ERR_IO_PENDING,
951 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1080 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
952 callback_.callback())); 1081 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1082 callback_.callback()));
953 1083
954 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1084 EXPECT_THAT(callback_.WaitForResult(), IsOk());
955 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1085 std::unique_ptr<HttpStream> stream = request.CreateStream();
956 EXPECT_TRUE(stream.get()); 1086 EXPECT_TRUE(stream.get());
957 1087
958 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 1088 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
959 EXPECT_EQ(400000u, session->connection()->GetStats().srtt_us); 1089 EXPECT_EQ(400000u, session->connection()->GetStats().srtt_us);
960 ASSERT_TRUE(session->config()->HasInitialRoundTripTimeUsToSend()); 1090 ASSERT_TRUE(session->config()->HasInitialRoundTripTimeUsToSend());
961 EXPECT_EQ(400000u, session->config()->GetInitialRoundTripTimeUsToSend()); 1091 EXPECT_EQ(400000u, session->config()->GetInitialRoundTripTimeUsToSend());
962 } 1092 }
963 1093
964 TEST_P(QuicStreamFactoryTest, GoAway) { 1094 TEST_P(QuicStreamFactoryTest, GoAway) {
965 Initialize(); 1095 Initialize();
966 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1096 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
967 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1097 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
968 1098
969 MockQuicData socket_data; 1099 MockQuicData socket_data;
970 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1100 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
971 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1101 socket_data.AddWrite(ConstructInitialSettingsPacket());
972 socket_data.AddSocketDataToFactory(&socket_factory_); 1102 socket_data.AddSocketDataToFactory(&socket_factory_);
973 1103
974 QuicStreamRequest request(factory_.get()); 1104 QuicStreamRequest request(factory_.get());
975 EXPECT_EQ(ERR_IO_PENDING, 1105 EXPECT_EQ(
976 request.Request(host_port_pair_, privacy_mode_, 1106 ERR_IO_PENDING,
977 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1107 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
978 callback_.callback())); 1108 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1109 callback_.callback()));
979 1110
980 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1111 EXPECT_THAT(callback_.WaitForResult(), IsOk());
981 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1112 std::unique_ptr<HttpStream> stream = request.CreateStream();
982 EXPECT_TRUE(stream.get()); 1113 EXPECT_TRUE(stream.get());
983 1114
984 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 1115 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
985 1116
986 session->OnGoAway(QuicGoAwayFrame()); 1117 session->OnGoAway(QuicGoAwayFrame());
987 1118
988 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1119 EXPECT_FALSE(HasActiveSession(host_port_pair_));
989 1120
990 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1121 EXPECT_TRUE(socket_data.AllReadDataConsumed());
991 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1122 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
992 } 1123 }
993 1124
994 TEST_P(QuicStreamFactoryTest, GoAwayForConnectionMigrationWithPortOnly) { 1125 TEST_P(QuicStreamFactoryTest, GoAwayForConnectionMigrationWithPortOnly) {
995 Initialize(); 1126 Initialize();
996 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1127 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
997 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1128 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
998 1129
999 MockQuicData socket_data; 1130 MockQuicData socket_data;
1000 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1131 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1001 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1132 socket_data.AddWrite(ConstructInitialSettingsPacket());
1002 socket_data.AddSocketDataToFactory(&socket_factory_); 1133 socket_data.AddSocketDataToFactory(&socket_factory_);
1003 1134
1004 QuicStreamRequest request(factory_.get()); 1135 QuicStreamRequest request(factory_.get());
1005 EXPECT_EQ(ERR_IO_PENDING, 1136 EXPECT_EQ(
1006 request.Request(host_port_pair_, privacy_mode_, 1137 ERR_IO_PENDING,
1007 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1138 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1008 callback_.callback())); 1139 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1140 callback_.callback()));
1009 1141
1010 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1142 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1011 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1143 std::unique_ptr<HttpStream> stream = request.CreateStream();
1012 EXPECT_TRUE(stream.get()); 1144 EXPECT_TRUE(stream.get());
1013 1145
1014 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 1146 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
1015 1147
1016 session->OnGoAway( 1148 session->OnGoAway(
1017 QuicGoAwayFrame(QUIC_ERROR_MIGRATING_PORT, 0, 1149 QuicGoAwayFrame(QUIC_ERROR_MIGRATING_PORT, 0,
1018 "peer connection migration due to port change only")); 1150 "peer connection migration due to port change only"));
(...skipping 21 matching lines...) Expand all
1040 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1172 socket_data.AddWrite(ConstructInitialSettingsPacket());
1041 socket_data.AddSocketDataToFactory(&socket_factory_); 1173 socket_data.AddSocketDataToFactory(&socket_factory_);
1042 1174
1043 HostPortPair server2(kServer2HostName, kDefaultServerPort); 1175 HostPortPair server2(kServer2HostName, kDefaultServerPort);
1044 host_resolver_.set_synchronous_mode(true); 1176 host_resolver_.set_synchronous_mode(true);
1045 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 1177 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
1046 "192.168.0.1", ""); 1178 "192.168.0.1", "");
1047 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1179 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
1048 1180
1049 QuicStreamRequest request(factory_.get()); 1181 QuicStreamRequest request(factory_.get());
1050 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 1182 EXPECT_EQ(
1051 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1183 OK, request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1052 callback_.callback())); 1184 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1185 callback_.callback()));
1053 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1186 std::unique_ptr<HttpStream> stream = request.CreateStream();
1054 EXPECT_TRUE(stream.get()); 1187 EXPECT_TRUE(stream.get());
1055 1188
1056 TestCompletionCallback callback; 1189 TestCompletionCallback callback;
1057 QuicStreamRequest request2(factory_.get()); 1190 QuicStreamRequest request2(factory_.get());
1058 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 1191 EXPECT_EQ(OK, request2.Request(server2, advertised_versions_, privacy_mode_,
1059 /*cert_verify_flags=*/0, url2_, "GET", 1192 /*cert_verify_flags=*/0, url2_, "GET",
1060 net_log_, callback.callback())); 1193 net_log_, callback.callback()));
1061 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1194 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1062 EXPECT_TRUE(stream2.get()); 1195 EXPECT_TRUE(stream2.get());
1063 1196
1064 EXPECT_EQ(GetActiveSession(host_port_pair_), GetActiveSession(server2)); 1197 EXPECT_EQ(GetActiveSession(host_port_pair_), GetActiveSession(server2));
1065 1198
1066 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1199 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1067 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1200 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1068 } 1201 }
(...skipping 29 matching lines...) Expand all
1098 1231
1099 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1232 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1100 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1233 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1101 QuicConfig config2; 1234 QuicConfig config2;
1102 crypto_client_stream_factory_.SetConfig(config2); 1235 crypto_client_stream_factory_.SetConfig(config2);
1103 1236
1104 // Create new request to cause new session creation. 1237 // Create new request to cause new session creation.
1105 TestCompletionCallback callback; 1238 TestCompletionCallback callback;
1106 QuicStreamRequest request2(factory_.get()); 1239 QuicStreamRequest request2(factory_.get());
1107 EXPECT_EQ(ERR_IO_PENDING, 1240 EXPECT_EQ(ERR_IO_PENDING,
1108 request2.Request(server2, privacy_mode_, 1241 request2.Request(server2, advertised_versions_, privacy_mode_,
1109 /*cert_verify_flags=*/0, url2_, "GET", net_log_, 1242 /*cert_verify_flags=*/0, url2_, "GET", net_log_,
1110 callback.callback())); 1243 callback.callback()));
1111 EXPECT_EQ(OK, callback.WaitForResult()); 1244 EXPECT_EQ(OK, callback.WaitForResult());
1112 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1245 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1113 EXPECT_TRUE(stream2.get()); 1246 EXPECT_TRUE(stream2.get());
1114 1247
1115 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1248 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1116 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1249 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1117 // EXPECT_EQ(GetActiveSession(host_port_pair_), GetActiveSession(server2)); 1250 // EXPECT_EQ(GetActiveSession(host_port_pair_), GetActiveSession(server2));
1118 } 1251 }
(...skipping 13 matching lines...) Expand all
1132 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 1265 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1133 socket_data2.AddSocketDataToFactory(&socket_factory_); 1266 socket_data2.AddSocketDataToFactory(&socket_factory_);
1134 1267
1135 HostPortPair server2(kServer2HostName, kDefaultServerPort); 1268 HostPortPair server2(kServer2HostName, kDefaultServerPort);
1136 host_resolver_.set_synchronous_mode(true); 1269 host_resolver_.set_synchronous_mode(true);
1137 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 1270 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
1138 "192.168.0.1", ""); 1271 "192.168.0.1", "");
1139 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1272 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
1140 1273
1141 QuicStreamRequest request(factory_.get()); 1274 QuicStreamRequest request(factory_.get());
1142 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 1275 EXPECT_EQ(
1143 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1276 OK, request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1144 callback_.callback())); 1277 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1278 callback_.callback()));
1145 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1279 std::unique_ptr<HttpStream> stream = request.CreateStream();
1146 EXPECT_TRUE(stream.get()); 1280 EXPECT_TRUE(stream.get());
1147 1281
1148 TestCompletionCallback callback; 1282 TestCompletionCallback callback;
1149 QuicStreamRequest request2(factory_.get()); 1283 QuicStreamRequest request2(factory_.get());
1150 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 1284 EXPECT_EQ(OK, request2.Request(server2, advertised_versions_, privacy_mode_,
1151 /*cert_verify_flags=*/0, url2_, "GET", 1285 /*cert_verify_flags=*/0, url2_, "GET",
1152 net_log_, callback.callback())); 1286 net_log_, callback.callback()));
1153 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1287 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1154 EXPECT_TRUE(stream2.get()); 1288 EXPECT_TRUE(stream2.get());
1155 1289
1156 factory_->OnSessionGoingAway(GetActiveSession(host_port_pair_)); 1290 factory_->OnSessionGoingAway(GetActiveSession(host_port_pair_));
1157 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1291 EXPECT_FALSE(HasActiveSession(host_port_pair_));
1158 EXPECT_FALSE(HasActiveSession(server2)); 1292 EXPECT_FALSE(HasActiveSession(server2));
1159 1293
1160 TestCompletionCallback callback3; 1294 TestCompletionCallback callback3;
1161 QuicStreamRequest request3(factory_.get()); 1295 QuicStreamRequest request3(factory_.get());
1162 EXPECT_EQ(OK, request3.Request(server2, privacy_mode_, 1296 EXPECT_EQ(OK, request3.Request(server2, advertised_versions_, privacy_mode_,
1163 /*cert_verify_flags=*/0, url2_, "GET", 1297 /*cert_verify_flags=*/0, url2_, "GET",
1164 net_log_, callback3.callback())); 1298 net_log_, callback3.callback()));
1165 std::unique_ptr<HttpStream> stream3 = request3.CreateStream(); 1299 std::unique_ptr<HttpStream> stream3 = request3.CreateStream();
1166 EXPECT_TRUE(stream3.get()); 1300 EXPECT_TRUE(stream3.get());
1167 1301
1168 EXPECT_TRUE(HasActiveSession(server2)); 1302 EXPECT_TRUE(HasActiveSession(server2));
1169 1303
1170 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 1304 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
1171 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 1305 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
1172 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1306 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
(...skipping 12 matching lines...) Expand all
1185 HostPortPair server2(kServer2HostName, 443); 1319 HostPortPair server2(kServer2HostName, 443);
1186 1320
1187 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1321 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1188 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1322 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1189 1323
1190 host_resolver_.set_synchronous_mode(true); 1324 host_resolver_.set_synchronous_mode(true);
1191 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 1325 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
1192 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1326 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
1193 1327
1194 QuicStreamRequest request(factory_.get()); 1328 QuicStreamRequest request(factory_.get());
1195 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 1329 EXPECT_EQ(OK, request.Request(server1, advertised_versions_, privacy_mode_,
1196 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1330 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1197 callback_.callback())); 1331 callback_.callback()));
1198 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1332 std::unique_ptr<HttpStream> stream = request.CreateStream();
1199 EXPECT_TRUE(stream.get()); 1333 EXPECT_TRUE(stream.get());
1200 1334
1201 TestCompletionCallback callback; 1335 TestCompletionCallback callback;
1202 QuicStreamRequest request2(factory_.get()); 1336 QuicStreamRequest request2(factory_.get());
1203 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 1337 EXPECT_EQ(OK, request2.Request(server2, advertised_versions_, privacy_mode_,
1204 /*cert_verify_flags=*/0, url2_, "GET", 1338 /*cert_verify_flags=*/0, url2_, "GET",
1205 net_log_, callback_.callback())); 1339 net_log_, callback_.callback()));
1206 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1340 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1207 EXPECT_TRUE(stream2.get()); 1341 EXPECT_TRUE(stream2.get());
1208 1342
1209 EXPECT_EQ(GetActiveSession(server1), GetActiveSession(server2)); 1343 EXPECT_EQ(GetActiveSession(server1), GetActiveSession(server2));
1210 1344
1211 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1345 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1212 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1346 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1213 } 1347 }
(...skipping 15 matching lines...) Expand all
1229 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1363 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1230 verify_details.cert_verify_result.public_key_hashes.push_back( 1364 verify_details.cert_verify_result.public_key_hashes.push_back(
1231 test::GetTestHashValue(primary_pin)); 1365 test::GetTestHashValue(primary_pin));
1232 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1366 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1233 1367
1234 host_resolver_.set_synchronous_mode(true); 1368 host_resolver_.set_synchronous_mode(true);
1235 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 1369 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
1236 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1370 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
1237 1371
1238 QuicStreamRequest request(factory_.get()); 1372 QuicStreamRequest request(factory_.get());
1239 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 1373 EXPECT_EQ(OK, request.Request(server1, advertised_versions_, privacy_mode_,
1240 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1374 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1241 callback_.callback())); 1375 callback_.callback()));
1242 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1376 std::unique_ptr<HttpStream> stream = request.CreateStream();
1243 EXPECT_TRUE(stream.get()); 1377 EXPECT_TRUE(stream.get());
1244 1378
1245 TestCompletionCallback callback; 1379 TestCompletionCallback callback;
1246 QuicStreamRequest request2(factory_.get()); 1380 QuicStreamRequest request2(factory_.get());
1247 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 1381 EXPECT_EQ(OK, request2.Request(server2, advertised_versions_, privacy_mode_,
1248 /*cert_verify_flags=*/0, url2_, "GET", 1382 /*cert_verify_flags=*/0, url2_, "GET",
1249 net_log_, callback_.callback())); 1383 net_log_, callback_.callback()));
1250 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1384 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1251 EXPECT_TRUE(stream2.get()); 1385 EXPECT_TRUE(stream2.get());
1252 1386
1253 EXPECT_EQ(GetActiveSession(server1), GetActiveSession(server2)); 1387 EXPECT_EQ(GetActiveSession(server1), GetActiveSession(server2));
1254 1388
1255 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1389 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1256 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1390 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1257 } 1391 }
(...skipping 26 matching lines...) Expand all
1284 ProofVerifyDetailsChromium verify_details2 = DefaultProofVerifyDetails(); 1418 ProofVerifyDetailsChromium verify_details2 = DefaultProofVerifyDetails();
1285 verify_details2.cert_verify_result.public_key_hashes.push_back( 1419 verify_details2.cert_verify_result.public_key_hashes.push_back(
1286 test::GetTestHashValue(primary_pin)); 1420 test::GetTestHashValue(primary_pin));
1287 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2); 1421 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2);
1288 1422
1289 host_resolver_.set_synchronous_mode(true); 1423 host_resolver_.set_synchronous_mode(true);
1290 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 1424 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
1291 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1425 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
1292 1426
1293 QuicStreamRequest request(factory_.get()); 1427 QuicStreamRequest request(factory_.get());
1294 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 1428 EXPECT_EQ(OK, request.Request(server1, advertised_versions_, privacy_mode_,
1295 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1429 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1296 callback_.callback())); 1430 callback_.callback()));
1297 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1431 std::unique_ptr<HttpStream> stream = request.CreateStream();
1298 EXPECT_TRUE(stream.get()); 1432 EXPECT_TRUE(stream.get());
1299 1433
1300 TestCompletionCallback callback; 1434 TestCompletionCallback callback;
1301 QuicStreamRequest request2(factory_.get()); 1435 QuicStreamRequest request2(factory_.get());
1302 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 1436 EXPECT_EQ(OK, request2.Request(server2, advertised_versions_, privacy_mode_,
1303 /*cert_verify_flags=*/0, url2_, "GET", 1437 /*cert_verify_flags=*/0, url2_, "GET",
1304 net_log_, callback_.callback())); 1438 net_log_, callback_.callback()));
1305 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1439 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1306 EXPECT_TRUE(stream2.get()); 1440 EXPECT_TRUE(stream2.get());
1307 1441
1308 EXPECT_NE(GetActiveSession(server1), GetActiveSession(server2)); 1442 EXPECT_NE(GetActiveSession(server1), GetActiveSession(server2));
1309 1443
1310 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 1444 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
1311 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 1445 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
1312 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1446 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1313 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1447 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1314 } 1448 }
1315 1449
1316 TEST_P(QuicStreamFactoryTest, Goaway) { 1450 TEST_P(QuicStreamFactoryTest, Goaway) {
1317 Initialize(); 1451 Initialize();
1318 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1452 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1319 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1453 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1320 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1454 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1321 1455
1322 MockQuicData socket_data; 1456 MockQuicData socket_data;
1323 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1457 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1324 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1458 socket_data.AddWrite(ConstructInitialSettingsPacket());
1325 socket_data.AddSocketDataToFactory(&socket_factory_); 1459 socket_data.AddSocketDataToFactory(&socket_factory_);
1326 MockQuicData socket_data2; 1460 MockQuicData socket_data2;
1327 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1461 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1328 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 1462 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1329 socket_data2.AddSocketDataToFactory(&socket_factory_); 1463 socket_data2.AddSocketDataToFactory(&socket_factory_);
1330 1464
1331 QuicStreamRequest request(factory_.get()); 1465 QuicStreamRequest request(factory_.get());
1332 EXPECT_EQ(ERR_IO_PENDING, 1466 EXPECT_EQ(
1333 request.Request(host_port_pair_, privacy_mode_, 1467 ERR_IO_PENDING,
1334 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1468 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1335 callback_.callback())); 1469 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1470 callback_.callback()));
1336 1471
1337 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1472 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1338 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1473 std::unique_ptr<HttpStream> stream = request.CreateStream();
1339 EXPECT_TRUE(stream.get()); 1474 EXPECT_TRUE(stream.get());
1340 1475
1341 // Mark the session as going away. Ensure that while it is still alive 1476 // Mark the session as going away. Ensure that while it is still alive
1342 // that it is no longer active. 1477 // that it is no longer active.
1343 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 1478 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
1344 factory_->OnSessionGoingAway(session); 1479 factory_->OnSessionGoingAway(session);
1345 EXPECT_EQ(true, 1480 EXPECT_EQ(true,
1346 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1481 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
1347 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1482 EXPECT_FALSE(HasActiveSession(host_port_pair_));
1348 1483
1349 // Create a new request for the same destination and verify that a 1484 // Create a new request for the same destination and verify that a
1350 // new session is created. 1485 // new session is created.
1351 QuicStreamRequest request2(factory_.get()); 1486 QuicStreamRequest request2(factory_.get());
1352 EXPECT_EQ(ERR_IO_PENDING, 1487 EXPECT_EQ(
1353 request2.Request(host_port_pair_, privacy_mode_, 1488 ERR_IO_PENDING,
1354 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1489 request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1355 callback_.callback())); 1490 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1491 callback_.callback()));
1356 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1492 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1357 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1493 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1358 EXPECT_TRUE(stream2.get()); 1494 EXPECT_TRUE(stream2.get());
1359 1495
1360 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 1496 EXPECT_TRUE(HasActiveSession(host_port_pair_));
1361 EXPECT_NE(session, GetActiveSession(host_port_pair_)); 1497 EXPECT_NE(session, GetActiveSession(host_port_pair_));
1362 EXPECT_EQ(true, 1498 EXPECT_EQ(true,
1363 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1499 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
1364 1500
1365 stream2.reset(); 1501 stream2.reset();
(...skipping 19 matching lines...) Expand all
1385 server_maker_.MakeRstPacket(1, false, stream_id, QUIC_STREAM_CANCELLED)); 1521 server_maker_.MakeRstPacket(1, false, stream_id, QUIC_STREAM_CANCELLED));
1386 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1522 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1387 socket_data.AddSocketDataToFactory(&socket_factory_); 1523 socket_data.AddSocketDataToFactory(&socket_factory_);
1388 1524
1389 HttpRequestInfo request_info; 1525 HttpRequestInfo request_info;
1390 std::vector<std::unique_ptr<HttpStream>> streams; 1526 std::vector<std::unique_ptr<HttpStream>> streams;
1391 // The MockCryptoClientStream sets max_open_streams to be 1527 // The MockCryptoClientStream sets max_open_streams to be
1392 // kDefaultMaxStreamsPerConnection / 2. 1528 // kDefaultMaxStreamsPerConnection / 2.
1393 for (size_t i = 0; i < kDefaultMaxStreamsPerConnection / 2; i++) { 1529 for (size_t i = 0; i < kDefaultMaxStreamsPerConnection / 2; i++) {
1394 QuicStreamRequest request(factory_.get()); 1530 QuicStreamRequest request(factory_.get());
1395 int rv = request.Request(host_port_pair_, privacy_mode_, 1531 int rv = request.Request(
1396 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1532 host_port_pair_, advertised_versions_, privacy_mode_,
1397 callback_.callback()); 1533 /*cert_verify_flags=*/0, url_, "GET", net_log_, callback_.callback());
1398 if (i == 0) { 1534 if (i == 0) {
1399 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 1535 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1400 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1536 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1401 } else { 1537 } else {
1402 EXPECT_THAT(rv, IsOk()); 1538 EXPECT_THAT(rv, IsOk());
1403 } 1539 }
1404 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1540 std::unique_ptr<HttpStream> stream = request.CreateStream();
1405 EXPECT_TRUE(stream); 1541 EXPECT_TRUE(stream);
1406 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1542 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1407 net_log_, CompletionCallback())); 1543 net_log_, CompletionCallback()));
1408 streams.push_back(std::move(stream)); 1544 streams.push_back(std::move(stream));
1409 } 1545 }
1410 1546
1411 QuicStreamRequest request(factory_.get()); 1547 QuicStreamRequest request(factory_.get());
1412 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 1548 EXPECT_EQ(
1413 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1549 OK, request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1414 CompletionCallback())); 1550 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1551 CompletionCallback()));
1415 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1552 std::unique_ptr<HttpStream> stream = request.CreateStream();
1416 EXPECT_TRUE(stream); 1553 EXPECT_TRUE(stream);
1417 EXPECT_EQ(ERR_IO_PENDING, 1554 EXPECT_EQ(ERR_IO_PENDING,
1418 stream->InitializeStream(&request_info, DEFAULT_PRIORITY, net_log_, 1555 stream->InitializeStream(&request_info, DEFAULT_PRIORITY, net_log_,
1419 callback_.callback())); 1556 callback_.callback()));
1420 1557
1421 // Close the first stream. 1558 // Close the first stream.
1422 streams.front()->Close(false); 1559 streams.front()->Close(false);
1423 // Trigger exchange of RSTs that in turn allow progress for the last 1560 // Trigger exchange of RSTs that in turn allow progress for the last
1424 // stream. 1561 // stream.
(...skipping 11 matching lines...) Expand all
1436 } 1573 }
1437 1574
1438 TEST_P(QuicStreamFactoryTest, ResolutionErrorInCreate) { 1575 TEST_P(QuicStreamFactoryTest, ResolutionErrorInCreate) {
1439 Initialize(); 1576 Initialize();
1440 MockQuicData socket_data; 1577 MockQuicData socket_data;
1441 socket_data.AddSocketDataToFactory(&socket_factory_); 1578 socket_data.AddSocketDataToFactory(&socket_factory_);
1442 1579
1443 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName); 1580 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName);
1444 1581
1445 QuicStreamRequest request(factory_.get()); 1582 QuicStreamRequest request(factory_.get());
1446 EXPECT_EQ(ERR_IO_PENDING, 1583 EXPECT_EQ(
1447 request.Request(host_port_pair_, privacy_mode_, 1584 ERR_IO_PENDING,
1448 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1585 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1449 callback_.callback())); 1586 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1587 callback_.callback()));
1450 1588
1451 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_NAME_NOT_RESOLVED)); 1589 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_NAME_NOT_RESOLVED));
1452 1590
1453 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1591 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1454 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1592 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1455 } 1593 }
1456 1594
1457 TEST_P(QuicStreamFactoryTest, ConnectErrorInCreate) { 1595 TEST_P(QuicStreamFactoryTest, ConnectErrorInCreate) {
1458 Initialize(); 1596 Initialize();
1459 1597
1460 MockQuicData socket_data; 1598 MockQuicData socket_data;
1461 socket_data.AddConnect(SYNCHRONOUS, ERR_ADDRESS_IN_USE); 1599 socket_data.AddConnect(SYNCHRONOUS, ERR_ADDRESS_IN_USE);
1462 socket_data.AddSocketDataToFactory(&socket_factory_); 1600 socket_data.AddSocketDataToFactory(&socket_factory_);
1463 1601
1464 QuicStreamRequest request(factory_.get()); 1602 QuicStreamRequest request(factory_.get());
1465 EXPECT_EQ(ERR_IO_PENDING, 1603 EXPECT_EQ(
1466 request.Request(host_port_pair_, privacy_mode_, 1604 ERR_IO_PENDING,
1467 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1605 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1468 callback_.callback())); 1606 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1607 callback_.callback()));
1469 1608
1470 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_ADDRESS_IN_USE)); 1609 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_ADDRESS_IN_USE));
1471 1610
1472 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1611 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1473 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1612 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1474 } 1613 }
1475 1614
1476 TEST_P(QuicStreamFactoryTest, CancelCreate) { 1615 TEST_P(QuicStreamFactoryTest, CancelCreate) {
1477 Initialize(); 1616 Initialize();
1478 MockQuicData socket_data; 1617 MockQuicData socket_data;
1479 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1618 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1480 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1619 socket_data.AddWrite(ConstructInitialSettingsPacket());
1481 socket_data.AddSocketDataToFactory(&socket_factory_); 1620 socket_data.AddSocketDataToFactory(&socket_factory_);
1482 { 1621 {
1483 QuicStreamRequest request(factory_.get()); 1622 QuicStreamRequest request(factory_.get());
1484 EXPECT_EQ(ERR_IO_PENDING, 1623 EXPECT_EQ(
1485 request.Request(host_port_pair_, privacy_mode_, 1624 ERR_IO_PENDING,
1486 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1625 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1487 callback_.callback())); 1626 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1627 callback_.callback()));
1488 } 1628 }
1489 1629
1490 base::RunLoop().RunUntilIdle(); 1630 base::RunLoop().RunUntilIdle();
1491 1631
1492 QuicStreamRequest request2(factory_.get()); 1632 QuicStreamRequest request2(factory_.get());
1493 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_, 1633 EXPECT_EQ(
1494 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1634 OK, request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1495 callback_.callback())); 1635 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1636 callback_.callback()));
1496 std::unique_ptr<HttpStream> stream = request2.CreateStream(); 1637 std::unique_ptr<HttpStream> stream = request2.CreateStream();
1497 1638
1498 EXPECT_TRUE(stream.get()); 1639 EXPECT_TRUE(stream.get());
1499 stream.reset(); 1640 stream.reset();
1500 1641
1501 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1642 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1502 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1643 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1503 } 1644 }
1504 1645
1505 TEST_P(QuicStreamFactoryTest, CloseAllSessions) { 1646 TEST_P(QuicStreamFactoryTest, CloseAllSessions) {
1506 Initialize(); 1647 Initialize();
1507 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1648 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1508 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1649 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1509 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1650 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1510 1651
1511 MockQuicData socket_data; 1652 MockQuicData socket_data;
1512 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1653 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1513 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1654 socket_data.AddWrite(ConstructInitialSettingsPacket());
1514 socket_data.AddWrite(ConstructClientRstPacket(2)); 1655 socket_data.AddWrite(ConstructClientRstPacket(2));
1515 socket_data.AddSocketDataToFactory(&socket_factory_); 1656 socket_data.AddSocketDataToFactory(&socket_factory_);
1516 1657
1517 MockQuicData socket_data2; 1658 MockQuicData socket_data2;
1518 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1659 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1519 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 1660 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1520 socket_data2.AddSocketDataToFactory(&socket_factory_); 1661 socket_data2.AddSocketDataToFactory(&socket_factory_);
1521 1662
1522 QuicStreamRequest request(factory_.get()); 1663 QuicStreamRequest request(factory_.get());
1523 EXPECT_EQ(ERR_IO_PENDING, 1664 EXPECT_EQ(
1524 request.Request(host_port_pair_, privacy_mode_, 1665 ERR_IO_PENDING,
1525 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1666 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1526 callback_.callback())); 1667 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1668 callback_.callback()));
1527 1669
1528 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1670 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1529 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1671 std::unique_ptr<HttpStream> stream = request.CreateStream();
1530 HttpRequestInfo request_info; 1672 HttpRequestInfo request_info;
1531 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1673 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1532 net_log_, CompletionCallback())); 1674 net_log_, CompletionCallback()));
1533 1675
1534 // Close the session and verify that stream saw the error. 1676 // Close the session and verify that stream saw the error.
1535 factory_->CloseAllSessions(ERR_INTERNET_DISCONNECTED, QUIC_INTERNAL_ERROR); 1677 factory_->CloseAllSessions(ERR_INTERNET_DISCONNECTED, QUIC_INTERNAL_ERROR);
1536 EXPECT_EQ(ERR_INTERNET_DISCONNECTED, 1678 EXPECT_EQ(ERR_INTERNET_DISCONNECTED,
1537 stream->ReadResponseHeaders(callback_.callback())); 1679 stream->ReadResponseHeaders(callback_.callback()));
1538 1680
1539 // Now attempting to request a stream to the same origin should create 1681 // Now attempting to request a stream to the same origin should create
1540 // a new session. 1682 // a new session.
1541 1683
1542 QuicStreamRequest request2(factory_.get()); 1684 QuicStreamRequest request2(factory_.get());
1543 EXPECT_EQ(ERR_IO_PENDING, 1685 EXPECT_EQ(
1544 request2.Request(host_port_pair_, privacy_mode_, 1686 ERR_IO_PENDING,
1545 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1687 request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1546 callback_.callback())); 1688 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1689 callback_.callback()));
1547 1690
1548 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1691 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1549 stream = request2.CreateStream(); 1692 stream = request2.CreateStream();
1550 stream.reset(); // Will reset stream 3. 1693 stream.reset(); // Will reset stream 3.
1551 1694
1552 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1695 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1553 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1696 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1554 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1697 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1555 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1698 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1556 } 1699 }
(...skipping 10 matching lines...) Expand all
1567 MockCryptoClientStream::USE_DEFAULT_CRYPTO_STREAM); 1710 MockCryptoClientStream::USE_DEFAULT_CRYPTO_STREAM);
1568 1711
1569 MockQuicData socket_data; 1712 MockQuicData socket_data;
1570 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1713 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1571 // Trigger PACKET_WRITE_ERROR when sending packets in crypto connect. 1714 // Trigger PACKET_WRITE_ERROR when sending packets in crypto connect.
1572 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE); 1715 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE);
1573 socket_data.AddSocketDataToFactory(&socket_factory_); 1716 socket_data.AddSocketDataToFactory(&socket_factory_);
1574 1717
1575 // Create request, should fail after the write of the CHLO fails. 1718 // Create request, should fail after the write of the CHLO fails.
1576 QuicStreamRequest request(factory_.get()); 1719 QuicStreamRequest request(factory_.get());
1577 EXPECT_EQ(ERR_IO_PENDING, 1720 EXPECT_EQ(
1578 request.Request(host_port_pair_, privacy_mode_, 1721 ERR_IO_PENDING,
1579 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1722 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1580 callback_.callback())); 1723 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1724 callback_.callback()));
1581 EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED, callback_.WaitForResult()); 1725 EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED, callback_.WaitForResult());
1582 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1726 EXPECT_FALSE(HasActiveSession(host_port_pair_));
1583 EXPECT_FALSE(HasActiveJob(host_port_pair_, privacy_mode_)); 1727 EXPECT_FALSE(HasActiveJob(host_port_pair_, privacy_mode_));
1584 1728
1585 // Verify new requests can be sent normally without hanging. 1729 // Verify new requests can be sent normally without hanging.
1586 crypto_client_stream_factory_.set_handshake_mode( 1730 crypto_client_stream_factory_.set_handshake_mode(
1587 MockCryptoClientStream::COLD_START); 1731 MockCryptoClientStream::COLD_START);
1588 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1732 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1589 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1733 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1590 MockQuicData socket_data2; 1734 MockQuicData socket_data2;
1591 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1735 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1592 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 1736 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1593 socket_data2.AddSocketDataToFactory(&socket_factory_); 1737 socket_data2.AddSocketDataToFactory(&socket_factory_);
1594 1738
1595 QuicStreamRequest request2(factory_.get()); 1739 QuicStreamRequest request2(factory_.get());
1596 EXPECT_EQ(ERR_IO_PENDING, 1740 EXPECT_EQ(
1597 request2.Request(host_port_pair_, privacy_mode_, 1741 ERR_IO_PENDING,
1598 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1742 request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1599 callback_.callback())); 1743 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1744 callback_.callback()));
1600 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1745 EXPECT_FALSE(HasActiveSession(host_port_pair_));
1601 EXPECT_TRUE(HasActiveJob(host_port_pair_, privacy_mode_)); 1746 EXPECT_TRUE(HasActiveJob(host_port_pair_, privacy_mode_));
1602 // Run the message loop to complete host resolution. 1747 // Run the message loop to complete host resolution.
1603 base::RunLoop().RunUntilIdle(); 1748 base::RunLoop().RunUntilIdle();
1604 1749
1605 // Complete handshake. QuicStreamFactory::Job should complete and succeed. 1750 // Complete handshake. QuicStreamFactory::Job should complete and succeed.
1606 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( 1751 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
1607 QuicSession::HANDSHAKE_CONFIRMED); 1752 QuicSession::HANDSHAKE_CONFIRMED);
1608 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1753 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1609 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 1754 EXPECT_TRUE(HasActiveSession(host_port_pair_));
(...skipping 19 matching lines...) Expand all
1629 "192.168.0.1", ""); 1774 "192.168.0.1", "");
1630 1775
1631 MockQuicData socket_data; 1776 MockQuicData socket_data;
1632 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1777 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1633 // Trigger PACKET_WRITE_ERROR when sending packets in crypto connect. 1778 // Trigger PACKET_WRITE_ERROR when sending packets in crypto connect.
1634 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE); 1779 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE);
1635 socket_data.AddSocketDataToFactory(&socket_factory_); 1780 socket_data.AddSocketDataToFactory(&socket_factory_);
1636 1781
1637 // Create request, should fail immediately. 1782 // Create request, should fail immediately.
1638 QuicStreamRequest request(factory_.get()); 1783 QuicStreamRequest request(factory_.get());
1639 EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED, 1784 EXPECT_EQ(
1640 request.Request(host_port_pair_, privacy_mode_, 1785 ERR_QUIC_HANDSHAKE_FAILED,
1641 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1786 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1642 callback_.callback())); 1787 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1788 callback_.callback()));
1643 // Check no active session, or active jobs left for this server. 1789 // Check no active session, or active jobs left for this server.
1644 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1790 EXPECT_FALSE(HasActiveSession(host_port_pair_));
1645 EXPECT_FALSE(HasActiveJob(host_port_pair_, privacy_mode_)); 1791 EXPECT_FALSE(HasActiveJob(host_port_pair_, privacy_mode_));
1646 1792
1647 // Verify new requests can be sent normally without hanging. 1793 // Verify new requests can be sent normally without hanging.
1648 crypto_client_stream_factory_.set_handshake_mode( 1794 crypto_client_stream_factory_.set_handshake_mode(
1649 MockCryptoClientStream::COLD_START); 1795 MockCryptoClientStream::COLD_START);
1650 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1796 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1651 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1797 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1652 MockQuicData socket_data2; 1798 MockQuicData socket_data2;
1653 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1799 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1654 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 1800 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1655 socket_data2.AddSocketDataToFactory(&socket_factory_); 1801 socket_data2.AddSocketDataToFactory(&socket_factory_);
1656 1802
1657 QuicStreamRequest request2(factory_.get()); 1803 QuicStreamRequest request2(factory_.get());
1658 EXPECT_EQ(ERR_IO_PENDING, 1804 EXPECT_EQ(
1659 request2.Request(host_port_pair_, privacy_mode_, 1805 ERR_IO_PENDING,
1660 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1806 request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1661 callback_.callback())); 1807 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1808 callback_.callback()));
1662 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1809 EXPECT_FALSE(HasActiveSession(host_port_pair_));
1663 EXPECT_TRUE(HasActiveJob(host_port_pair_, privacy_mode_)); 1810 EXPECT_TRUE(HasActiveJob(host_port_pair_, privacy_mode_));
1664 1811
1665 // Complete handshake. 1812 // Complete handshake.
1666 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( 1813 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
1667 QuicSession::HANDSHAKE_CONFIRMED); 1814 QuicSession::HANDSHAKE_CONFIRMED);
1668 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1815 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1669 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 1816 EXPECT_TRUE(HasActiveSession(host_port_pair_));
1670 EXPECT_FALSE(HasActiveJob(host_port_pair_, privacy_mode_)); 1817 EXPECT_FALSE(HasActiveJob(host_port_pair_, privacy_mode_));
1671 1818
(...skipping 19 matching lines...) Expand all
1691 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1838 socket_data.AddWrite(ConstructInitialSettingsPacket());
1692 socket_data.AddWrite(ConstructClientRstPacket(2)); 1839 socket_data.AddWrite(ConstructClientRstPacket(2));
1693 socket_data.AddSocketDataToFactory(&socket_factory_); 1840 socket_data.AddSocketDataToFactory(&socket_factory_);
1694 1841
1695 MockQuicData socket_data2; 1842 MockQuicData socket_data2;
1696 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1843 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1697 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 1844 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1698 socket_data2.AddSocketDataToFactory(&socket_factory_); 1845 socket_data2.AddSocketDataToFactory(&socket_factory_);
1699 1846
1700 QuicStreamRequest request(factory_.get()); 1847 QuicStreamRequest request(factory_.get());
1701 EXPECT_EQ(ERR_IO_PENDING, 1848 EXPECT_EQ(
1702 request.Request(host_port_pair_, privacy_mode_, 1849 ERR_IO_PENDING,
1703 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1850 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1704 callback_.callback())); 1851 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1852 callback_.callback()));
1705 1853
1706 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1854 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1707 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1855 std::unique_ptr<HttpStream> stream = request.CreateStream();
1708 HttpRequestInfo request_info; 1856 HttpRequestInfo request_info;
1709 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1857 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1710 net_log_, CompletionCallback())); 1858 net_log_, CompletionCallback()));
1711 1859
1712 // Change the IP address and verify that stream saw the error. 1860 // Change the IP address and verify that stream saw the error.
1713 NotifyIPAddressChanged(); 1861 NotifyIPAddressChanged();
1714 EXPECT_EQ(ERR_NETWORK_CHANGED, 1862 EXPECT_EQ(ERR_NETWORK_CHANGED,
1715 stream->ReadResponseHeaders(callback_.callback())); 1863 stream->ReadResponseHeaders(callback_.callback()));
1716 EXPECT_TRUE(factory_->require_confirmation()); 1864 EXPECT_TRUE(factory_->require_confirmation());
1717 1865
1718 // Now attempting to request a stream to the same origin should create 1866 // Now attempting to request a stream to the same origin should create
1719 // a new session. 1867 // a new session.
1720 1868
1721 QuicStreamRequest request2(factory_.get()); 1869 QuicStreamRequest request2(factory_.get());
1722 EXPECT_EQ(ERR_IO_PENDING, 1870 EXPECT_EQ(
1723 request2.Request(host_port_pair_, privacy_mode_, 1871 ERR_IO_PENDING,
1724 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1872 request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1725 callback_.callback())); 1873 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1874 callback_.callback()));
1726 1875
1727 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1876 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1728 stream = request2.CreateStream(); 1877 stream = request2.CreateStream();
1729 stream.reset(); // Will reset stream 3. 1878 stream.reset(); // Will reset stream 3.
1730 1879
1731 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1880 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1732 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1881 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1733 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1882 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1734 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1883 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1735 } 1884 }
(...skipping 23 matching lines...) Expand all
1759 packet_number++, GetNthClientInitiatedStreamId(0), true, true, 1908 packet_number++, GetNthClientInitiatedStreamId(0), true, true,
1760 &header_stream_offset)); 1909 &header_stream_offset));
1761 if (async_write_before) { 1910 if (async_write_before) {
1762 socket_data.AddWrite(ASYNC, OK); 1911 socket_data.AddWrite(ASYNC, OK);
1763 packet_number++; 1912 packet_number++;
1764 } 1913 }
1765 socket_data.AddSocketDataToFactory(&socket_factory_); 1914 socket_data.AddSocketDataToFactory(&socket_factory_);
1766 1915
1767 // Create request and QuicHttpStream. 1916 // Create request and QuicHttpStream.
1768 QuicStreamRequest request(factory_.get()); 1917 QuicStreamRequest request(factory_.get());
1769 EXPECT_EQ(ERR_IO_PENDING, 1918 EXPECT_EQ(
1770 request.Request(host_port_pair_, privacy_mode_, 1919 ERR_IO_PENDING,
1771 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1920 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1772 callback_.callback())); 1921 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1922 callback_.callback()));
1773 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1923 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1774 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1924 std::unique_ptr<HttpStream> stream = request.CreateStream();
1775 EXPECT_TRUE(stream.get()); 1925 EXPECT_TRUE(stream.get());
1776 1926
1777 // Cause QUIC stream to be created. 1927 // Cause QUIC stream to be created.
1778 HttpRequestInfo request_info; 1928 HttpRequestInfo request_info;
1779 request_info.method = "GET"; 1929 request_info.method = "GET";
1780 request_info.url = url_; 1930 request_info.url = url_;
1781 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1931 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1782 net_log_, CompletionCallback())); 1932 net_log_, CompletionCallback()));
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1826 EXPECT_EQ(200, response.headers->response_code()); 1976 EXPECT_EQ(200, response.headers->response_code());
1827 1977
1828 // Create a new request for the same destination and verify that a 1978 // Create a new request for the same destination and verify that a
1829 // new session is created. 1979 // new session is created.
1830 MockQuicData socket_data2; 1980 MockQuicData socket_data2;
1831 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1981 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1832 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 1982 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1833 socket_data2.AddSocketDataToFactory(&socket_factory_); 1983 socket_data2.AddSocketDataToFactory(&socket_factory_);
1834 1984
1835 QuicStreamRequest request2(factory_.get()); 1985 QuicStreamRequest request2(factory_.get());
1836 EXPECT_EQ(ERR_IO_PENDING, 1986 EXPECT_EQ(
1837 request2.Request(host_port_pair_, privacy_mode_, 1987 ERR_IO_PENDING,
1838 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1988 request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1839 callback_.callback())); 1989 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1990 callback_.callback()));
1840 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1991 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1841 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1992 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1842 EXPECT_TRUE(stream2.get()); 1993 EXPECT_TRUE(stream2.get());
1843 1994
1844 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 1995 EXPECT_TRUE(HasActiveSession(host_port_pair_));
1845 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); 1996 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_);
1846 EXPECT_NE(session, new_session); 1997 EXPECT_NE(session, new_session);
1847 1998
1848 // On a DISCONNECTED notification, nothing happens to the migrated 1999 // On a DISCONNECTED notification, nothing happens to the migrated
1849 // session, but the new session is closed since it has no open 2000 // session, but the new session is closed since it has no open
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1889 packet_number++, GetNthClientInitiatedStreamId(0), true, true, 2040 packet_number++, GetNthClientInitiatedStreamId(0), true, true,
1890 &header_stream_offset)); 2041 &header_stream_offset));
1891 if (async_write_before) { 2042 if (async_write_before) {
1892 socket_data.AddWrite(ASYNC, OK); 2043 socket_data.AddWrite(ASYNC, OK);
1893 packet_number++; 2044 packet_number++;
1894 } 2045 }
1895 socket_data.AddSocketDataToFactory(&socket_factory_); 2046 socket_data.AddSocketDataToFactory(&socket_factory_);
1896 2047
1897 // Create request and QuicHttpStream. 2048 // Create request and QuicHttpStream.
1898 QuicStreamRequest request(factory_.get()); 2049 QuicStreamRequest request(factory_.get());
1899 EXPECT_EQ(ERR_IO_PENDING, 2050 EXPECT_EQ(
1900 request.Request(host_port_pair_, privacy_mode_, 2051 ERR_IO_PENDING,
1901 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2052 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1902 callback_.callback())); 2053 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2054 callback_.callback()));
1903 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2055 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1904 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2056 std::unique_ptr<HttpStream> stream = request.CreateStream();
1905 EXPECT_TRUE(stream.get()); 2057 EXPECT_TRUE(stream.get());
1906 2058
1907 // Cause QUIC stream to be created. 2059 // Cause QUIC stream to be created.
1908 HttpRequestInfo request_info; 2060 HttpRequestInfo request_info;
1909 request_info.method = "GET"; 2061 request_info.method = "GET";
1910 request_info.url = url_; 2062 request_info.url = url_;
1911 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2063 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1912 net_log_, CompletionCallback())); 2064 net_log_, CompletionCallback()));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1951 EXPECT_EQ(1u, session->GetNumActiveStreams()); 2103 EXPECT_EQ(1u, session->GetNumActiveStreams());
1952 2104
1953 // Create a new request for the same destination and verify that a 2105 // Create a new request for the same destination and verify that a
1954 // new session is created. 2106 // new session is created.
1955 MockQuicData socket_data2; 2107 MockQuicData socket_data2;
1956 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2108 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1957 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 2109 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1958 socket_data2.AddSocketDataToFactory(&socket_factory_); 2110 socket_data2.AddSocketDataToFactory(&socket_factory_);
1959 2111
1960 QuicStreamRequest request2(factory_.get()); 2112 QuicStreamRequest request2(factory_.get());
1961 EXPECT_EQ(ERR_IO_PENDING, 2113 EXPECT_EQ(
1962 request2.Request(host_port_pair_, privacy_mode_, 2114 ERR_IO_PENDING,
1963 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2115 request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
1964 callback_.callback())); 2116 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2117 callback_.callback()));
1965 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2118 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1966 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 2119 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1967 EXPECT_TRUE(stream2.get()); 2120 EXPECT_TRUE(stream2.get());
1968 2121
1969 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 2122 EXPECT_TRUE(HasActiveSession(host_port_pair_));
1970 EXPECT_NE(session, GetActiveSession(host_port_pair_)); 2123 EXPECT_NE(session, GetActiveSession(host_port_pair_));
1971 EXPECT_EQ(true, 2124 EXPECT_EQ(true,
1972 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 2125 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
1973 2126
1974 stream.reset(); 2127 stream.reset();
(...skipping 24 matching lines...) Expand all
1999 // Use the test task runner, to force the migration alarm timeout later. 2152 // Use the test task runner, to force the migration alarm timeout later.
2000 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get()); 2153 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get());
2001 2154
2002 MockQuicData socket_data; 2155 MockQuicData socket_data;
2003 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2156 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2004 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2157 socket_data.AddWrite(ConstructInitialSettingsPacket());
2005 socket_data.AddSocketDataToFactory(&socket_factory_); 2158 socket_data.AddSocketDataToFactory(&socket_factory_);
2006 2159
2007 // Create request and QuicHttpStream. 2160 // Create request and QuicHttpStream.
2008 QuicStreamRequest request(factory_.get()); 2161 QuicStreamRequest request(factory_.get());
2009 EXPECT_EQ(ERR_IO_PENDING, 2162 EXPECT_EQ(
2010 request.Request(host_port_pair_, privacy_mode_, 2163 ERR_IO_PENDING,
2011 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2164 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2012 callback_.callback())); 2165 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2166 callback_.callback()));
2013 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2167 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2014 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2168 std::unique_ptr<HttpStream> stream = request.CreateStream();
2015 EXPECT_TRUE(stream.get()); 2169 EXPECT_TRUE(stream.get());
2016 2170
2017 // Cause QUIC stream to be created. 2171 // Cause QUIC stream to be created.
2018 HttpRequestInfo request_info; 2172 HttpRequestInfo request_info;
2019 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2173 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2020 net_log_, CompletionCallback())); 2174 net_log_, CompletionCallback()));
2021 2175
2022 // Ensure that session is alive and active. 2176 // Ensure that session is alive and active.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2057 2211
2058 MockQuicData socket_data; 2212 MockQuicData socket_data;
2059 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2213 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2060 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2214 socket_data.AddWrite(ConstructInitialSettingsPacket());
2061 socket_data.AddWrite(client_maker_.MakeRstPacket( 2215 socket_data.AddWrite(client_maker_.MakeRstPacket(
2062 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 2216 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
2063 socket_data.AddSocketDataToFactory(&socket_factory_); 2217 socket_data.AddSocketDataToFactory(&socket_factory_);
2064 2218
2065 // Create request and QuicHttpStream. 2219 // Create request and QuicHttpStream.
2066 QuicStreamRequest request(factory_.get()); 2220 QuicStreamRequest request(factory_.get());
2067 EXPECT_EQ(ERR_IO_PENDING, 2221 EXPECT_EQ(
2068 request.Request(host_port_pair_, privacy_mode_, 2222 ERR_IO_PENDING,
2069 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2223 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2070 callback_.callback())); 2224 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2225 callback_.callback()));
2071 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2226 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2072 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2227 std::unique_ptr<HttpStream> stream = request.CreateStream();
2073 EXPECT_TRUE(stream.get()); 2228 EXPECT_TRUE(stream.get());
2074 2229
2075 // Cause QUIC stream to be created, but marked as non-migratable. 2230 // Cause QUIC stream to be created, but marked as non-migratable.
2076 HttpRequestInfo request_info; 2231 HttpRequestInfo request_info;
2077 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; 2232 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION;
2078 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2233 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2079 net_log_, CompletionCallback())); 2234 net_log_, CompletionCallback()));
2080 2235
(...skipping 25 matching lines...) Expand all
2106 2261
2107 MockQuicData socket_data; 2262 MockQuicData socket_data;
2108 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2263 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2109 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2264 socket_data.AddWrite(ConstructInitialSettingsPacket());
2110 socket_data.AddWrite(client_maker_.MakeRstPacket( 2265 socket_data.AddWrite(client_maker_.MakeRstPacket(
2111 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 2266 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
2112 socket_data.AddSocketDataToFactory(&socket_factory_); 2267 socket_data.AddSocketDataToFactory(&socket_factory_);
2113 2268
2114 // Create request and QuicHttpStream. 2269 // Create request and QuicHttpStream.
2115 QuicStreamRequest request(factory_.get()); 2270 QuicStreamRequest request(factory_.get());
2116 EXPECT_EQ(ERR_IO_PENDING, 2271 EXPECT_EQ(
2117 request.Request(host_port_pair_, privacy_mode_, 2272 ERR_IO_PENDING,
2118 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2273 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2119 callback_.callback())); 2274 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2275 callback_.callback()));
2120 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2276 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2121 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2277 std::unique_ptr<HttpStream> stream = request.CreateStream();
2122 EXPECT_TRUE(stream.get()); 2278 EXPECT_TRUE(stream.get());
2123 2279
2124 // Cause QUIC stream to be created. 2280 // Cause QUIC stream to be created.
2125 HttpRequestInfo request_info; 2281 HttpRequestInfo request_info;
2126 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2282 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2127 net_log_, CompletionCallback())); 2283 net_log_, CompletionCallback()));
2128 2284
2129 // Ensure that session is alive and active. 2285 // Ensure that session is alive and active.
(...skipping 28 matching lines...) Expand all
2158 2314
2159 MockQuicData socket_data; 2315 MockQuicData socket_data;
2160 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2316 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2161 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2317 socket_data.AddWrite(ConstructInitialSettingsPacket());
2162 socket_data.AddWrite(client_maker_.MakeRstPacket( 2318 socket_data.AddWrite(client_maker_.MakeRstPacket(
2163 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT)); 2319 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT));
2164 socket_data.AddSocketDataToFactory(&socket_factory_); 2320 socket_data.AddSocketDataToFactory(&socket_factory_);
2165 2321
2166 // Create request and QuicHttpStream. 2322 // Create request and QuicHttpStream.
2167 QuicStreamRequest request(factory_.get()); 2323 QuicStreamRequest request(factory_.get());
2168 EXPECT_EQ(ERR_IO_PENDING, 2324 EXPECT_EQ(
2169 request.Request(host_port_pair_, privacy_mode_, 2325 ERR_IO_PENDING,
2170 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2326 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2171 callback_.callback())); 2327 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2328 callback_.callback()));
2172 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2329 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2173 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2330 std::unique_ptr<HttpStream> stream = request.CreateStream();
2174 EXPECT_TRUE(stream.get()); 2331 EXPECT_TRUE(stream.get());
2175 2332
2176 // Cause QUIC stream to be created, but marked as non-migratable. 2333 // Cause QUIC stream to be created, but marked as non-migratable.
2177 HttpRequestInfo request_info; 2334 HttpRequestInfo request_info;
2178 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; 2335 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION;
2179 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2336 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2180 net_log_, CompletionCallback())); 2337 net_log_, CompletionCallback()));
2181 2338
(...skipping 24 matching lines...) Expand all
2206 2363
2207 MockQuicData socket_data; 2364 MockQuicData socket_data;
2208 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2365 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2209 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2366 socket_data.AddWrite(ConstructInitialSettingsPacket());
2210 socket_data.AddWrite(client_maker_.MakeRstPacket( 2367 socket_data.AddWrite(client_maker_.MakeRstPacket(
2211 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT)); 2368 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT));
2212 socket_data.AddSocketDataToFactory(&socket_factory_); 2369 socket_data.AddSocketDataToFactory(&socket_factory_);
2213 2370
2214 // Create request and QuicHttpStream. 2371 // Create request and QuicHttpStream.
2215 QuicStreamRequest request(factory_.get()); 2372 QuicStreamRequest request(factory_.get());
2216 EXPECT_EQ(ERR_IO_PENDING, 2373 EXPECT_EQ(
2217 request.Request(host_port_pair_, privacy_mode_, 2374 ERR_IO_PENDING,
2218 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2375 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2219 callback_.callback())); 2376 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2377 callback_.callback()));
2220 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2378 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2221 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2379 std::unique_ptr<HttpStream> stream = request.CreateStream();
2222 EXPECT_TRUE(stream.get()); 2380 EXPECT_TRUE(stream.get());
2223 2381
2224 // Cause QUIC stream to be created. 2382 // Cause QUIC stream to be created.
2225 HttpRequestInfo request_info; 2383 HttpRequestInfo request_info;
2226 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2384 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2227 net_log_, CompletionCallback())); 2385 net_log_, CompletionCallback()));
2228 2386
2229 // Ensure that session is alive and active. 2387 // Ensure that session is alive and active.
(...skipping 24 matching lines...) Expand all
2254 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2412 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2255 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2413 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2256 2414
2257 MockQuicData socket_data; 2415 MockQuicData socket_data;
2258 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2416 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2259 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2417 socket_data.AddWrite(ConstructInitialSettingsPacket());
2260 socket_data.AddSocketDataToFactory(&socket_factory_); 2418 socket_data.AddSocketDataToFactory(&socket_factory_);
2261 2419
2262 // Create request and QuicHttpStream. 2420 // Create request and QuicHttpStream.
2263 QuicStreamRequest request(factory_.get()); 2421 QuicStreamRequest request(factory_.get());
2264 EXPECT_EQ(ERR_IO_PENDING, 2422 EXPECT_EQ(
2265 request.Request(host_port_pair_, privacy_mode_, 2423 ERR_IO_PENDING,
2266 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2424 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2267 callback_.callback())); 2425 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2426 callback_.callback()));
2268 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2427 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2269 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2428 std::unique_ptr<HttpStream> stream = request.CreateStream();
2270 EXPECT_TRUE(stream.get()); 2429 EXPECT_TRUE(stream.get());
2271 2430
2272 // Ensure that session is alive and active. 2431 // Ensure that session is alive and active.
2273 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 2432 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
2274 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 2433 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
2275 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 2434 EXPECT_TRUE(HasActiveSession(host_port_pair_));
2276 2435
2277 // Trigger connection migration. Since there are no active streams, 2436 // Trigger connection migration. Since there are no active streams,
(...skipping 14 matching lines...) Expand all
2292 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2451 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2293 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2452 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2294 2453
2295 MockQuicData socket_data; 2454 MockQuicData socket_data;
2296 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2455 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2297 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2456 socket_data.AddWrite(ConstructInitialSettingsPacket());
2298 socket_data.AddSocketDataToFactory(&socket_factory_); 2457 socket_data.AddSocketDataToFactory(&socket_factory_);
2299 2458
2300 // Create request and QuicHttpStream. 2459 // Create request and QuicHttpStream.
2301 QuicStreamRequest request(factory_.get()); 2460 QuicStreamRequest request(factory_.get());
2302 EXPECT_EQ(ERR_IO_PENDING, 2461 EXPECT_EQ(
2303 request.Request(host_port_pair_, privacy_mode_, 2462 ERR_IO_PENDING,
2304 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2463 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2305 callback_.callback())); 2464 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2465 callback_.callback()));
2306 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2466 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2307 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2467 std::unique_ptr<HttpStream> stream = request.CreateStream();
2308 EXPECT_TRUE(stream.get()); 2468 EXPECT_TRUE(stream.get());
2309 2469
2310 // Ensure that session is alive and active. 2470 // Ensure that session is alive and active.
2311 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 2471 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
2312 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 2472 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
2313 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 2473 EXPECT_TRUE(HasActiveSession(host_port_pair_));
2314 2474
2315 // Trigger connection migration. Since there are no active streams, 2475 // Trigger connection migration. Since there are no active streams,
(...skipping 18 matching lines...) Expand all
2334 QuicStreamOffset header_stream_offset = 0; 2494 QuicStreamOffset header_stream_offset = 0;
2335 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2495 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2336 socket_data.AddWrite( 2496 socket_data.AddWrite(
2337 ConstructInitialSettingsPacket(1, &header_stream_offset)); 2497 ConstructInitialSettingsPacket(1, &header_stream_offset));
2338 socket_data.AddWrite(ConstructGetRequestPacket( 2498 socket_data.AddWrite(ConstructGetRequestPacket(
2339 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); 2499 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
2340 socket_data.AddSocketDataToFactory(&socket_factory_); 2500 socket_data.AddSocketDataToFactory(&socket_factory_);
2341 2501
2342 // Create request and QuicHttpStream. 2502 // Create request and QuicHttpStream.
2343 QuicStreamRequest request(factory_.get()); 2503 QuicStreamRequest request(factory_.get());
2344 EXPECT_EQ(ERR_IO_PENDING, 2504 EXPECT_EQ(
2345 request.Request(host_port_pair_, privacy_mode_, 2505 ERR_IO_PENDING,
2346 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2506 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2347 callback_.callback())); 2507 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2508 callback_.callback()));
2348 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2509 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2349 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2510 std::unique_ptr<HttpStream> stream = request.CreateStream();
2350 EXPECT_TRUE(stream.get()); 2511 EXPECT_TRUE(stream.get());
2351 2512
2352 // Cause QUIC stream to be created. 2513 // Cause QUIC stream to be created.
2353 HttpRequestInfo request_info; 2514 HttpRequestInfo request_info;
2354 request_info.method = "GET"; 2515 request_info.method = "GET";
2355 request_info.url = url_; 2516 request_info.url = url_;
2356 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2517 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2357 net_log_, CompletionCallback())); 2518 net_log_, CompletionCallback()));
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
2410 // Response headers are received over the new network. 2571 // Response headers are received over the new network.
2411 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2572 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2412 EXPECT_EQ(200, response.headers->response_code()); 2573 EXPECT_EQ(200, response.headers->response_code());
2413 2574
2414 // Create a new request and verify that a new session is created. 2575 // Create a new request and verify that a new session is created.
2415 MockQuicData socket_data2; 2576 MockQuicData socket_data2;
2416 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2577 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2417 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 2578 socket_data2.AddWrite(ConstructInitialSettingsPacket());
2418 socket_data2.AddSocketDataToFactory(&socket_factory_); 2579 socket_data2.AddSocketDataToFactory(&socket_factory_);
2419 QuicStreamRequest request2(factory_.get()); 2580 QuicStreamRequest request2(factory_.get());
2420 EXPECT_EQ(ERR_IO_PENDING, 2581 EXPECT_EQ(
2421 request2.Request(host_port_pair_, privacy_mode_, 2582 ERR_IO_PENDING,
2422 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2583 request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2423 callback_.callback())); 2584 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2585 callback_.callback()));
2424 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2586 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2425 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 2587 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
2426 EXPECT_TRUE(stream2.get()); 2588 EXPECT_TRUE(stream2.get());
2427 2589
2428 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 2590 EXPECT_TRUE(HasActiveSession(host_port_pair_));
2429 EXPECT_NE(session, GetActiveSession(host_port_pair_)); 2591 EXPECT_NE(session, GetActiveSession(host_port_pair_));
2430 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 2592 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
2431 2593
2432 stream.reset(); 2594 stream.reset();
2433 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2595 EXPECT_TRUE(socket_data.AllReadDataConsumed());
(...skipping 25 matching lines...) Expand all
2459 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2621 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2460 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2622 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2461 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2623 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2462 2624
2463 host_resolver_.set_synchronous_mode(true); 2625 host_resolver_.set_synchronous_mode(true);
2464 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 2626 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
2465 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.2", ""); 2627 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.2", "");
2466 2628
2467 // Create request and QuicHttpStream to create session1. 2629 // Create request and QuicHttpStream to create session1.
2468 QuicStreamRequest request1(factory_.get()); 2630 QuicStreamRequest request1(factory_.get());
2469 EXPECT_EQ(OK, request1.Request(server1, privacy_mode_, 2631 EXPECT_EQ(OK, request1.Request(server1, advertised_versions_, privacy_mode_,
2470 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2632 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2471 callback_.callback())); 2633 callback_.callback()));
2472 std::unique_ptr<HttpStream> stream1 = request1.CreateStream(); 2634 std::unique_ptr<HttpStream> stream1 = request1.CreateStream();
2473 EXPECT_TRUE(stream1.get()); 2635 EXPECT_TRUE(stream1.get());
2474 2636
2475 // Create request and QuicHttpStream to create session2. 2637 // Create request and QuicHttpStream to create session2.
2476 QuicStreamRequest request2(factory_.get()); 2638 QuicStreamRequest request2(factory_.get());
2477 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 2639 EXPECT_EQ(OK, request2.Request(server2, advertised_versions_, privacy_mode_,
2478 /*cert_verify_flags=*/0, url2_, "GET", 2640 /*cert_verify_flags=*/0, url2_, "GET",
2479 net_log_, callback_.callback())); 2641 net_log_, callback_.callback()));
2480 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 2642 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
2481 EXPECT_TRUE(stream2.get()); 2643 EXPECT_TRUE(stream2.get());
2482 2644
2483 QuicChromiumClientSession* session1 = GetActiveSession(server1); 2645 QuicChromiumClientSession* session1 = GetActiveSession(server1);
2484 QuicChromiumClientSession* session2 = GetActiveSession(server2); 2646 QuicChromiumClientSession* session2 = GetActiveSession(server2);
2485 EXPECT_NE(session1, session2); 2647 EXPECT_NE(session1, session2);
2486 2648
2487 // Cause QUIC stream to be created and send GET so session1 has an open 2649 // Cause QUIC stream to be created and send GET so session1 has an open
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
2551 QuicStreamOffset header_stream_offset = 0; 2713 QuicStreamOffset header_stream_offset = 0;
2552 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2714 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2553 socket_data.AddWrite( 2715 socket_data.AddWrite(
2554 ConstructInitialSettingsPacket(1, &header_stream_offset)); 2716 ConstructInitialSettingsPacket(1, &header_stream_offset));
2555 socket_data.AddWrite(ConstructGetRequestPacket( 2717 socket_data.AddWrite(ConstructGetRequestPacket(
2556 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); 2718 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
2557 socket_data.AddSocketDataToFactory(&socket_factory_); 2719 socket_data.AddSocketDataToFactory(&socket_factory_);
2558 2720
2559 // Create request and QuicHttpStream. 2721 // Create request and QuicHttpStream.
2560 QuicStreamRequest request(factory_.get()); 2722 QuicStreamRequest request(factory_.get());
2561 EXPECT_EQ(ERR_IO_PENDING, 2723 EXPECT_EQ(
2562 request.Request(host_port_pair_, privacy_mode_, 2724 ERR_IO_PENDING,
2563 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2725 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2564 callback_.callback())); 2726 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2727 callback_.callback()));
2565 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2728 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2566 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2729 std::unique_ptr<HttpStream> stream = request.CreateStream();
2567 EXPECT_TRUE(stream.get()); 2730 EXPECT_TRUE(stream.get());
2568 2731
2569 // Cause QUIC stream to be created. 2732 // Cause QUIC stream to be created.
2570 HttpRequestInfo request_info; 2733 HttpRequestInfo request_info;
2571 request_info.method = "GET"; 2734 request_info.method = "GET";
2572 request_info.url = url_; 2735 request_info.url = url_;
2573 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2736 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2574 net_log_, CompletionCallback())); 2737 net_log_, CompletionCallback()));
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
2615 EXPECT_EQ(200, response.headers->response_code()); 2778 EXPECT_EQ(200, response.headers->response_code());
2616 2779
2617 // Create a new request for the same destination and verify that a 2780 // Create a new request for the same destination and verify that a
2618 // new session is created. 2781 // new session is created.
2619 MockQuicData socket_data2; 2782 MockQuicData socket_data2;
2620 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2783 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2621 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 2784 socket_data2.AddWrite(ConstructInitialSettingsPacket());
2622 socket_data2.AddSocketDataToFactory(&socket_factory_); 2785 socket_data2.AddSocketDataToFactory(&socket_factory_);
2623 2786
2624 QuicStreamRequest request2(factory_.get()); 2787 QuicStreamRequest request2(factory_.get());
2625 EXPECT_EQ(ERR_IO_PENDING, 2788 EXPECT_EQ(
2626 request2.Request(host_port_pair_, privacy_mode_, 2789 ERR_IO_PENDING,
2627 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2790 request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2628 callback_.callback())); 2791 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2792 callback_.callback()));
2629 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2793 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2630 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 2794 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
2631 EXPECT_TRUE(stream2.get()); 2795 EXPECT_TRUE(stream2.get());
2632 2796
2633 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 2797 EXPECT_TRUE(HasActiveSession(host_port_pair_));
2634 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); 2798 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_);
2635 EXPECT_NE(session, new_session); 2799 EXPECT_NE(session, new_session);
2636 2800
2637 // On a NETWORK_MADE_DEFAULT notification, nothing happens to the 2801 // On a NETWORK_MADE_DEFAULT notification, nothing happens to the
2638 // migrated session, but the new session is closed since it has no 2802 // migrated session, but the new session is closed since it has no
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2676 QuicStreamOffset header_stream_offset = 0; 2840 QuicStreamOffset header_stream_offset = 0;
2677 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2841 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2678 socket_data.AddWrite( 2842 socket_data.AddWrite(
2679 ConstructInitialSettingsPacket(1, &header_stream_offset)); 2843 ConstructInitialSettingsPacket(1, &header_stream_offset));
2680 socket_data.AddWrite(ConstructGetRequestPacket( 2844 socket_data.AddWrite(ConstructGetRequestPacket(
2681 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); 2845 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
2682 socket_data.AddSocketDataToFactory(&socket_factory_); 2846 socket_data.AddSocketDataToFactory(&socket_factory_);
2683 2847
2684 // Create request and QuicHttpStream. 2848 // Create request and QuicHttpStream.
2685 QuicStreamRequest request(factory_.get()); 2849 QuicStreamRequest request(factory_.get());
2686 EXPECT_EQ(ERR_IO_PENDING, 2850 EXPECT_EQ(
2687 request.Request(host_port_pair_, privacy_mode_, 2851 ERR_IO_PENDING,
2688 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2852 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2689 callback_.callback())); 2853 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2854 callback_.callback()));
2690 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2855 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2691 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2856 std::unique_ptr<HttpStream> stream = request.CreateStream();
2692 EXPECT_TRUE(stream.get()); 2857 EXPECT_TRUE(stream.get());
2693 2858
2694 // Cause QUIC stream to be created. 2859 // Cause QUIC stream to be created.
2695 HttpRequestInfo request_info; 2860 HttpRequestInfo request_info;
2696 request_info.method = "GET"; 2861 request_info.method = "GET";
2697 request_info.url = url_; 2862 request_info.url = url_;
2698 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2863 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2699 net_log_, CompletionCallback())); 2864 net_log_, CompletionCallback()));
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2742 EXPECT_EQ(200, response.headers->response_code()); 2907 EXPECT_EQ(200, response.headers->response_code());
2743 2908
2744 // Create a new request for the same destination and verify that a 2909 // Create a new request for the same destination and verify that a
2745 // new session is created. 2910 // new session is created.
2746 MockQuicData socket_data2; 2911 MockQuicData socket_data2;
2747 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2912 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2748 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 2913 socket_data2.AddWrite(ConstructInitialSettingsPacket());
2749 socket_data2.AddSocketDataToFactory(&socket_factory_); 2914 socket_data2.AddSocketDataToFactory(&socket_factory_);
2750 2915
2751 QuicStreamRequest request2(factory_.get()); 2916 QuicStreamRequest request2(factory_.get());
2752 EXPECT_EQ(ERR_IO_PENDING, 2917 EXPECT_EQ(
2753 request2.Request(host_port_pair_, privacy_mode_, 2918 ERR_IO_PENDING,
2754 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2919 request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2755 callback_.callback())); 2920 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2921 callback_.callback()));
2756 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2922 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2757 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 2923 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
2758 EXPECT_TRUE(stream2.get()); 2924 EXPECT_TRUE(stream2.get());
2759 2925
2760 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 2926 EXPECT_TRUE(HasActiveSession(host_port_pair_));
2761 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); 2927 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_);
2762 EXPECT_NE(session, new_session); 2928 EXPECT_NE(session, new_session);
2763 2929
2764 // On a NETWORK_MADE_DEFAULT notification, nothing happens to the 2930 // On a NETWORK_MADE_DEFAULT notification, nothing happens to the
2765 // migrated session, but the new session is closed since it has no 2931 // migrated session, but the new session is closed since it has no
(...skipping 29 matching lines...) Expand all
2795 2961
2796 MockQuicData socket_data; 2962 MockQuicData socket_data;
2797 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2963 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2798 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2964 socket_data.AddWrite(ConstructInitialSettingsPacket());
2799 socket_data.AddWrite(client_maker_.MakeRstPacket( 2965 socket_data.AddWrite(client_maker_.MakeRstPacket(
2800 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 2966 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
2801 socket_data.AddSocketDataToFactory(&socket_factory_); 2967 socket_data.AddSocketDataToFactory(&socket_factory_);
2802 2968
2803 // Create request and QuicHttpStream. 2969 // Create request and QuicHttpStream.
2804 QuicStreamRequest request(factory_.get()); 2970 QuicStreamRequest request(factory_.get());
2805 EXPECT_EQ(ERR_IO_PENDING, 2971 EXPECT_EQ(
2806 request.Request(host_port_pair_, privacy_mode_, 2972 ERR_IO_PENDING,
2807 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2973 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2808 callback_.callback())); 2974 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2975 callback_.callback()));
2809 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2976 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2810 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2977 std::unique_ptr<HttpStream> stream = request.CreateStream();
2811 EXPECT_TRUE(stream.get()); 2978 EXPECT_TRUE(stream.get());
2812 2979
2813 // Cause QUIC stream to be created. 2980 // Cause QUIC stream to be created.
2814 HttpRequestInfo request_info; 2981 HttpRequestInfo request_info;
2815 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2982 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2816 net_log_, CompletionCallback())); 2983 net_log_, CompletionCallback()));
2817 2984
2818 // Ensure that session is alive and active. 2985 // Ensure that session is alive and active.
(...skipping 28 matching lines...) Expand all
2847 3014
2848 MockQuicData socket_data; 3015 MockQuicData socket_data;
2849 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3016 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2850 socket_data.AddWrite(ConstructInitialSettingsPacket()); 3017 socket_data.AddWrite(ConstructInitialSettingsPacket());
2851 socket_data.AddWrite(client_maker_.MakeRstPacket( 3018 socket_data.AddWrite(client_maker_.MakeRstPacket(
2852 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 3019 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
2853 socket_data.AddSocketDataToFactory(&socket_factory_); 3020 socket_data.AddSocketDataToFactory(&socket_factory_);
2854 3021
2855 // Create request and QuicHttpStream. 3022 // Create request and QuicHttpStream.
2856 QuicStreamRequest request(factory_.get()); 3023 QuicStreamRequest request(factory_.get());
2857 EXPECT_EQ(ERR_IO_PENDING, 3024 EXPECT_EQ(
2858 request.Request(host_port_pair_, privacy_mode_, 3025 ERR_IO_PENDING,
2859 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3026 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2860 callback_.callback())); 3027 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3028 callback_.callback()));
2861 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 3029 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2862 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3030 std::unique_ptr<HttpStream> stream = request.CreateStream();
2863 EXPECT_TRUE(stream.get()); 3031 EXPECT_TRUE(stream.get());
2864 3032
2865 // Cause QUIC stream to be created, but marked as non-migratable. 3033 // Cause QUIC stream to be created, but marked as non-migratable.
2866 HttpRequestInfo request_info; 3034 HttpRequestInfo request_info;
2867 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; 3035 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION;
2868 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3036 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2869 net_log_, CompletionCallback())); 3037 net_log_, CompletionCallback()));
2870 3038
(...skipping 28 matching lines...) Expand all
2899 3067
2900 MockQuicData socket_data; 3068 MockQuicData socket_data;
2901 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3069 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2902 socket_data.AddWrite(ConstructInitialSettingsPacket()); 3070 socket_data.AddWrite(ConstructInitialSettingsPacket());
2903 socket_data.AddWrite(client_maker_.MakeRstPacket( 3071 socket_data.AddWrite(client_maker_.MakeRstPacket(
2904 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 3072 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
2905 socket_data.AddSocketDataToFactory(&socket_factory_); 3073 socket_data.AddSocketDataToFactory(&socket_factory_);
2906 3074
2907 // Create request and QuicHttpStream. 3075 // Create request and QuicHttpStream.
2908 QuicStreamRequest request(factory_.get()); 3076 QuicStreamRequest request(factory_.get());
2909 EXPECT_EQ(ERR_IO_PENDING, 3077 EXPECT_EQ(
2910 request.Request(host_port_pair_, privacy_mode_, 3078 ERR_IO_PENDING,
2911 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3079 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2912 callback_.callback())); 3080 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3081 callback_.callback()));
2913 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 3082 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2914 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3083 std::unique_ptr<HttpStream> stream = request.CreateStream();
2915 EXPECT_TRUE(stream.get()); 3084 EXPECT_TRUE(stream.get());
2916 3085
2917 // Cause QUIC stream to be created. 3086 // Cause QUIC stream to be created.
2918 HttpRequestInfo request_info; 3087 HttpRequestInfo request_info;
2919 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3088 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2920 net_log_, CompletionCallback())); 3089 net_log_, CompletionCallback()));
2921 3090
2922 // Ensure that session is alive and active. 3091 // Ensure that session is alive and active.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2957 MockQuicData socket_data; 3126 MockQuicData socket_data;
2958 QuicStreamOffset header_stream_offset = 0; 3127 QuicStreamOffset header_stream_offset = 0;
2959 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3128 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2960 socket_data.AddWrite( 3129 socket_data.AddWrite(
2961 ConstructInitialSettingsPacket(1, &header_stream_offset)); 3130 ConstructInitialSettingsPacket(1, &header_stream_offset));
2962 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE); 3131 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE);
2963 socket_data.AddSocketDataToFactory(&socket_factory_); 3132 socket_data.AddSocketDataToFactory(&socket_factory_);
2964 3133
2965 // Create request and QuicHttpStream. 3134 // Create request and QuicHttpStream.
2966 QuicStreamRequest request(factory_.get()); 3135 QuicStreamRequest request(factory_.get());
2967 EXPECT_EQ(ERR_IO_PENDING, 3136 EXPECT_EQ(
2968 request.Request(host_port_pair_, privacy_mode_, 3137 ERR_IO_PENDING,
2969 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3138 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
2970 callback_.callback())); 3139 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3140 callback_.callback()));
2971 EXPECT_EQ(OK, callback_.WaitForResult()); 3141 EXPECT_EQ(OK, callback_.WaitForResult());
2972 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3142 std::unique_ptr<HttpStream> stream = request.CreateStream();
2973 EXPECT_TRUE(stream.get()); 3143 EXPECT_TRUE(stream.get());
2974 3144
2975 // Cause QUIC stream to be created. 3145 // Cause QUIC stream to be created.
2976 HttpRequestInfo request_info; 3146 HttpRequestInfo request_info;
2977 request_info.method = "GET"; 3147 request_info.method = "GET";
2978 request_info.url = GURL("https://www.example.org/"); 3148 request_info.url = GURL("https://www.example.org/");
2979 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3149 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2980 net_log_, CompletionCallback())); 3150 net_log_, CompletionCallback()));
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
3046 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get()); 3216 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get());
3047 3217
3048 MockQuicData socket_data; 3218 MockQuicData socket_data;
3049 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3219 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3050 socket_data.AddWrite(ConstructInitialSettingsPacket()); 3220 socket_data.AddWrite(ConstructInitialSettingsPacket());
3051 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE); 3221 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE);
3052 socket_data.AddSocketDataToFactory(&socket_factory_); 3222 socket_data.AddSocketDataToFactory(&socket_factory_);
3053 3223
3054 // Create request and QuicHttpStream. 3224 // Create request and QuicHttpStream.
3055 QuicStreamRequest request(factory_.get()); 3225 QuicStreamRequest request(factory_.get());
3056 EXPECT_EQ(ERR_IO_PENDING, 3226 EXPECT_EQ(
3057 request.Request(host_port_pair_, privacy_mode_, 3227 ERR_IO_PENDING,
3058 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3228 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
3059 callback_.callback())); 3229 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3230 callback_.callback()));
3060 EXPECT_EQ(OK, callback_.WaitForResult()); 3231 EXPECT_EQ(OK, callback_.WaitForResult());
3061 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3232 std::unique_ptr<HttpStream> stream = request.CreateStream();
3062 EXPECT_TRUE(stream.get()); 3233 EXPECT_TRUE(stream.get());
3063 3234
3064 // Cause QUIC stream to be created. 3235 // Cause QUIC stream to be created.
3065 HttpRequestInfo request_info; 3236 HttpRequestInfo request_info;
3066 request_info.method = "GET"; 3237 request_info.method = "GET";
3067 request_info.url = GURL("https://www.example.org/"); 3238 request_info.url = GURL("https://www.example.org/");
3068 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3239 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
3069 net_log_, CompletionCallback())); 3240 net_log_, CompletionCallback()));
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
3135 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 3306 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
3136 3307
3137 MockQuicData socket_data; 3308 MockQuicData socket_data;
3138 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3309 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3139 socket_data.AddWrite(ConstructInitialSettingsPacket()); 3310 socket_data.AddWrite(ConstructInitialSettingsPacket());
3140 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE); 3311 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE);
3141 socket_data.AddSocketDataToFactory(&socket_factory_); 3312 socket_data.AddSocketDataToFactory(&socket_factory_);
3142 3313
3143 // Create request and QuicHttpStream. 3314 // Create request and QuicHttpStream.
3144 QuicStreamRequest request(factory_.get()); 3315 QuicStreamRequest request(factory_.get());
3145 EXPECT_EQ(ERR_IO_PENDING, 3316 EXPECT_EQ(
3146 request.Request(host_port_pair_, privacy_mode_, 3317 ERR_IO_PENDING,
3147 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3318 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
3148 callback_.callback())); 3319 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3320 callback_.callback()));
3149 EXPECT_EQ(OK, callback_.WaitForResult()); 3321 EXPECT_EQ(OK, callback_.WaitForResult());
3150 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3322 std::unique_ptr<HttpStream> stream = request.CreateStream();
3151 EXPECT_TRUE(stream.get()); 3323 EXPECT_TRUE(stream.get());
3152 3324
3153 // Cause QUIC stream to be created, but marked as non-migratable. 3325 // Cause QUIC stream to be created, but marked as non-migratable.
3154 HttpRequestInfo request_info; 3326 HttpRequestInfo request_info;
3155 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; 3327 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION;
3156 request_info.method = "GET"; 3328 request_info.method = "GET";
3157 request_info.url = GURL("https://www.example.org/"); 3329 request_info.url = GURL("https://www.example.org/");
3158 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3330 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
3199 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 3371 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
3200 3372
3201 MockQuicData socket_data; 3373 MockQuicData socket_data;
3202 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3374 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3203 socket_data.AddWrite(ConstructInitialSettingsPacket()); 3375 socket_data.AddWrite(ConstructInitialSettingsPacket());
3204 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE); 3376 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE);
3205 socket_data.AddSocketDataToFactory(&socket_factory_); 3377 socket_data.AddSocketDataToFactory(&socket_factory_);
3206 3378
3207 // Create request and QuicHttpStream. 3379 // Create request and QuicHttpStream.
3208 QuicStreamRequest request(factory_.get()); 3380 QuicStreamRequest request(factory_.get());
3209 EXPECT_EQ(ERR_IO_PENDING, 3381 EXPECT_EQ(
3210 request.Request(host_port_pair_, privacy_mode_, 3382 ERR_IO_PENDING,
3211 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3383 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
3212 callback_.callback())); 3384 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3385 callback_.callback()));
3213 EXPECT_EQ(OK, callback_.WaitForResult()); 3386 EXPECT_EQ(OK, callback_.WaitForResult());
3214 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3387 std::unique_ptr<HttpStream> stream = request.CreateStream();
3215 EXPECT_TRUE(stream.get()); 3388 EXPECT_TRUE(stream.get());
3216 3389
3217 // Cause QUIC stream to be created. 3390 // Cause QUIC stream to be created.
3218 HttpRequestInfo request_info; 3391 HttpRequestInfo request_info;
3219 request_info.method = "GET"; 3392 request_info.method = "GET";
3220 request_info.url = GURL("https://www.example.org/"); 3393 request_info.url = GURL("https://www.example.org/");
3221 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3394 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
3222 net_log_, CompletionCallback())); 3395 net_log_, CompletionCallback()));
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
3278 } 3451 }
3279 socket_data[i].AddWrite( 3452 socket_data[i].AddWrite(
3280 (i % 2 == 0) ? first_write_error_mode : second_write_error_mode, 3453 (i % 2 == 0) ? first_write_error_mode : second_write_error_mode,
3281 ERR_FAILED); 3454 ERR_FAILED);
3282 } 3455 }
3283 socket_data[i].AddSocketDataToFactory(&socket_factory_); 3456 socket_data[i].AddSocketDataToFactory(&socket_factory_);
3284 } 3457 }
3285 3458
3286 // Create request and QuicHttpStream. 3459 // Create request and QuicHttpStream.
3287 QuicStreamRequest request(factory_.get()); 3460 QuicStreamRequest request(factory_.get());
3288 EXPECT_EQ(ERR_IO_PENDING, 3461 EXPECT_EQ(
3289 request.Request(host_port_pair_, privacy_mode_, 3462 ERR_IO_PENDING,
3290 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3463 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
3291 callback_.callback())); 3464 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3465 callback_.callback()));
3292 EXPECT_EQ(OK, callback_.WaitForResult()); 3466 EXPECT_EQ(OK, callback_.WaitForResult());
3293 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3467 std::unique_ptr<HttpStream> stream = request.CreateStream();
3294 EXPECT_TRUE(stream.get()); 3468 EXPECT_TRUE(stream.get());
3295 3469
3296 // Cause QUIC stream to be created. 3470 // Cause QUIC stream to be created.
3297 HttpRequestInfo request_info; 3471 HttpRequestInfo request_info;
3298 request_info.method = "GET"; 3472 request_info.method = "GET";
3299 request_info.url = GURL("https://www.example.org/"); 3473 request_info.url = GURL("https://www.example.org/");
3300 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3474 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
3301 net_log_, CompletionCallback())); 3475 net_log_, CompletionCallback()));
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
3358 MockQuicData socket_data; 3532 MockQuicData socket_data;
3359 QuicStreamOffset header_stream_offset = 0; 3533 QuicStreamOffset header_stream_offset = 0;
3360 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3534 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3361 socket_data.AddWrite( 3535 socket_data.AddWrite(
3362 ConstructInitialSettingsPacket(1, &header_stream_offset)); 3536 ConstructInitialSettingsPacket(1, &header_stream_offset));
3363 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE); 3537 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE);
3364 socket_data.AddSocketDataToFactory(&socket_factory_); 3538 socket_data.AddSocketDataToFactory(&socket_factory_);
3365 3539
3366 // Create request and QuicHttpStream. 3540 // Create request and QuicHttpStream.
3367 QuicStreamRequest request(factory_.get()); 3541 QuicStreamRequest request(factory_.get());
3368 EXPECT_EQ(ERR_IO_PENDING, 3542 EXPECT_EQ(
3369 request.Request(host_port_pair_, privacy_mode_, 3543 ERR_IO_PENDING,
3370 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3544 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
3371 callback_.callback())); 3545 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3546 callback_.callback()));
3372 EXPECT_EQ(OK, callback_.WaitForResult()); 3547 EXPECT_EQ(OK, callback_.WaitForResult());
3373 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3548 std::unique_ptr<HttpStream> stream = request.CreateStream();
3374 EXPECT_TRUE(stream.get()); 3549 EXPECT_TRUE(stream.get());
3375 3550
3376 // Cause QUIC stream to be created. 3551 // Cause QUIC stream to be created.
3377 HttpRequestInfo request_info; 3552 HttpRequestInfo request_info;
3378 request_info.method = "GET"; 3553 request_info.method = "GET";
3379 request_info.url = GURL("https://www.example.org/"); 3554 request_info.url = GURL("https://www.example.org/");
3380 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3555 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
3381 net_log_, CompletionCallback())); 3556 net_log_, CompletionCallback()));
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
3456 MockQuicData socket_data; 3631 MockQuicData socket_data;
3457 QuicStreamOffset header_stream_offset = 0; 3632 QuicStreamOffset header_stream_offset = 0;
3458 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3633 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3459 socket_data.AddWrite( 3634 socket_data.AddWrite(
3460 ConstructInitialSettingsPacket(1, &header_stream_offset)); 3635 ConstructInitialSettingsPacket(1, &header_stream_offset));
3461 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE); 3636 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE);
3462 socket_data.AddSocketDataToFactory(&socket_factory_); 3637 socket_data.AddSocketDataToFactory(&socket_factory_);
3463 3638
3464 // Create request and QuicHttpStream. 3639 // Create request and QuicHttpStream.
3465 QuicStreamRequest request(factory_.get()); 3640 QuicStreamRequest request(factory_.get());
3466 EXPECT_EQ(ERR_IO_PENDING, 3641 EXPECT_EQ(
3467 request.Request(host_port_pair_, privacy_mode_, 3642 ERR_IO_PENDING,
3468 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3643 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
3469 callback_.callback())); 3644 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3645 callback_.callback()));
3470 EXPECT_EQ(OK, callback_.WaitForResult()); 3646 EXPECT_EQ(OK, callback_.WaitForResult());
3471 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3647 std::unique_ptr<HttpStream> stream = request.CreateStream();
3472 EXPECT_TRUE(stream.get()); 3648 EXPECT_TRUE(stream.get());
3473 3649
3474 // Cause QUIC stream to be created. 3650 // Cause QUIC stream to be created.
3475 HttpRequestInfo request_info; 3651 HttpRequestInfo request_info;
3476 request_info.method = "GET"; 3652 request_info.method = "GET";
3477 request_info.url = GURL("https://www.example.org/"); 3653 request_info.url = GURL("https://www.example.org/");
3478 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3654 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
3479 net_log_, CompletionCallback())); 3655 net_log_, CompletionCallback()));
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
3555 MockQuicData socket_data; 3731 MockQuicData socket_data;
3556 QuicStreamOffset header_stream_offset = 0; 3732 QuicStreamOffset header_stream_offset = 0;
3557 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3733 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3558 socket_data.AddWrite( 3734 socket_data.AddWrite(
3559 ConstructInitialSettingsPacket(1, &header_stream_offset)); 3735 ConstructInitialSettingsPacket(1, &header_stream_offset));
3560 socket_data.AddWrite(SYNCHRONOUS, ERR_FAILED); 3736 socket_data.AddWrite(SYNCHRONOUS, ERR_FAILED);
3561 socket_data.AddSocketDataToFactory(&socket_factory_); 3737 socket_data.AddSocketDataToFactory(&socket_factory_);
3562 3738
3563 // Create request and QuicHttpStream. 3739 // Create request and QuicHttpStream.
3564 QuicStreamRequest request(factory_.get()); 3740 QuicStreamRequest request(factory_.get());
3565 EXPECT_EQ(ERR_IO_PENDING, 3741 EXPECT_EQ(
3566 request.Request(host_port_pair_, privacy_mode_, 3742 ERR_IO_PENDING,
3567 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3743 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
3568 callback_.callback())); 3744 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3745 callback_.callback()));
3569 EXPECT_EQ(OK, callback_.WaitForResult()); 3746 EXPECT_EQ(OK, callback_.WaitForResult());
3570 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3747 std::unique_ptr<HttpStream> stream = request.CreateStream();
3571 EXPECT_TRUE(stream.get()); 3748 EXPECT_TRUE(stream.get());
3572 3749
3573 // Cause QUIC stream to be created. 3750 // Cause QUIC stream to be created.
3574 HttpRequestInfo request_info; 3751 HttpRequestInfo request_info;
3575 request_info.method = "GET"; 3752 request_info.method = "GET";
3576 request_info.url = GURL("https://www.example.org/"); 3753 request_info.url = GURL("https://www.example.org/");
3577 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3754 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
3578 net_log_, CompletionCallback())); 3755 net_log_, CompletionCallback()));
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
3636 EXPECT_EQ(200, response.headers->response_code()); 3813 EXPECT_EQ(200, response.headers->response_code());
3637 3814
3638 // Create a new request for the same destination and verify that a 3815 // Create a new request for the same destination and verify that a
3639 // new session is created. 3816 // new session is created.
3640 MockQuicData socket_data2; 3817 MockQuicData socket_data2;
3641 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3818 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3642 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 3819 socket_data2.AddWrite(ConstructInitialSettingsPacket());
3643 socket_data2.AddSocketDataToFactory(&socket_factory_); 3820 socket_data2.AddSocketDataToFactory(&socket_factory_);
3644 3821
3645 QuicStreamRequest request2(factory_.get()); 3822 QuicStreamRequest request2(factory_.get());
3646 EXPECT_EQ(ERR_IO_PENDING, 3823 EXPECT_EQ(
3647 request2.Request(host_port_pair_, privacy_mode_, 3824 ERR_IO_PENDING,
3648 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3825 request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
3649 callback_.callback())); 3826 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3827 callback_.callback()));
3650 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 3828 EXPECT_THAT(callback_.WaitForResult(), IsOk());
3651 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 3829 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
3652 EXPECT_TRUE(stream2.get()); 3830 EXPECT_TRUE(stream2.get());
3653 3831
3654 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 3832 EXPECT_TRUE(HasActiveSession(host_port_pair_));
3655 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); 3833 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_);
3656 EXPECT_NE(session, new_session); 3834 EXPECT_NE(session, new_session);
3657 3835
3658 stream.reset(); 3836 stream.reset();
3659 stream2.reset(); 3837 stream2.reset();
(...skipping 28 matching lines...) Expand all
3688 MockQuicData socket_data; 3866 MockQuicData socket_data;
3689 QuicStreamOffset header_stream_offset = 0; 3867 QuicStreamOffset header_stream_offset = 0;
3690 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3868 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3691 socket_data.AddWrite( 3869 socket_data.AddWrite(
3692 ConstructInitialSettingsPacket(1, &header_stream_offset)); 3870 ConstructInitialSettingsPacket(1, &header_stream_offset));
3693 socket_data.AddWrite(SYNCHRONOUS, ERR_FAILED); 3871 socket_data.AddWrite(SYNCHRONOUS, ERR_FAILED);
3694 socket_data.AddSocketDataToFactory(&socket_factory_); 3872 socket_data.AddSocketDataToFactory(&socket_factory_);
3695 3873
3696 // Create request and QuicHttpStream. 3874 // Create request and QuicHttpStream.
3697 QuicStreamRequest request(factory_.get()); 3875 QuicStreamRequest request(factory_.get());
3698 EXPECT_EQ(ERR_IO_PENDING, 3876 EXPECT_EQ(
3699 request.Request(host_port_pair_, privacy_mode_, 3877 ERR_IO_PENDING,
3700 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3878 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
3701 callback_.callback())); 3879 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3880 callback_.callback()));
3702 EXPECT_EQ(OK, callback_.WaitForResult()); 3881 EXPECT_EQ(OK, callback_.WaitForResult());
3703 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3882 std::unique_ptr<HttpStream> stream = request.CreateStream();
3704 EXPECT_TRUE(stream.get()); 3883 EXPECT_TRUE(stream.get());
3705 3884
3706 // Cause QUIC stream to be created. 3885 // Cause QUIC stream to be created.
3707 HttpRequestInfo request_info; 3886 HttpRequestInfo request_info;
3708 request_info.method = "GET"; 3887 request_info.method = "GET";
3709 request_info.url = GURL("https://www.example.org/"); 3888 request_info.url = GURL("https://www.example.org/");
3710 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3889 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
3711 net_log_, CompletionCallback())); 3890 net_log_, CompletionCallback()));
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
3777 ->NotifyNetworkConnected(kNewNetworkForTests); 3956 ->NotifyNetworkConnected(kNewNetworkForTests);
3778 3957
3779 // Create a new request for the same destination and verify that a 3958 // Create a new request for the same destination and verify that a
3780 // new session is created. 3959 // new session is created.
3781 MockQuicData socket_data2; 3960 MockQuicData socket_data2;
3782 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3961 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3783 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 3962 socket_data2.AddWrite(ConstructInitialSettingsPacket());
3784 socket_data2.AddSocketDataToFactory(&socket_factory_); 3963 socket_data2.AddSocketDataToFactory(&socket_factory_);
3785 3964
3786 QuicStreamRequest request2(factory_.get()); 3965 QuicStreamRequest request2(factory_.get());
3787 EXPECT_EQ(ERR_IO_PENDING, 3966 EXPECT_EQ(
3788 request2.Request(host_port_pair_, privacy_mode_, 3967 ERR_IO_PENDING,
3789 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3968 request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
3790 callback_.callback())); 3969 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3970 callback_.callback()));
3791 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 3971 EXPECT_THAT(callback_.WaitForResult(), IsOk());
3792 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 3972 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
3793 EXPECT_TRUE(stream2.get()); 3973 EXPECT_TRUE(stream2.get());
3794 3974
3795 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 3975 EXPECT_TRUE(HasActiveSession(host_port_pair_));
3796 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); 3976 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_);
3797 EXPECT_NE(session, new_session); 3977 EXPECT_NE(session, new_session);
3798 3978
3799 stream.reset(); 3979 stream.reset();
3800 stream2.reset(); 3980 stream2.reset();
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
3842 QuicStreamOffset header_stream_offset = 0; 4022 QuicStreamOffset header_stream_offset = 0;
3843 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4023 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3844 socket_data.AddWrite( 4024 socket_data.AddWrite(
3845 ConstructInitialSettingsPacket(1, &header_stream_offset)); 4025 ConstructInitialSettingsPacket(1, &header_stream_offset));
3846 socket_data.AddWrite(ConstructGetRequestPacket( 4026 socket_data.AddWrite(ConstructGetRequestPacket(
3847 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); 4027 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
3848 socket_data.AddSocketDataToFactory(&socket_factory_); 4028 socket_data.AddSocketDataToFactory(&socket_factory_);
3849 4029
3850 // Create request and QuicHttpStream. 4030 // Create request and QuicHttpStream.
3851 QuicStreamRequest request(factory_.get()); 4031 QuicStreamRequest request(factory_.get());
3852 EXPECT_EQ(ERR_IO_PENDING, 4032 EXPECT_EQ(
3853 request.Request(host_port_pair_, privacy_mode_, 4033 ERR_IO_PENDING,
3854 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4034 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
3855 callback_.callback())); 4035 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4036 callback_.callback()));
3856 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4037 EXPECT_THAT(callback_.WaitForResult(), IsOk());
3857 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4038 std::unique_ptr<HttpStream> stream = request.CreateStream();
3858 EXPECT_TRUE(stream.get()); 4039 EXPECT_TRUE(stream.get());
3859 4040
3860 // Cause QUIC stream to be created. 4041 // Cause QUIC stream to be created.
3861 HttpRequestInfo request_info; 4042 HttpRequestInfo request_info;
3862 request_info.method = "GET"; 4043 request_info.method = "GET";
3863 request_info.url = url_; 4044 request_info.url = url_;
3864 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 4045 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
3865 net_log_, CompletionCallback())); 4046 net_log_, CompletionCallback()));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
3905 QuicStreamOffset header_stream_offset = 0; 4086 QuicStreamOffset header_stream_offset = 0;
3906 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4087 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3907 socket_data1.AddWrite( 4088 socket_data1.AddWrite(
3908 ConstructInitialSettingsPacket(1, &header_stream_offset)); 4089 ConstructInitialSettingsPacket(1, &header_stream_offset));
3909 socket_data1.AddWrite(ConstructGetRequestPacket( 4090 socket_data1.AddWrite(ConstructGetRequestPacket(
3910 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); 4091 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
3911 socket_data1.AddSocketDataToFactory(&socket_factory_); 4092 socket_data1.AddSocketDataToFactory(&socket_factory_);
3912 4093
3913 // Create request and QuicHttpStream. 4094 // Create request and QuicHttpStream.
3914 QuicStreamRequest request(factory_.get()); 4095 QuicStreamRequest request(factory_.get());
3915 EXPECT_EQ(ERR_IO_PENDING, 4096 EXPECT_EQ(
3916 request.Request(host_port_pair_, privacy_mode_, 4097 ERR_IO_PENDING,
3917 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4098 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
3918 callback_.callback())); 4099 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4100 callback_.callback()));
3919 EXPECT_EQ(OK, callback_.WaitForResult()); 4101 EXPECT_EQ(OK, callback_.WaitForResult());
3920 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4102 std::unique_ptr<HttpStream> stream = request.CreateStream();
3921 EXPECT_TRUE(stream.get()); 4103 EXPECT_TRUE(stream.get());
3922 4104
3923 // Cause QUIC stream to be created. 4105 // Cause QUIC stream to be created.
3924 HttpRequestInfo request_info; 4106 HttpRequestInfo request_info;
3925 request_info.method = "GET"; 4107 request_info.method = "GET";
3926 request_info.url = GURL("https://www.example.org/"); 4108 request_info.url = GURL("https://www.example.org/");
3927 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 4109 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
3928 net_log_, CompletionCallback())); 4110 net_log_, CompletionCallback()));
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
4047 // Set up only socket data provider. 4229 // Set up only socket data provider.
4048 MockQuicData socket_data1; 4230 MockQuicData socket_data1;
4049 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4231 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4050 socket_data1.AddWrite(ConstructInitialSettingsPacket()); 4232 socket_data1.AddWrite(ConstructInitialSettingsPacket());
4051 socket_data1.AddWrite(client_maker_.MakeRstPacket( 4233 socket_data1.AddWrite(client_maker_.MakeRstPacket(
4052 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 4234 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
4053 socket_data1.AddSocketDataToFactory(&socket_factory_); 4235 socket_data1.AddSocketDataToFactory(&socket_factory_);
4054 4236
4055 // Create request and QuicHttpStream. 4237 // Create request and QuicHttpStream.
4056 QuicStreamRequest request(factory_.get()); 4238 QuicStreamRequest request(factory_.get());
4057 EXPECT_EQ(ERR_IO_PENDING, 4239 EXPECT_EQ(
4058 request.Request(host_port_pair_, privacy_mode_, 4240 ERR_IO_PENDING,
4059 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4241 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
4060 callback_.callback())); 4242 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4243 callback_.callback()));
4061 EXPECT_EQ(OK, callback_.WaitForResult()); 4244 EXPECT_EQ(OK, callback_.WaitForResult());
4062 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4245 std::unique_ptr<HttpStream> stream = request.CreateStream();
4063 EXPECT_TRUE(stream.get()); 4246 EXPECT_TRUE(stream.get());
4064 4247
4065 // Cause QUIC stream to be created. 4248 // Cause QUIC stream to be created.
4066 HttpRequestInfo request_info; 4249 HttpRequestInfo request_info;
4067 request_info.method = "GET"; 4250 request_info.method = "GET";
4068 request_info.url = GURL("https://www.example.org/"); 4251 request_info.url = GURL("https://www.example.org/");
4069 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 4252 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
4070 net_log_, CompletionCallback())); 4253 net_log_, CompletionCallback()));
(...skipping 30 matching lines...) Expand all
4101 socket_data.AddWrite(ConstructInitialSettingsPacket()); 4284 socket_data.AddWrite(ConstructInitialSettingsPacket());
4102 socket_data.AddWrite(ConstructClientRstPacket(2)); 4285 socket_data.AddWrite(ConstructClientRstPacket(2));
4103 socket_data.AddSocketDataToFactory(&socket_factory_); 4286 socket_data.AddSocketDataToFactory(&socket_factory_);
4104 4287
4105 MockQuicData socket_data2; 4288 MockQuicData socket_data2;
4106 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4289 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4107 socket_data2.AddWrite(ConstructInitialSettingsPacket(1, nullptr)); 4290 socket_data2.AddWrite(ConstructInitialSettingsPacket(1, nullptr));
4108 socket_data2.AddSocketDataToFactory(&socket_factory_); 4291 socket_data2.AddSocketDataToFactory(&socket_factory_);
4109 4292
4110 QuicStreamRequest request(factory_.get()); 4293 QuicStreamRequest request(factory_.get());
4111 EXPECT_EQ(ERR_IO_PENDING, 4294 EXPECT_EQ(
4112 request.Request(host_port_pair_, privacy_mode_, 4295 ERR_IO_PENDING,
4113 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4296 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
4114 callback_.callback())); 4297 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4298 callback_.callback()));
4115 4299
4116 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4300 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4117 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4301 std::unique_ptr<HttpStream> stream = request.CreateStream();
4118 HttpRequestInfo request_info; 4302 HttpRequestInfo request_info;
4119 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 4303 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
4120 net_log_, CompletionCallback())); 4304 net_log_, CompletionCallback()));
4121 4305
4122 ssl_config_service_->NotifySSLConfigChange(); 4306 ssl_config_service_->NotifySSLConfigChange();
4123 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, 4307 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED,
4124 stream->ReadResponseHeaders(callback_.callback())); 4308 stream->ReadResponseHeaders(callback_.callback()));
4125 EXPECT_FALSE(factory_->require_confirmation()); 4309 EXPECT_FALSE(factory_->require_confirmation());
4126 4310
4127 // Now attempting to request a stream to the same origin should create 4311 // Now attempting to request a stream to the same origin should create
4128 // a new session. 4312 // a new session.
4129 4313
4130 QuicStreamRequest request2(factory_.get()); 4314 QuicStreamRequest request2(factory_.get());
4131 EXPECT_EQ(ERR_IO_PENDING, 4315 EXPECT_EQ(
4132 request2.Request(host_port_pair_, privacy_mode_, 4316 ERR_IO_PENDING,
4133 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4317 request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
4134 callback_.callback())); 4318 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4319 callback_.callback()));
4135 4320
4136 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4321 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4137 stream = request2.CreateStream(); 4322 stream = request2.CreateStream();
4138 stream.reset(); // Will reset stream 3. 4323 stream.reset(); // Will reset stream 3.
4139 4324
4140 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 4325 EXPECT_TRUE(socket_data.AllReadDataConsumed());
4141 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 4326 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
4142 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 4327 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
4143 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 4328 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
4144 } 4329 }
4145 4330
4146 TEST_P(QuicStreamFactoryTest, OnCertDBChanged) { 4331 TEST_P(QuicStreamFactoryTest, OnCertDBChanged) {
4147 Initialize(); 4332 Initialize();
4148 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 4333 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
4149 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4334 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4150 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4335 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4151 4336
4152 MockQuicData socket_data; 4337 MockQuicData socket_data;
4153 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4338 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4154 socket_data.AddWrite(ConstructInitialSettingsPacket()); 4339 socket_data.AddWrite(ConstructInitialSettingsPacket());
4155 socket_data.AddWrite(ConstructClientRstPacket(2)); 4340 socket_data.AddWrite(ConstructClientRstPacket(2));
4156 socket_data.AddSocketDataToFactory(&socket_factory_); 4341 socket_data.AddSocketDataToFactory(&socket_factory_);
4157 4342
4158 MockQuicData socket_data2; 4343 MockQuicData socket_data2;
4159 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4344 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4160 socket_data2.AddWrite(ConstructInitialSettingsPacket(1, nullptr)); 4345 socket_data2.AddWrite(ConstructInitialSettingsPacket(1, nullptr));
4161 socket_data2.AddSocketDataToFactory(&socket_factory_); 4346 socket_data2.AddSocketDataToFactory(&socket_factory_);
4162 4347
4163 QuicStreamRequest request(factory_.get()); 4348 QuicStreamRequest request(factory_.get());
4164 EXPECT_EQ(ERR_IO_PENDING, 4349 EXPECT_EQ(
4165 request.Request(host_port_pair_, privacy_mode_, 4350 ERR_IO_PENDING,
4166 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4351 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
4167 callback_.callback())); 4352 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4353 callback_.callback()));
4168 4354
4169 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4355 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4170 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4356 std::unique_ptr<HttpStream> stream = request.CreateStream();
4171 HttpRequestInfo request_info; 4357 HttpRequestInfo request_info;
4172 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 4358 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
4173 net_log_, CompletionCallback())); 4359 net_log_, CompletionCallback()));
4174 4360
4175 // Change the CA cert and verify that stream saw the event. 4361 // Change the CA cert and verify that stream saw the event.
4176 factory_->OnCertDBChanged(); 4362 factory_->OnCertDBChanged();
4177 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, 4363 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED,
4178 stream->ReadResponseHeaders(callback_.callback())); 4364 stream->ReadResponseHeaders(callback_.callback()));
4179 EXPECT_FALSE(factory_->require_confirmation()); 4365 EXPECT_FALSE(factory_->require_confirmation());
4180 4366
4181 // Now attempting to request a stream to the same origin should create 4367 // Now attempting to request a stream to the same origin should create
4182 // a new session. 4368 // a new session.
4183 4369
4184 QuicStreamRequest request2(factory_.get()); 4370 QuicStreamRequest request2(factory_.get());
4185 EXPECT_EQ(ERR_IO_PENDING, 4371 EXPECT_EQ(
4186 request2.Request(host_port_pair_, privacy_mode_, 4372 ERR_IO_PENDING,
4187 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4373 request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
4188 callback_.callback())); 4374 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4375 callback_.callback()));
4189 4376
4190 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4377 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4191 stream = request2.CreateStream(); 4378 stream = request2.CreateStream();
4192 stream.reset(); // Will reset stream 3. 4379 stream.reset(); // Will reset stream 3.
4193 4380
4194 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 4381 EXPECT_TRUE(socket_data.AllReadDataConsumed());
4195 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 4382 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
4196 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 4383 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
4197 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 4384 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
4198 } 4385 }
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
4280 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4467 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4281 socket_data.AddSocketDataToFactory(&socket_factory_); 4468 socket_data.AddSocketDataToFactory(&socket_factory_);
4282 4469
4283 crypto_client_stream_factory_.set_handshake_mode( 4470 crypto_client_stream_factory_.set_handshake_mode(
4284 MockCryptoClientStream::ZERO_RTT); 4471 MockCryptoClientStream::ZERO_RTT);
4285 host_resolver_.set_synchronous_mode(true); 4472 host_resolver_.set_synchronous_mode(true);
4286 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 4473 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
4287 "192.168.0.1", ""); 4474 "192.168.0.1", "");
4288 4475
4289 QuicStreamRequest request(factory_.get()); 4476 QuicStreamRequest request(factory_.get());
4290 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 4477 EXPECT_EQ(
4291 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4478 OK, request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
4292 callback_.callback())); 4479 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4480 callback_.callback()));
4293 4481
4294 // If we are waiting for disk cache, we would have posted a task. Verify that 4482 // If we are waiting for disk cache, we would have posted a task. Verify that
4295 // the CancelWaitForDataReady task hasn't been posted. 4483 // the CancelWaitForDataReady task hasn't been posted.
4296 ASSERT_EQ(0u, runner_->GetPostedTasks().size()); 4484 ASSERT_EQ(0u, runner_->GetPostedTasks().size());
4297 4485
4298 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4486 std::unique_ptr<HttpStream> stream = request.CreateStream();
4299 EXPECT_TRUE(stream.get()); 4487 EXPECT_TRUE(stream.get());
4300 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 4488 EXPECT_TRUE(socket_data.AllReadDataConsumed());
4301 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 4489 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
4302 } 4490 }
(...skipping 24 matching lines...) Expand all
4327 host_resolver_.set_synchronous_mode(true); 4515 host_resolver_.set_synchronous_mode(true);
4328 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 4516 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
4329 "192.168.0.1", ""); 4517 "192.168.0.1", "");
4330 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 4518 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
4331 4519
4332 // Quic should use default PING timeout when no previous connection times out 4520 // Quic should use default PING timeout when no previous connection times out
4333 // with open stream. 4521 // with open stream.
4334 EXPECT_EQ(QuicTime::Delta::FromSeconds(kPingTimeoutSecs), 4522 EXPECT_EQ(QuicTime::Delta::FromSeconds(kPingTimeoutSecs),
4335 QuicStreamFactoryPeer::GetPingTimeout(factory_.get())); 4523 QuicStreamFactoryPeer::GetPingTimeout(factory_.get()));
4336 QuicStreamRequest request(factory_.get()); 4524 QuicStreamRequest request(factory_.get());
4337 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 4525 EXPECT_EQ(
4338 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4526 OK, request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
4339 callback_.callback())); 4527 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4528 callback_.callback()));
4340 4529
4341 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 4530 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
4342 EXPECT_EQ(QuicTime::Delta::FromSeconds(kPingTimeoutSecs), 4531 EXPECT_EQ(QuicTime::Delta::FromSeconds(kPingTimeoutSecs),
4343 session->connection()->ping_timeout()); 4532 session->connection()->ping_timeout());
4344 4533
4345 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4534 std::unique_ptr<HttpStream> stream = request.CreateStream();
4346 EXPECT_TRUE(stream.get()); 4535 EXPECT_TRUE(stream.get());
4347 HttpRequestInfo request_info; 4536 HttpRequestInfo request_info;
4348 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 4537 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
4349 net_log_, CompletionCallback())); 4538 net_log_, CompletionCallback()));
4350 4539
4351 DVLOG(1) 4540 DVLOG(1)
4352 << "Created 1st session and initialized a stream. Now trigger timeout"; 4541 << "Created 1st session and initialized a stream. Now trigger timeout";
4353 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, "test", 4542 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, "test",
4354 ConnectionCloseBehavior::SILENT_CLOSE); 4543 ConnectionCloseBehavior::SILENT_CLOSE);
4355 // Need to spin the loop now to ensure that 4544 // Need to spin the loop now to ensure that
4356 // QuicStreamFactory::OnSessionClosed() runs. 4545 // QuicStreamFactory::OnSessionClosed() runs.
4357 base::RunLoop run_loop; 4546 base::RunLoop run_loop;
4358 run_loop.RunUntilIdle(); 4547 run_loop.RunUntilIdle();
4359 4548
4360 // The first connection times out with open stream, QUIC should reduce initial 4549 // The first connection times out with open stream, QUIC should reduce initial
4361 // PING time for subsequent connections. 4550 // PING time for subsequent connections.
4362 EXPECT_EQ(QuicTime::Delta::FromSeconds(10), 4551 EXPECT_EQ(QuicTime::Delta::FromSeconds(10),
4363 QuicStreamFactoryPeer::GetPingTimeout(factory_.get())); 4552 QuicStreamFactoryPeer::GetPingTimeout(factory_.get()));
4364 4553
4365 // Test two-in-a-row timeouts with open streams. 4554 // Test two-in-a-row timeouts with open streams.
4366 DVLOG(1) << "Create 2nd session and timeout with open stream"; 4555 DVLOG(1) << "Create 2nd session and timeout with open stream";
4367 TestCompletionCallback callback2; 4556 TestCompletionCallback callback2;
4368 QuicStreamRequest request2(factory_.get()); 4557 QuicStreamRequest request2(factory_.get());
4369 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 4558 EXPECT_EQ(OK, request2.Request(server2, advertised_versions_, privacy_mode_,
4370 /*cert_verify_flags=*/0, url2_, "GET", 4559 /*cert_verify_flags=*/0, url2_, "GET",
4371 net_log_, callback2.callback())); 4560 net_log_, callback2.callback()));
4372 QuicChromiumClientSession* session2 = GetActiveSession(server2); 4561 QuicChromiumClientSession* session2 = GetActiveSession(server2);
4373 EXPECT_EQ(QuicTime::Delta::FromSeconds(10), 4562 EXPECT_EQ(QuicTime::Delta::FromSeconds(10),
4374 session2->connection()->ping_timeout()); 4563 session2->connection()->ping_timeout());
4375 4564
4376 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 4565 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
4377 EXPECT_TRUE(stream2.get()); 4566 EXPECT_TRUE(stream2.get());
4378 EXPECT_EQ(OK, stream2->InitializeStream(&request_info, DEFAULT_PRIORITY, 4567 EXPECT_EQ(OK, stream2->InitializeStream(&request_info, DEFAULT_PRIORITY,
4379 net_log_, CompletionCallback())); 4568 net_log_, CompletionCallback()));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
4424 4613
4425 while (HasActiveCertVerifierJob(quic_server_id)) { 4614 while (HasActiveCertVerifierJob(quic_server_id)) {
4426 base::RunLoop().RunUntilIdle(); 4615 base::RunLoop().RunUntilIdle();
4427 } 4616 }
4428 } 4617 }
4429 // Verify CertVerifierJob has finished. 4618 // Verify CertVerifierJob has finished.
4430 EXPECT_FALSE(HasActiveCertVerifierJob(quic_server_id)); 4619 EXPECT_FALSE(HasActiveCertVerifierJob(quic_server_id));
4431 4620
4432 // Start a QUIC request. 4621 // Start a QUIC request.
4433 QuicStreamRequest request(factory_.get()); 4622 QuicStreamRequest request(factory_.get());
4434 EXPECT_EQ(ERR_IO_PENDING, 4623 EXPECT_EQ(
4435 request.Request(host_port_pair_, privacy_mode_, 4624 ERR_IO_PENDING,
4436 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4625 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
4437 callback_.callback())); 4626 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4627 callback_.callback()));
4438 4628
4439 EXPECT_EQ(OK, callback_.WaitForResult()); 4629 EXPECT_EQ(OK, callback_.WaitForResult());
4440 4630
4441 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4631 std::unique_ptr<HttpStream> stream = request.CreateStream();
4442 EXPECT_TRUE(stream.get()); 4632 EXPECT_TRUE(stream.get());
4443 4633
4444 // Restore |race_cert_verification|. 4634 // Restore |race_cert_verification|.
4445 QuicStreamFactoryPeer::SetRaceCertVerification(factory_.get(), 4635 QuicStreamFactoryPeer::SetRaceCertVerification(factory_.get(),
4446 race_cert_verification); 4636 race_cert_verification);
4447 4637
(...skipping 22 matching lines...) Expand all
4470 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 4660 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
4471 "192.168.0.1", ""); 4661 "192.168.0.1", "");
4472 4662
4473 // Set up the TaskObserver to verify QuicChromiumPacketReader::StartReading 4663 // Set up the TaskObserver to verify QuicChromiumPacketReader::StartReading
4474 // posts a task. 4664 // posts a task.
4475 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver?? 4665 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver??
4476 SpdySessionTestTaskObserver observer("quic_chromium_packet_reader.cc", 4666 SpdySessionTestTaskObserver observer("quic_chromium_packet_reader.cc",
4477 "StartReading"); 4667 "StartReading");
4478 4668
4479 QuicStreamRequest request(factory_.get()); 4669 QuicStreamRequest request(factory_.get());
4480 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 4670 EXPECT_EQ(
4481 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4671 OK, request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
4482 callback_.callback())); 4672 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4673 callback_.callback()));
4483 4674
4484 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets 4675 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets
4485 // called. 4676 // called.
4486 base::RunLoop run_loop; 4677 base::RunLoop run_loop;
4487 run_loop.RunUntilIdle(); 4678 run_loop.RunUntilIdle();
4488 4679
4489 // Verify task that the observer's executed_count is 1, which indicates 4680 // Verify task that the observer's executed_count is 1, which indicates
4490 // QuicChromiumPacketReader::StartReading() has posted only one task and 4681 // QuicChromiumPacketReader::StartReading() has posted only one task and
4491 // yielded the read. 4682 // yielded the read.
4492 EXPECT_EQ(1u, observer.executed_count()); 4683 EXPECT_EQ(1u, observer.executed_count());
(...skipping 22 matching lines...) Expand all
4515 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 4706 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
4516 "192.168.0.1", ""); 4707 "192.168.0.1", "");
4517 4708
4518 // Set up the TaskObserver to verify QuicChromiumPacketReader::StartReading 4709 // Set up the TaskObserver to verify QuicChromiumPacketReader::StartReading
4519 // posts a task. 4710 // posts a task.
4520 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver?? 4711 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver??
4521 SpdySessionTestTaskObserver observer("quic_chromium_packet_reader.cc", 4712 SpdySessionTestTaskObserver observer("quic_chromium_packet_reader.cc",
4522 "StartReading"); 4713 "StartReading");
4523 4714
4524 QuicStreamRequest request(factory_.get()); 4715 QuicStreamRequest request(factory_.get());
4525 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 4716 EXPECT_EQ(
4526 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4717 OK, request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
4527 callback_.callback())); 4718 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4719 callback_.callback()));
4528 4720
4529 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets 4721 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets
4530 // called. 4722 // called.
4531 base::RunLoop run_loop; 4723 base::RunLoop run_loop;
4532 run_loop.RunUntilIdle(); 4724 run_loop.RunUntilIdle();
4533 4725
4534 // Verify task that the observer's executed_count is 1, which indicates 4726 // Verify task that the observer's executed_count is 1, which indicates
4535 // QuicChromiumPacketReader::StartReading() has posted only one task and 4727 // QuicChromiumPacketReader::StartReading() has posted only one task and
4536 // yielded the read. 4728 // yielded the read.
4537 EXPECT_EQ(1u, observer.executed_count()); 4729 EXPECT_EQ(1u, observer.executed_count());
4538 4730
4539 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4731 std::unique_ptr<HttpStream> stream = request.CreateStream();
4540 EXPECT_FALSE(stream.get()); // Session is already closed. 4732 EXPECT_FALSE(stream.get()); // Session is already closed.
4541 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 4733 EXPECT_TRUE(socket_data.AllReadDataConsumed());
4542 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 4734 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
4543 } 4735 }
4544 4736
4545 TEST_P(QuicStreamFactoryTest, ServerPushSessionAffinity) { 4737 TEST_P(QuicStreamFactoryTest, ServerPushSessionAffinity) {
4546 Initialize(); 4738 Initialize();
4547 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 4739 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
4548 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4740 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4549 4741
4550 MockQuicData socket_data; 4742 MockQuicData socket_data;
4551 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4743 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4552 socket_data.AddWrite(ConstructInitialSettingsPacket()); 4744 socket_data.AddWrite(ConstructInitialSettingsPacket());
4553 socket_data.AddSocketDataToFactory(&socket_factory_); 4745 socket_data.AddSocketDataToFactory(&socket_factory_);
4554 4746
4555 QuicStreamRequest request(factory_.get()); 4747 QuicStreamRequest request(factory_.get());
4556 EXPECT_EQ(ERR_IO_PENDING, 4748 EXPECT_EQ(
4557 request.Request(host_port_pair_, privacy_mode_, 4749 ERR_IO_PENDING,
4558 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4750 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
4559 callback_.callback())); 4751 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4752 callback_.callback()));
4560 4753
4561 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4754 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4562 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4755 std::unique_ptr<HttpStream> stream = request.CreateStream();
4563 EXPECT_TRUE(stream.get()); 4756 EXPECT_TRUE(stream.get());
4564 4757
4565 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); 4758 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
4566 4759
4567 string url = "https://www.example.org/"; 4760 string url = "https://www.example.org/";
4568 4761
4569 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 4762 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
4570 4763
4571 QuicClientPromisedInfo promised(session, GetNthServerInitiatedStreamId(0), 4764 QuicClientPromisedInfo promised(session, GetNthServerInitiatedStreamId(0),
4572 kDefaultUrl); 4765 kDefaultUrl);
4573 (*QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get()) 4766 (*QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get())
4574 ->promised_by_url())[kDefaultUrl] = &promised; 4767 ->promised_by_url())[kDefaultUrl] = &promised;
4575 4768
4576 QuicStreamRequest request2(factory_.get()); 4769 QuicStreamRequest request2(factory_.get());
4577 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_, 4770 EXPECT_EQ(
4578 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4771 OK, request2.Request(host_port_pair_, advertised_versions_, privacy_mode_,
4579 callback_.callback())); 4772 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4773 callback_.callback()));
4580 4774
4581 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); 4775 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
4582 } 4776 }
4583 4777
4584 TEST_P(QuicStreamFactoryTest, ServerPushPrivacyModeMismatch) { 4778 TEST_P(QuicStreamFactoryTest, ServerPushPrivacyModeMismatch) {
4585 Initialize(); 4779 Initialize();
4586 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 4780 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
4587 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4781 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4588 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4782 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4589 4783
4590 MockQuicData socket_data1; 4784 MockQuicData socket_data1;
4591 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4785 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4592 socket_data1.AddWrite(ConstructInitialSettingsPacket()); 4786 socket_data1.AddWrite(ConstructInitialSettingsPacket());
4593 socket_data1.AddWrite(client_maker_.MakeRstPacket( 4787 socket_data1.AddWrite(client_maker_.MakeRstPacket(
4594 2, true, GetNthServerInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 4788 2, true, GetNthServerInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
4595 socket_data1.AddSocketDataToFactory(&socket_factory_); 4789 socket_data1.AddSocketDataToFactory(&socket_factory_);
4596 4790
4597 MockQuicData socket_data2; 4791 MockQuicData socket_data2;
4598 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4792 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4599 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 4793 socket_data2.AddWrite(ConstructInitialSettingsPacket());
4600 socket_data2.AddSocketDataToFactory(&socket_factory_); 4794 socket_data2.AddSocketDataToFactory(&socket_factory_);
4601 4795
4602 QuicStreamRequest request(factory_.get()); 4796 QuicStreamRequest request(factory_.get());
4603 EXPECT_EQ(ERR_IO_PENDING, 4797 EXPECT_EQ(
4604 request.Request(host_port_pair_, privacy_mode_, 4798 ERR_IO_PENDING,
4605 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4799 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
4606 callback_.callback())); 4800 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4801 callback_.callback()));
4607 4802
4608 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4803 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4609 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4804 std::unique_ptr<HttpStream> stream = request.CreateStream();
4610 EXPECT_TRUE(stream.get()); 4805 EXPECT_TRUE(stream.get());
4611 4806
4612 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); 4807 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
4613 4808
4614 string url = "https://www.example.org/"; 4809 string url = "https://www.example.org/";
4615 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 4810 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
4616 4811
4617 QuicClientPromisedInfo promised(session, GetNthServerInitiatedStreamId(0), 4812 QuicClientPromisedInfo promised(session, GetNthServerInitiatedStreamId(0),
4618 kDefaultUrl); 4813 kDefaultUrl);
4619 4814
4620 QuicClientPushPromiseIndex* index = 4815 QuicClientPushPromiseIndex* index =
4621 QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get()); 4816 QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get());
4622 4817
4623 (*index->promised_by_url())[kDefaultUrl] = &promised; 4818 (*index->promised_by_url())[kDefaultUrl] = &promised;
4624 EXPECT_EQ(index->GetPromised(kDefaultUrl), &promised); 4819 EXPECT_EQ(index->GetPromised(kDefaultUrl), &promised);
4625 4820
4626 // Doing the request should not use the push stream, but rather 4821 // Doing the request should not use the push stream, but rather
4627 // cancel it because the privacy modes do not match. 4822 // cancel it because the privacy modes do not match.
4628 QuicStreamRequest request2(factory_.get()); 4823 QuicStreamRequest request2(factory_.get());
4629 EXPECT_EQ(ERR_IO_PENDING, 4824 EXPECT_EQ(ERR_IO_PENDING,
4630 request2.Request(host_port_pair_, PRIVACY_MODE_ENABLED, 4825 request2.Request(host_port_pair_, advertised_versions_,
4826 PRIVACY_MODE_ENABLED,
4631 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4827 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4632 callback_.callback())); 4828 callback_.callback()));
4633 4829
4634 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); 4830 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
4635 EXPECT_EQ(index->GetPromised(kDefaultUrl), nullptr); 4831 EXPECT_EQ(index->GetPromised(kDefaultUrl), nullptr);
4636 4832
4637 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4833 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4638 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 4834 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
4639 EXPECT_TRUE(stream2.get()); 4835 EXPECT_TRUE(stream2.get());
4640 4836
(...skipping 14 matching lines...) Expand all
4655 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 4851 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
4656 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4852 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4657 4853
4658 MockQuicData socket_data; 4854 MockQuicData socket_data;
4659 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4855 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4660 socket_data.AddWrite(ConstructInitialSettingsPacket()); 4856 socket_data.AddWrite(ConstructInitialSettingsPacket());
4661 socket_data.AddSocketDataToFactory(&socket_factory_); 4857 socket_data.AddSocketDataToFactory(&socket_factory_);
4662 4858
4663 QuicStreamRequest request1(factory_.get()); 4859 QuicStreamRequest request1(factory_.get());
4664 EXPECT_EQ(ERR_IO_PENDING, 4860 EXPECT_EQ(ERR_IO_PENDING,
4665 request1.Request(destination1, privacy_mode_, 4861 request1.Request(destination1, advertised_versions_, privacy_mode_,
4666 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4862 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4667 callback_.callback())); 4863 callback_.callback()));
4668 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4864 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4669 std::unique_ptr<HttpStream> stream1 = request1.CreateStream(); 4865 std::unique_ptr<HttpStream> stream1 = request1.CreateStream();
4670 EXPECT_TRUE(stream1.get()); 4866 EXPECT_TRUE(stream1.get());
4671 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 4867 EXPECT_TRUE(HasActiveSession(host_port_pair_));
4672 4868
4673 // Second request returns synchronously because it pools to existing session. 4869 // Second request returns synchronously because it pools to existing session.
4674 TestCompletionCallback callback2; 4870 TestCompletionCallback callback2;
4675 QuicStreamRequest request2(factory_.get()); 4871 QuicStreamRequest request2(factory_.get());
4676 EXPECT_EQ(OK, request2.Request(destination2, privacy_mode_, 4872 EXPECT_EQ(OK,
4677 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4873 request2.Request(destination2, advertised_versions_, privacy_mode_,
4678 callback2.callback())); 4874 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4875 callback2.callback()));
4679 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 4876 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
4680 EXPECT_TRUE(stream2.get()); 4877 EXPECT_TRUE(stream2.get());
4681 4878
4682 QuicChromiumClientSession::Handle* session1 = 4879 QuicChromiumClientSession::Handle* session1 =
4683 QuicHttpStreamPeer::GetSessionHandle(stream1.get()); 4880 QuicHttpStreamPeer::GetSessionHandle(stream1.get());
4684 QuicChromiumClientSession::Handle* session2 = 4881 QuicChromiumClientSession::Handle* session2 =
4685 QuicHttpStreamPeer::GetSessionHandle(stream2.get()); 4882 QuicHttpStreamPeer::GetSessionHandle(stream2.get());
4686 EXPECT_TRUE(session1->SharesSameSession(*session2)); 4883 EXPECT_TRUE(session1->SharesSameSession(*session2));
4687 EXPECT_EQ(QuicServerId(host_port_pair_, privacy_mode_), 4884 EXPECT_EQ(QuicServerId(host_port_pair_, privacy_mode_),
4688 session1->server_id()); 4885 session1->server_id());
4689 4886
4690 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 4887 EXPECT_TRUE(socket_data.AllReadDataConsumed());
4691 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 4888 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
4692 } 4889 }
4693 4890
4694 TEST_P(QuicStreamFactoryTest, ForceHolBlockingEnabled) { 4891 TEST_P(QuicStreamFactoryTest, ForceHolBlockingEnabled) {
4695 force_hol_blocking_ = true; 4892 force_hol_blocking_ = true;
4696 Initialize(); 4893 Initialize();
4697 4894
4698 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 4895 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
4699 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4896 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4700 4897
4701 MockQuicData socket_data; 4898 MockQuicData socket_data;
4702 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4899 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4703 socket_data.AddWrite(ConstructInitialSettingsPacket()); 4900 socket_data.AddWrite(ConstructInitialSettingsPacket());
4704 socket_data.AddSocketDataToFactory(&socket_factory_); 4901 socket_data.AddSocketDataToFactory(&socket_factory_);
4705 4902
4706 QuicStreamRequest request(factory_.get()); 4903 QuicStreamRequest request(factory_.get());
4707 EXPECT_EQ(ERR_IO_PENDING, 4904 EXPECT_EQ(
4708 request.Request(host_port_pair_, privacy_mode_, 4905 ERR_IO_PENDING,
4709 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4906 request.Request(host_port_pair_, advertised_versions_, privacy_mode_,
4710 callback_.callback())); 4907 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4908 callback_.callback()));
4711 4909
4712 EXPECT_EQ(OK, callback_.WaitForResult()); 4910 EXPECT_EQ(OK, callback_.WaitForResult());
4713 4911
4714 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 4912 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
4715 if (session->connection()->version() == QUIC_VERSION_36) { 4913 if (session->connection()->version() == QUIC_VERSION_36) {
4716 EXPECT_TRUE(session->force_hol_blocking()); 4914 EXPECT_TRUE(session->force_hol_blocking());
4717 } else { 4915 } else {
4718 EXPECT_FALSE(session->force_hol_blocking()); 4916 EXPECT_FALSE(session->force_hol_blocking());
4719 } 4917 }
4720 } 4918 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
4794 ASSERT_TRUE(cert->VerifyNameMatch(origin2_.host(), false)); 4992 ASSERT_TRUE(cert->VerifyNameMatch(origin2_.host(), false));
4795 4993
4796 ProofVerifyDetailsChromium verify_details; 4994 ProofVerifyDetailsChromium verify_details;
4797 verify_details.cert_verify_result.verified_cert = cert; 4995 verify_details.cert_verify_result.verified_cert = cert;
4798 verify_details.cert_verify_result.is_issued_by_known_root = true; 4996 verify_details.cert_verify_result.is_issued_by_known_root = true;
4799 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4997 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4800 4998
4801 AddHangingSocketData(); 4999 AddHangingSocketData();
4802 5000
4803 QuicStreamRequest request(factory_.get()); 5001 QuicStreamRequest request(factory_.get());
4804 EXPECT_EQ(ERR_IO_PENDING, request.Request(destination, privacy_mode_, 5002 EXPECT_EQ(ERR_IO_PENDING,
4805 /*cert_verify_flags=*/0, url, "GET", 5003 request.Request(destination, advertised_versions_, privacy_mode_,
4806 net_log_, callback_.callback())); 5004 /*cert_verify_flags=*/0, url, "GET", net_log_,
5005 callback_.callback()));
4807 5006
4808 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_QUIC_HANDSHAKE_FAILED)); 5007 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_QUIC_HANDSHAKE_FAILED));
4809 5008
4810 EXPECT_TRUE(AllDataConsumed()); 5009 EXPECT_TRUE(AllDataConsumed());
4811 } 5010 }
4812 5011
4813 // QuicStreamRequest is pooled based on |destination| if certificate matches. 5012 // QuicStreamRequest is pooled based on |destination| if certificate matches.
4814 TEST_P(QuicStreamFactoryWithDestinationTest, SharedCertificate) { 5013 TEST_P(QuicStreamFactoryWithDestinationTest, SharedCertificate) {
4815 Initialize(); 5014 Initialize();
4816 5015
(...skipping 20 matching lines...) Expand all
4837 client_maker_.MakeInitialSettingsPacket(1, nullptr)); 5036 client_maker_.MakeInitialSettingsPacket(1, nullptr));
4838 MockWrite writes[] = {MockWrite(SYNCHRONOUS, settings_packet->data(), 5037 MockWrite writes[] = {MockWrite(SYNCHRONOUS, settings_packet->data(),
4839 settings_packet->length(), 1)}; 5038 settings_packet->length(), 1)};
4840 std::unique_ptr<SequencedSocketData> sequenced_socket_data( 5039 std::unique_ptr<SequencedSocketData> sequenced_socket_data(
4841 new SequencedSocketData(reads, 1, writes, arraysize(writes))); 5040 new SequencedSocketData(reads, 1, writes, arraysize(writes)));
4842 socket_factory_.AddSocketDataProvider(sequenced_socket_data.get()); 5041 socket_factory_.AddSocketDataProvider(sequenced_socket_data.get());
4843 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data)); 5042 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data));
4844 5043
4845 QuicStreamRequest request1(factory_.get()); 5044 QuicStreamRequest request1(factory_.get());
4846 EXPECT_EQ(ERR_IO_PENDING, 5045 EXPECT_EQ(ERR_IO_PENDING,
4847 request1.Request(destination, privacy_mode_, 5046 request1.Request(destination, advertised_versions_, privacy_mode_,
4848 /*cert_verify_flags=*/0, url1, "GET", net_log_, 5047 /*cert_verify_flags=*/0, url1, "GET", net_log_,
4849 callback_.callback())); 5048 callback_.callback()));
4850 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 5049 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4851 5050
4852 std::unique_ptr<HttpStream> stream1 = request1.CreateStream(); 5051 std::unique_ptr<HttpStream> stream1 = request1.CreateStream();
4853 EXPECT_TRUE(stream1.get()); 5052 EXPECT_TRUE(stream1.get());
4854 EXPECT_TRUE(HasActiveSession(origin1_)); 5053 EXPECT_TRUE(HasActiveSession(origin1_));
4855 5054
4856 // Second request returns synchronously because it pools to existing session. 5055 // Second request returns synchronously because it pools to existing session.
4857 TestCompletionCallback callback2; 5056 TestCompletionCallback callback2;
4858 QuicStreamRequest request2(factory_.get()); 5057 QuicStreamRequest request2(factory_.get());
4859 EXPECT_EQ(OK, request2.Request(destination, privacy_mode_, 5058 EXPECT_EQ(OK,
4860 /*cert_verify_flags=*/0, url2, "GET", net_log_, 5059 request2.Request(destination, advertised_versions_, privacy_mode_,
4861 callback2.callback())); 5060 /*cert_verify_flags=*/0, url2, "GET", net_log_,
5061 callback2.callback()));
4862 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 5062 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
4863 EXPECT_TRUE(stream2.get()); 5063 EXPECT_TRUE(stream2.get());
4864 5064
4865 QuicChromiumClientSession::Handle* session1 = 5065 QuicChromiumClientSession::Handle* session1 =
4866 QuicHttpStreamPeer::GetSessionHandle(stream1.get()); 5066 QuicHttpStreamPeer::GetSessionHandle(stream1.get());
4867 QuicChromiumClientSession::Handle* session2 = 5067 QuicChromiumClientSession::Handle* session2 =
4868 QuicHttpStreamPeer::GetSessionHandle(stream2.get()); 5068 QuicHttpStreamPeer::GetSessionHandle(stream2.get());
4869 EXPECT_TRUE(session1->SharesSameSession(*session2)); 5069 EXPECT_TRUE(session1->SharesSameSession(*session2));
4870 5070
4871 EXPECT_EQ(QuicServerId(origin1_, privacy_mode_), session1->server_id()); 5071 EXPECT_EQ(QuicServerId(origin1_, privacy_mode_), session1->server_id());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
4908 std::unique_ptr<SequencedSocketData> sequenced_socket_data( 5108 std::unique_ptr<SequencedSocketData> sequenced_socket_data(
4909 new SequencedSocketData(reads, 1, writes, arraysize(writes))); 5109 new SequencedSocketData(reads, 1, writes, arraysize(writes)));
4910 socket_factory_.AddSocketDataProvider(sequenced_socket_data.get()); 5110 socket_factory_.AddSocketDataProvider(sequenced_socket_data.get());
4911 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data)); 5111 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data));
4912 std::unique_ptr<SequencedSocketData> sequenced_socket_data1( 5112 std::unique_ptr<SequencedSocketData> sequenced_socket_data1(
4913 new SequencedSocketData(reads, 1, writes, arraysize(writes))); 5113 new SequencedSocketData(reads, 1, writes, arraysize(writes)));
4914 socket_factory_.AddSocketDataProvider(sequenced_socket_data1.get()); 5114 socket_factory_.AddSocketDataProvider(sequenced_socket_data1.get());
4915 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data1)); 5115 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data1));
4916 5116
4917 QuicStreamRequest request1(factory_.get()); 5117 QuicStreamRequest request1(factory_.get());
4918 EXPECT_EQ(ERR_IO_PENDING, 5118 EXPECT_EQ(
4919 request1.Request(destination, PRIVACY_MODE_DISABLED, 5119 ERR_IO_PENDING,
4920 /*cert_verify_flags=*/0, url1, "GET", net_log_, 5120 request1.Request(destination, advertised_versions_, PRIVACY_MODE_DISABLED,
4921 callback_.callback())); 5121 /*cert_verify_flags=*/0, url1, "GET", net_log_,
5122 callback_.callback()));
4922 EXPECT_EQ(OK, callback_.WaitForResult()); 5123 EXPECT_EQ(OK, callback_.WaitForResult());
4923 std::unique_ptr<HttpStream> stream1 = request1.CreateStream(); 5124 std::unique_ptr<HttpStream> stream1 = request1.CreateStream();
4924 EXPECT_TRUE(stream1.get()); 5125 EXPECT_TRUE(stream1.get());
4925 EXPECT_TRUE(HasActiveSession(origin1_)); 5126 EXPECT_TRUE(HasActiveSession(origin1_));
4926 5127
4927 TestCompletionCallback callback2; 5128 TestCompletionCallback callback2;
4928 QuicStreamRequest request2(factory_.get()); 5129 QuicStreamRequest request2(factory_.get());
4929 EXPECT_EQ(ERR_IO_PENDING, 5130 EXPECT_EQ(
4930 request2.Request(destination, PRIVACY_MODE_ENABLED, 5131 ERR_IO_PENDING,
4931 /*cert_verify_flags=*/0, url2, "GET", net_log_, 5132 request2.Request(destination, advertised_versions_, PRIVACY_MODE_ENABLED,
4932 callback2.callback())); 5133 /*cert_verify_flags=*/0, url2, "GET", net_log_,
5134 callback2.callback()));
4933 EXPECT_EQ(OK, callback2.WaitForResult()); 5135 EXPECT_EQ(OK, callback2.WaitForResult());
4934 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 5136 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
4935 EXPECT_TRUE(stream2.get()); 5137 EXPECT_TRUE(stream2.get());
4936 5138
4937 // |request2| does not pool to the first session, because PrivacyMode does not 5139 // |request2| does not pool to the first session, because PrivacyMode does not
4938 // match. Instead, another session is opened to the same destination, but 5140 // match. Instead, another session is opened to the same destination, but
4939 // with a different QuicServerId. 5141 // with a different QuicServerId.
4940 QuicChromiumClientSession::Handle* session1 = 5142 QuicChromiumClientSession::Handle* session1 =
4941 QuicHttpStreamPeer::GetSessionHandle(stream1.get()); 5143 QuicHttpStreamPeer::GetSessionHandle(stream1.get());
4942 QuicChromiumClientSession::Handle* session2 = 5144 QuicChromiumClientSession::Handle* session2 =
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
4992 new SequencedSocketData(reads, 1, writes, arraysize(writes))); 5194 new SequencedSocketData(reads, 1, writes, arraysize(writes)));
4993 socket_factory_.AddSocketDataProvider(sequenced_socket_data.get()); 5195 socket_factory_.AddSocketDataProvider(sequenced_socket_data.get());
4994 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data)); 5196 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data));
4995 std::unique_ptr<SequencedSocketData> sequenced_socket_data1( 5197 std::unique_ptr<SequencedSocketData> sequenced_socket_data1(
4996 new SequencedSocketData(reads, 1, writes, arraysize(writes))); 5198 new SequencedSocketData(reads, 1, writes, arraysize(writes)));
4997 socket_factory_.AddSocketDataProvider(sequenced_socket_data1.get()); 5199 socket_factory_.AddSocketDataProvider(sequenced_socket_data1.get());
4998 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data1)); 5200 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data1));
4999 5201
5000 QuicStreamRequest request1(factory_.get()); 5202 QuicStreamRequest request1(factory_.get());
5001 EXPECT_EQ(ERR_IO_PENDING, 5203 EXPECT_EQ(ERR_IO_PENDING,
5002 request1.Request(destination, privacy_mode_, 5204 request1.Request(destination, advertised_versions_, privacy_mode_,
5003 /*cert_verify_flags=*/0, url1, "GET", net_log_, 5205 /*cert_verify_flags=*/0, url1, "GET", net_log_,
5004 callback_.callback())); 5206 callback_.callback()));
5005 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 5207 EXPECT_THAT(callback_.WaitForResult(), IsOk());
5006 std::unique_ptr<HttpStream> stream1 = request1.CreateStream(); 5208 std::unique_ptr<HttpStream> stream1 = request1.CreateStream();
5007 EXPECT_TRUE(stream1.get()); 5209 EXPECT_TRUE(stream1.get());
5008 EXPECT_TRUE(HasActiveSession(origin1_)); 5210 EXPECT_TRUE(HasActiveSession(origin1_));
5009 5211
5010 TestCompletionCallback callback2; 5212 TestCompletionCallback callback2;
5011 QuicStreamRequest request2(factory_.get()); 5213 QuicStreamRequest request2(factory_.get());
5012 EXPECT_EQ(ERR_IO_PENDING, 5214 EXPECT_EQ(ERR_IO_PENDING,
5013 request2.Request(destination, privacy_mode_, 5215 request2.Request(destination, advertised_versions_, privacy_mode_,
5014 /*cert_verify_flags=*/0, url2, "GET", net_log_, 5216 /*cert_verify_flags=*/0, url2, "GET", net_log_,
5015 callback2.callback())); 5217 callback2.callback()));
5016 EXPECT_THAT(callback2.WaitForResult(), IsOk()); 5218 EXPECT_THAT(callback2.WaitForResult(), IsOk());
5017 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 5219 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
5018 EXPECT_TRUE(stream2.get()); 5220 EXPECT_TRUE(stream2.get());
5019 5221
5020 // |request2| does not pool to the first session, because the certificate does 5222 // |request2| does not pool to the first session, because the certificate does
5021 // not match. Instead, another session is opened to the same destination, but 5223 // not match. Instead, another session is opened to the same destination, but
5022 // with a different QuicServerId. 5224 // with a different QuicServerId.
5023 QuicChromiumClientSession::Handle* session1 = 5225 QuicChromiumClientSession::Handle* session1 =
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
5074 // Clear all cached states. 5276 // Clear all cached states.
5075 factory_->ClearCachedStatesInCryptoConfig( 5277 factory_->ClearCachedStatesInCryptoConfig(
5076 base::Callback<bool(const GURL&)>()); 5278 base::Callback<bool(const GURL&)>());
5077 EXPECT_TRUE(test_cases[0].state->certs().empty()); 5279 EXPECT_TRUE(test_cases[0].state->certs().empty());
5078 EXPECT_TRUE(test_cases[1].state->certs().empty()); 5280 EXPECT_TRUE(test_cases[1].state->certs().empty());
5079 EXPECT_TRUE(test_cases[2].state->certs().empty()); 5281 EXPECT_TRUE(test_cases[2].state->certs().empty());
5080 } 5282 }
5081 5283
5082 } // namespace test 5284 } // namespace test
5083 } // namespace net 5285 } // namespace net
OLDNEW
« net/quic/chromium/quic_stream_factory.cc ('K') | « net/quic/chromium/quic_stream_factory.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698