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

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

Issue 2894303002: Change HttpStreamFactoryImpl::Job to take a AlternativeServiceInfo
Patch Set: Change QuicStreamFactory::CreateSession() to take a QUIC version. Created 3 years, 7 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
« no previous file with comments | « net/quic/chromium/quic_stream_factory.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 // Should only be called if there is no active session for this destination. 276 // Should only be called if there is no active session for this destination.
277 EXPECT_FALSE(HasActiveSession(destination)); 277 EXPECT_FALSE(HasActiveSession(destination));
278 size_t socket_count = socket_factory_.udp_client_socket_ports().size(); 278 size_t socket_count = socket_factory_.udp_client_socket_ports().size();
279 279
280 MockQuicData socket_data; 280 MockQuicData socket_data;
281 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 281 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
282 socket_data.AddWrite(ConstructInitialSettingsPacket()); 282 socket_data.AddWrite(ConstructInitialSettingsPacket());
283 socket_data.AddSocketDataToFactory(&socket_factory_); 283 socket_data.AddSocketDataToFactory(&socket_factory_);
284 284
285 QuicStreamRequest request(factory_.get()); 285 QuicStreamRequest request(factory_.get());
286 QuicVersionVector advertised_versions;
287 advertised_versions.push_back(version_);
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 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 423 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
422 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 424 socket_data2.AddWrite(ConstructInitialSettingsPacket());
423 socket_data2.AddWrite( 425 socket_data2.AddWrite(
424 client_maker_.MakePingPacket(2, /*include_version=*/true)); 426 client_maker_.MakePingPacket(2, /*include_version=*/true));
425 socket_data2.AddWrite(client_maker_.MakeRstPacket( 427 socket_data2.AddWrite(client_maker_.MakeRstPacket(
426 3, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 428 3, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
427 socket_data2.AddSocketDataToFactory(&socket_factory_); 429 socket_data2.AddSocketDataToFactory(&socket_factory_);
428 430
429 // Create request and QuicHttpStream. 431 // Create request and QuicHttpStream.
430 QuicStreamRequest request(factory_.get()); 432 QuicStreamRequest request(factory_.get());
431 EXPECT_EQ(ERR_IO_PENDING, 433 QuicVersionVector advertised_versions;
432 request.Request(host_port_pair_, privacy_mode_, 434 advertised_versions.push_back(version_);
433 /*cert_verify_flags=*/0, url_, "GET", net_log_, 435 EXPECT_EQ(
434 callback_.callback())); 436 ERR_IO_PENDING,
437 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
438 /*cert_verify_flags=*/0, url_, "GET", net_log_,
439 callback_.callback()));
435 EXPECT_EQ(OK, callback_.WaitForResult()); 440 EXPECT_EQ(OK, callback_.WaitForResult());
436 441
437 // Run QuicChromiumClientSession::WriteToNewSocket() 442 // Run QuicChromiumClientSession::WriteToNewSocket()
438 // posted by QuicChromiumClientSession::MigrateToSocket(). 443 // posted by QuicChromiumClientSession::MigrateToSocket().
439 base::RunLoop().RunUntilIdle(); 444 base::RunLoop().RunUntilIdle();
440 445
441 std::unique_ptr<HttpStream> stream = request.CreateStream(); 446 std::unique_ptr<HttpStream> stream = request.CreateStream();
442 EXPECT_TRUE(stream.get()); 447 EXPECT_TRUE(stream.get());
443 448
444 // Cause QUIC stream to be created. 449 // Cause QUIC stream to be created.
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 604
600 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 605 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
601 "192.168.0.1", ""); 606 "192.168.0.1", "");
602 607
603 // Create a session and verify that the cached state is loaded. 608 // Create a session and verify that the cached state is loaded.
604 MockQuicData socket_data; 609 MockQuicData socket_data;
605 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 610 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
606 socket_data.AddSocketDataToFactory(&socket_factory_); 611 socket_data.AddSocketDataToFactory(&socket_factory_);
607 612
608 QuicStreamRequest request(factory_.get()); 613 QuicStreamRequest request(factory_.get());
614 QuicVersionVector advertised_versions;
615 advertised_versions.push_back(version_);
616
609 EXPECT_EQ(ERR_IO_PENDING, 617 EXPECT_EQ(ERR_IO_PENDING,
610 request.Request(quic_server_id.host_port_pair(), privacy_mode_, 618 request.Request(quic_server_id.host_port_pair(),
619 advertised_versions, privacy_mode_,
611 /*cert_verify_flags=*/0, url_, "GET", net_log_, 620 /*cert_verify_flags=*/0, url_, "GET", net_log_,
612 callback_.callback())); 621 callback_.callback()));
613 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 622 EXPECT_THAT(callback_.WaitForResult(), IsOk());
614 623
615 EXPECT_FALSE(QuicStreamFactoryPeer::CryptoConfigCacheIsEmpty( 624 EXPECT_FALSE(QuicStreamFactoryPeer::CryptoConfigCacheIsEmpty(
616 factory_.get(), quic_server_id)); 625 factory_.get(), quic_server_id));
617 QuicCryptoClientConfig* crypto_config = 626 QuicCryptoClientConfig* crypto_config =
618 QuicStreamFactoryPeer::GetCryptoConfig(factory_.get()); 627 QuicStreamFactoryPeer::GetCryptoConfig(factory_.get());
619 QuicCryptoClientConfig::CachedState* cached = 628 QuicCryptoClientConfig::CachedState* cached =
620 crypto_config->LookupOrCreate(quic_server_id); 629 crypto_config->LookupOrCreate(quic_server_id);
(...skipping 12 matching lines...) Expand all
633 // Create a session and verify that the cached state is loaded. 642 // Create a session and verify that the cached state is loaded.
634 MockQuicData socket_data2; 643 MockQuicData socket_data2;
635 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 644 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
636 socket_data2.AddSocketDataToFactory(&socket_factory_); 645 socket_data2.AddSocketDataToFactory(&socket_factory_);
637 646
638 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 647 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
639 "192.168.0.2", ""); 648 "192.168.0.2", "");
640 649
641 QuicStreamRequest request2(factory_.get()); 650 QuicStreamRequest request2(factory_.get());
642 EXPECT_EQ(ERR_IO_PENDING, 651 EXPECT_EQ(ERR_IO_PENDING,
643 request2.Request(quic_server_id2.host_port_pair(), privacy_mode_, 652 request2.Request(quic_server_id2.host_port_pair(),
653 advertised_versions, privacy_mode_,
644 /*cert_verify_flags=*/0, 654 /*cert_verify_flags=*/0,
645 GURL("https://mail.example.org/"), "GET", 655 GURL("https://mail.example.org/"), "GET",
646 net_log_, callback_.callback())); 656 net_log_, callback_.callback()));
647 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 657 EXPECT_THAT(callback_.WaitForResult(), IsOk());
648 658
649 EXPECT_FALSE(QuicStreamFactoryPeer::CryptoConfigCacheIsEmpty( 659 EXPECT_FALSE(QuicStreamFactoryPeer::CryptoConfigCacheIsEmpty(
650 factory_.get(), quic_server_id2)); 660 factory_.get(), quic_server_id2));
651 QuicCryptoClientConfig::CachedState* cached2 = 661 QuicCryptoClientConfig::CachedState* cached2 =
652 crypto_config->LookupOrCreate(quic_server_id2); 662 crypto_config->LookupOrCreate(quic_server_id2);
653 EXPECT_FALSE(cached2->server_config().empty()); 663 EXPECT_FALSE(cached2->server_config().empty());
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 Initialize(); 759 Initialize();
750 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 760 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
751 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 761 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
752 762
753 MockQuicData socket_data; 763 MockQuicData socket_data;
754 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 764 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
755 socket_data.AddWrite(ConstructInitialSettingsPacket()); 765 socket_data.AddWrite(ConstructInitialSettingsPacket());
756 socket_data.AddSocketDataToFactory(&socket_factory_); 766 socket_data.AddSocketDataToFactory(&socket_factory_);
757 767
758 QuicStreamRequest request(factory_.get()); 768 QuicStreamRequest request(factory_.get());
769 QuicVersionVector advertised_versions;
770 advertised_versions.push_back(version_);
771
759 EXPECT_EQ(ERR_IO_PENDING, 772 EXPECT_EQ(ERR_IO_PENDING,
760 request.Request(host_port_pair_, privacy_mode_, 773 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
761 /*cert_verify_flags=*/0, url_, "GET", net_log_, 774 /*cert_verify_flags=*/0, url_, "GET", net_log_,
762 callback_.callback())); 775 callback_.callback()));
763 776
764 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 777 EXPECT_THAT(callback_.WaitForResult(), IsOk());
765 std::unique_ptr<HttpStream> stream = request.CreateStream(); 778 std::unique_ptr<HttpStream> stream = request.CreateStream();
766 EXPECT_TRUE(stream.get()); 779 EXPECT_TRUE(stream.get());
767 780
768 QuicStreamRequest request2(factory_.get()); 781 QuicStreamRequest request2(factory_.get());
769 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_, 782 EXPECT_EQ(
770 /*cert_verify_flags=*/0, url_, "GET", net_log_, 783 OK, request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
771 callback_.callback())); 784 /*cert_verify_flags=*/0, url_, "GET", net_log_,
785 callback_.callback()));
772 // Will reset stream 3. 786 // Will reset stream 3.
773 stream = request2.CreateStream(); 787 stream = request2.CreateStream();
774 788
775 EXPECT_TRUE(stream.get()); 789 EXPECT_TRUE(stream.get());
776 790
777 // TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result 791 // TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result
778 // in streams on different sessions. 792 // in streams on different sessions.
779 QuicStreamRequest request3(factory_.get()); 793 QuicStreamRequest request3(factory_.get());
780 EXPECT_EQ(OK, request3.Request(host_port_pair_, privacy_mode_, 794 EXPECT_EQ(
781 /*cert_verify_flags=*/0, url_, "GET", net_log_, 795 OK, request3.Request(host_port_pair_, advertised_versions, privacy_mode_,
782 callback_.callback())); 796 /*cert_verify_flags=*/0, url_, "GET", net_log_,
797 callback_.callback()));
783 stream = request3.CreateStream(); // Will reset stream 5. 798 stream = request3.CreateStream(); // Will reset stream 5.
784 stream.reset(); // Will reset stream 7. 799 stream.reset(); // Will reset stream 7.
785 800
786 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 801 EXPECT_TRUE(socket_data.AllReadDataConsumed());
787 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 802 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
788 } 803 }
789 804
790 TEST_P(QuicStreamFactoryTest, CreateZeroRtt) { 805 TEST_P(QuicStreamFactoryTest, CreateZeroRtt) {
791 Initialize(); 806 Initialize();
792 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 807 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
793 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 808 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
794 809
795 MockQuicData socket_data; 810 MockQuicData socket_data;
796 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 811 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
797 socket_data.AddSocketDataToFactory(&socket_factory_); 812 socket_data.AddSocketDataToFactory(&socket_factory_);
798 813
799 crypto_client_stream_factory_.set_handshake_mode( 814 crypto_client_stream_factory_.set_handshake_mode(
800 MockCryptoClientStream::ZERO_RTT); 815 MockCryptoClientStream::ZERO_RTT);
801 host_resolver_.set_synchronous_mode(true); 816 host_resolver_.set_synchronous_mode(true);
802 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 817 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
803 "192.168.0.1", ""); 818 "192.168.0.1", "");
804 819
805 QuicStreamRequest request(factory_.get()); 820 QuicStreamRequest request(factory_.get());
806 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 821 QuicVersionVector advertised_versions;
807 /*cert_verify_flags=*/0, url_, "GET", net_log_, 822 advertised_versions.push_back(version_);
808 callback_.callback())); 823
824 EXPECT_EQ(OK,
825 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
826 /*cert_verify_flags=*/0, url_, "GET", net_log_,
827 callback_.callback()));
809 828
810 std::unique_ptr<HttpStream> stream = request.CreateStream(); 829 std::unique_ptr<HttpStream> stream = request.CreateStream();
811 EXPECT_TRUE(stream.get()); 830 EXPECT_TRUE(stream.get());
812 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 831 EXPECT_TRUE(socket_data.AllReadDataConsumed());
813 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 832 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
814 } 833 }
815 834
816 TEST_P(QuicStreamFactoryTest, CreateZeroRttPost) { 835 TEST_P(QuicStreamFactoryTest, CreateZeroRttPost) {
817 Initialize(); 836 Initialize();
818 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 837 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
819 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 838 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
820 839
821 MockQuicData socket_data; 840 MockQuicData socket_data;
822 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 841 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
823 socket_data.AddSocketDataToFactory(&socket_factory_); 842 socket_data.AddSocketDataToFactory(&socket_factory_);
824 843
825 crypto_client_stream_factory_.set_handshake_mode( 844 crypto_client_stream_factory_.set_handshake_mode(
826 MockCryptoClientStream::ZERO_RTT); 845 MockCryptoClientStream::ZERO_RTT);
827 host_resolver_.set_synchronous_mode(true); 846 host_resolver_.set_synchronous_mode(true);
828 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 847 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
829 "192.168.0.1", ""); 848 "192.168.0.1", "");
830 849
831 QuicStreamRequest request(factory_.get()); 850 QuicStreamRequest request(factory_.get());
832 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 851 QuicVersionVector advertised_versions;
833 /*cert_verify_flags=*/0, url_, "POST", net_log_, 852 advertised_versions.push_back(version_);
834 callback_.callback())); 853
854 EXPECT_EQ(OK,
855 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
856 /*cert_verify_flags=*/0, url_, "POST", net_log_,
857 callback_.callback()));
835 858
836 std::unique_ptr<HttpStream> stream = request.CreateStream(); 859 std::unique_ptr<HttpStream> stream = request.CreateStream();
837 EXPECT_TRUE(stream.get()); 860 EXPECT_TRUE(stream.get());
838 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 861 EXPECT_TRUE(socket_data.AllReadDataConsumed());
839 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 862 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
840 } 863 }
841 864
842 TEST_P(QuicStreamFactoryTest, DefaultInitialRtt) { 865 TEST_P(QuicStreamFactoryTest, DefaultInitialRtt) {
843 Initialize(); 866 Initialize();
844 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 867 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
845 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 868 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
846 869
847 MockQuicData socket_data; 870 MockQuicData socket_data;
848 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 871 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
849 socket_data.AddWrite(ConstructInitialSettingsPacket()); 872 socket_data.AddWrite(ConstructInitialSettingsPacket());
850 socket_data.AddSocketDataToFactory(&socket_factory_); 873 socket_data.AddSocketDataToFactory(&socket_factory_);
851 874
852 QuicStreamRequest request(factory_.get()); 875 QuicStreamRequest request(factory_.get());
876 QuicVersionVector advertised_versions;
877 advertised_versions.push_back(version_);
878
853 EXPECT_EQ(ERR_IO_PENDING, 879 EXPECT_EQ(ERR_IO_PENDING,
854 request.Request(host_port_pair_, privacy_mode_, 880 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
855 /*cert_verify_flags=*/0, url_, "GET", net_log_, 881 /*cert_verify_flags=*/0, url_, "GET", net_log_,
856 callback_.callback())); 882 callback_.callback()));
857 883
858 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 884 EXPECT_THAT(callback_.WaitForResult(), IsOk());
859 std::unique_ptr<HttpStream> stream = request.CreateStream(); 885 std::unique_ptr<HttpStream> stream = request.CreateStream();
860 EXPECT_TRUE(stream.get()); 886 EXPECT_TRUE(stream.get());
861 887
862 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 888 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
863 EXPECT_EQ(100000u, session->connection()->GetStats().srtt_us); 889 EXPECT_EQ(100000u, session->connection()->GetStats().srtt_us);
864 ASSERT_FALSE(session->config()->HasInitialRoundTripTimeUsToSend()); 890 ASSERT_FALSE(session->config()->HasInitialRoundTripTimeUsToSend());
865 } 891 }
866 892
867 TEST_P(QuicStreamFactoryTest, CachedInitialRtt) { 893 TEST_P(QuicStreamFactoryTest, CachedInitialRtt) {
868 ServerNetworkStats stats; 894 ServerNetworkStats stats;
869 stats.srtt = base::TimeDelta::FromMilliseconds(10); 895 stats.srtt = base::TimeDelta::FromMilliseconds(10);
870 http_server_properties_.SetServerNetworkStats(url::SchemeHostPort(url_), 896 http_server_properties_.SetServerNetworkStats(url::SchemeHostPort(url_),
871 stats); 897 stats);
872 estimate_initial_rtt_ = true; 898 estimate_initial_rtt_ = true;
873 899
874 Initialize(); 900 Initialize();
875 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 901 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
876 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 902 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
877 903
878 MockQuicData socket_data; 904 MockQuicData socket_data;
879 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 905 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
880 socket_data.AddWrite(ConstructInitialSettingsPacket()); 906 socket_data.AddWrite(ConstructInitialSettingsPacket());
881 socket_data.AddSocketDataToFactory(&socket_factory_); 907 socket_data.AddSocketDataToFactory(&socket_factory_);
882 908
883 QuicStreamRequest request(factory_.get()); 909 QuicStreamRequest request(factory_.get());
910 QuicVersionVector advertised_versions;
911 advertised_versions.push_back(version_);
912
884 EXPECT_EQ(ERR_IO_PENDING, 913 EXPECT_EQ(ERR_IO_PENDING,
885 request.Request(host_port_pair_, privacy_mode_, 914 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
886 /*cert_verify_flags=*/0, url_, "GET", net_log_, 915 /*cert_verify_flags=*/0, url_, "GET", net_log_,
887 callback_.callback())); 916 callback_.callback()));
888 917
889 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 918 EXPECT_THAT(callback_.WaitForResult(), IsOk());
890 std::unique_ptr<HttpStream> stream = request.CreateStream(); 919 std::unique_ptr<HttpStream> stream = request.CreateStream();
891 EXPECT_TRUE(stream.get()); 920 EXPECT_TRUE(stream.get());
892 921
893 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 922 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
894 EXPECT_EQ(10000u, session->connection()->GetStats().srtt_us); 923 EXPECT_EQ(10000u, session->connection()->GetStats().srtt_us);
895 ASSERT_TRUE(session->config()->HasInitialRoundTripTimeUsToSend()); 924 ASSERT_TRUE(session->config()->HasInitialRoundTripTimeUsToSend());
896 EXPECT_EQ(10000u, session->config()->GetInitialRoundTripTimeUsToSend()); 925 EXPECT_EQ(10000u, session->config()->GetInitialRoundTripTimeUsToSend());
897 } 926 }
898 927
899 TEST_P(QuicStreamFactoryTest, 2gInitialRtt) { 928 TEST_P(QuicStreamFactoryTest, 2gInitialRtt) {
900 ScopedMockNetworkChangeNotifier notifier; 929 ScopedMockNetworkChangeNotifier notifier;
901 notifier.mock_network_change_notifier()->SetConnectionType( 930 notifier.mock_network_change_notifier()->SetConnectionType(
902 NetworkChangeNotifier::CONNECTION_2G); 931 NetworkChangeNotifier::CONNECTION_2G);
903 estimate_initial_rtt_ = true; 932 estimate_initial_rtt_ = true;
904 933
905 Initialize(); 934 Initialize();
906 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 935 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
907 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 936 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
908 937
909 MockQuicData socket_data; 938 MockQuicData socket_data;
910 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 939 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
911 socket_data.AddWrite(ConstructInitialSettingsPacket()); 940 socket_data.AddWrite(ConstructInitialSettingsPacket());
912 socket_data.AddSocketDataToFactory(&socket_factory_); 941 socket_data.AddSocketDataToFactory(&socket_factory_);
913 942
914 QuicStreamRequest request(factory_.get()); 943 QuicStreamRequest request(factory_.get());
944 QuicVersionVector advertised_versions;
945 advertised_versions.push_back(version_);
946
915 EXPECT_EQ(ERR_IO_PENDING, 947 EXPECT_EQ(ERR_IO_PENDING,
916 request.Request(host_port_pair_, privacy_mode_, 948 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
917 /*cert_verify_flags=*/0, url_, "GET", net_log_, 949 /*cert_verify_flags=*/0, url_, "GET", net_log_,
918 callback_.callback())); 950 callback_.callback()));
919 951
920 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 952 EXPECT_THAT(callback_.WaitForResult(), IsOk());
921 std::unique_ptr<HttpStream> stream = request.CreateStream(); 953 std::unique_ptr<HttpStream> stream = request.CreateStream();
922 EXPECT_TRUE(stream.get()); 954 EXPECT_TRUE(stream.get());
923 955
924 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 956 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
925 EXPECT_EQ(1200000u, session->connection()->GetStats().srtt_us); 957 EXPECT_EQ(1200000u, session->connection()->GetStats().srtt_us);
926 ASSERT_TRUE(session->config()->HasInitialRoundTripTimeUsToSend()); 958 ASSERT_TRUE(session->config()->HasInitialRoundTripTimeUsToSend());
927 EXPECT_EQ(1200000u, session->config()->GetInitialRoundTripTimeUsToSend()); 959 EXPECT_EQ(1200000u, session->config()->GetInitialRoundTripTimeUsToSend());
928 } 960 }
929 961
930 TEST_P(QuicStreamFactoryTest, 3gInitialRtt) { 962 TEST_P(QuicStreamFactoryTest, 3gInitialRtt) {
931 ScopedMockNetworkChangeNotifier notifier; 963 ScopedMockNetworkChangeNotifier notifier;
932 notifier.mock_network_change_notifier()->SetConnectionType( 964 notifier.mock_network_change_notifier()->SetConnectionType(
933 NetworkChangeNotifier::CONNECTION_3G); 965 NetworkChangeNotifier::CONNECTION_3G);
934 estimate_initial_rtt_ = true; 966 estimate_initial_rtt_ = true;
935 967
936 Initialize(); 968 Initialize();
937 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 969 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
938 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 970 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
939 971
940 MockQuicData socket_data; 972 MockQuicData socket_data;
941 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 973 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
942 socket_data.AddWrite(ConstructInitialSettingsPacket()); 974 socket_data.AddWrite(ConstructInitialSettingsPacket());
943 socket_data.AddSocketDataToFactory(&socket_factory_); 975 socket_data.AddSocketDataToFactory(&socket_factory_);
944 976
945 QuicStreamRequest request(factory_.get()); 977 QuicStreamRequest request(factory_.get());
978 QuicVersionVector advertised_versions;
979 advertised_versions.push_back(version_);
980
946 EXPECT_EQ(ERR_IO_PENDING, 981 EXPECT_EQ(ERR_IO_PENDING,
947 request.Request(host_port_pair_, privacy_mode_, 982 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
948 /*cert_verify_flags=*/0, url_, "GET", net_log_, 983 /*cert_verify_flags=*/0, url_, "GET", net_log_,
949 callback_.callback())); 984 callback_.callback()));
950 985
951 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 986 EXPECT_THAT(callback_.WaitForResult(), IsOk());
952 std::unique_ptr<HttpStream> stream = request.CreateStream(); 987 std::unique_ptr<HttpStream> stream = request.CreateStream();
953 EXPECT_TRUE(stream.get()); 988 EXPECT_TRUE(stream.get());
954 989
955 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 990 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
956 EXPECT_EQ(400000u, session->connection()->GetStats().srtt_us); 991 EXPECT_EQ(400000u, session->connection()->GetStats().srtt_us);
957 ASSERT_TRUE(session->config()->HasInitialRoundTripTimeUsToSend()); 992 ASSERT_TRUE(session->config()->HasInitialRoundTripTimeUsToSend());
958 EXPECT_EQ(400000u, session->config()->GetInitialRoundTripTimeUsToSend()); 993 EXPECT_EQ(400000u, session->config()->GetInitialRoundTripTimeUsToSend());
959 } 994 }
960 995
961 TEST_P(QuicStreamFactoryTest, GoAway) { 996 TEST_P(QuicStreamFactoryTest, GoAway) {
962 Initialize(); 997 Initialize();
963 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 998 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
964 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 999 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
965 1000
966 MockQuicData socket_data; 1001 MockQuicData socket_data;
967 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1002 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
968 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1003 socket_data.AddWrite(ConstructInitialSettingsPacket());
969 socket_data.AddSocketDataToFactory(&socket_factory_); 1004 socket_data.AddSocketDataToFactory(&socket_factory_);
970 1005
971 QuicStreamRequest request(factory_.get()); 1006 QuicStreamRequest request(factory_.get());
1007 QuicVersionVector advertised_versions;
1008 advertised_versions.push_back(version_);
1009
972 EXPECT_EQ(ERR_IO_PENDING, 1010 EXPECT_EQ(ERR_IO_PENDING,
973 request.Request(host_port_pair_, privacy_mode_, 1011 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
974 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1012 /*cert_verify_flags=*/0, url_, "GET", net_log_,
975 callback_.callback())); 1013 callback_.callback()));
976 1014
977 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1015 EXPECT_THAT(callback_.WaitForResult(), IsOk());
978 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1016 std::unique_ptr<HttpStream> stream = request.CreateStream();
979 EXPECT_TRUE(stream.get()); 1017 EXPECT_TRUE(stream.get());
980 1018
981 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 1019 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
982 1020
983 session->OnGoAway(QuicGoAwayFrame()); 1021 session->OnGoAway(QuicGoAwayFrame());
984 1022
985 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1023 EXPECT_FALSE(HasActiveSession(host_port_pair_));
986 1024
987 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1025 EXPECT_TRUE(socket_data.AllReadDataConsumed());
988 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1026 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
989 } 1027 }
990 1028
991 TEST_P(QuicStreamFactoryTest, GoAwayForConnectionMigrationWithPortOnly) { 1029 TEST_P(QuicStreamFactoryTest, GoAwayForConnectionMigrationWithPortOnly) {
992 Initialize(); 1030 Initialize();
993 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1031 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
994 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1032 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
995 1033
996 MockQuicData socket_data; 1034 MockQuicData socket_data;
997 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1035 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
998 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1036 socket_data.AddWrite(ConstructInitialSettingsPacket());
999 socket_data.AddSocketDataToFactory(&socket_factory_); 1037 socket_data.AddSocketDataToFactory(&socket_factory_);
1000 1038
1001 QuicStreamRequest request(factory_.get()); 1039 QuicStreamRequest request(factory_.get());
1040 QuicVersionVector advertised_versions;
1041 advertised_versions.push_back(version_);
1042
1002 EXPECT_EQ(ERR_IO_PENDING, 1043 EXPECT_EQ(ERR_IO_PENDING,
1003 request.Request(host_port_pair_, privacy_mode_, 1044 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
1004 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1045 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1005 callback_.callback())); 1046 callback_.callback()));
1006 1047
1007 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1048 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1008 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1049 std::unique_ptr<HttpStream> stream = request.CreateStream();
1009 EXPECT_TRUE(stream.get()); 1050 EXPECT_TRUE(stream.get());
1010 1051
1011 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 1052 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
1012 1053
1013 session->OnGoAway( 1054 session->OnGoAway(
(...skipping 23 matching lines...) Expand all
1037 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1078 socket_data.AddWrite(ConstructInitialSettingsPacket());
1038 socket_data.AddSocketDataToFactory(&socket_factory_); 1079 socket_data.AddSocketDataToFactory(&socket_factory_);
1039 1080
1040 HostPortPair server2(kServer2HostName, kDefaultServerPort); 1081 HostPortPair server2(kServer2HostName, kDefaultServerPort);
1041 host_resolver_.set_synchronous_mode(true); 1082 host_resolver_.set_synchronous_mode(true);
1042 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 1083 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
1043 "192.168.0.1", ""); 1084 "192.168.0.1", "");
1044 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1085 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
1045 1086
1046 QuicStreamRequest request(factory_.get()); 1087 QuicStreamRequest request(factory_.get());
1047 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 1088 QuicVersionVector advertised_versions;
1048 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1089 advertised_versions.push_back(version_);
1049 callback_.callback())); 1090
1091 EXPECT_EQ(OK,
1092 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
1093 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1094 callback_.callback()));
1050 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1095 std::unique_ptr<HttpStream> stream = request.CreateStream();
1051 EXPECT_TRUE(stream.get()); 1096 EXPECT_TRUE(stream.get());
1052 1097
1053 TestCompletionCallback callback; 1098 TestCompletionCallback callback;
1054 QuicStreamRequest request2(factory_.get()); 1099 QuicStreamRequest request2(factory_.get());
1055 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 1100 EXPECT_EQ(OK, request2.Request(server2, advertised_versions, privacy_mode_,
1056 /*cert_verify_flags=*/0, url2_, "GET", 1101 /*cert_verify_flags=*/0, url2_, "GET",
1057 net_log_, callback.callback())); 1102 net_log_, callback.callback()));
1058 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1103 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1059 EXPECT_TRUE(stream2.get()); 1104 EXPECT_TRUE(stream2.get());
1060 1105
1061 EXPECT_EQ(GetActiveSession(host_port_pair_), GetActiveSession(server2)); 1106 EXPECT_EQ(GetActiveSession(host_port_pair_), GetActiveSession(server2));
1062 1107
1063 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1108 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1064 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1109 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1065 } 1110 }
(...skipping 28 matching lines...) Expand all
1094 socket_factory_.AddSocketDataProvider(&socket_data); 1139 socket_factory_.AddSocketDataProvider(&socket_data);
1095 1140
1096 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1141 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1097 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1142 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1098 QuicConfig config2; 1143 QuicConfig config2;
1099 crypto_client_stream_factory_.SetConfig(config2); 1144 crypto_client_stream_factory_.SetConfig(config2);
1100 1145
1101 // Create new request to cause new session creation. 1146 // Create new request to cause new session creation.
1102 TestCompletionCallback callback; 1147 TestCompletionCallback callback;
1103 QuicStreamRequest request2(factory_.get()); 1148 QuicStreamRequest request2(factory_.get());
1149 QuicVersionVector advertised_versions;
1150 advertised_versions.push_back(version_);
1151
1104 EXPECT_EQ(ERR_IO_PENDING, 1152 EXPECT_EQ(ERR_IO_PENDING,
1105 request2.Request(server2, privacy_mode_, 1153 request2.Request(server2, advertised_versions, privacy_mode_,
1106 /*cert_verify_flags=*/0, url2_, "GET", net_log_, 1154 /*cert_verify_flags=*/0, url2_, "GET", net_log_,
1107 callback.callback())); 1155 callback.callback()));
1108 EXPECT_EQ(OK, callback.WaitForResult()); 1156 EXPECT_EQ(OK, callback.WaitForResult());
1109 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1157 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1110 EXPECT_TRUE(stream2.get()); 1158 EXPECT_TRUE(stream2.get());
1111 1159
1112 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1160 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1113 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1161 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1114 // EXPECT_EQ(GetActiveSession(host_port_pair_), GetActiveSession(server2)); 1162 // EXPECT_EQ(GetActiveSession(host_port_pair_), GetActiveSession(server2));
1115 } 1163 }
(...skipping 13 matching lines...) Expand all
1129 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 1177 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1130 socket_data2.AddSocketDataToFactory(&socket_factory_); 1178 socket_data2.AddSocketDataToFactory(&socket_factory_);
1131 1179
1132 HostPortPair server2(kServer2HostName, kDefaultServerPort); 1180 HostPortPair server2(kServer2HostName, kDefaultServerPort);
1133 host_resolver_.set_synchronous_mode(true); 1181 host_resolver_.set_synchronous_mode(true);
1134 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 1182 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
1135 "192.168.0.1", ""); 1183 "192.168.0.1", "");
1136 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1184 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
1137 1185
1138 QuicStreamRequest request(factory_.get()); 1186 QuicStreamRequest request(factory_.get());
1139 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 1187 QuicVersionVector advertised_versions;
1140 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1188 advertised_versions.push_back(version_);
1141 callback_.callback())); 1189
1190 EXPECT_EQ(OK,
1191 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
1192 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1193 callback_.callback()));
1142 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1194 std::unique_ptr<HttpStream> stream = request.CreateStream();
1143 EXPECT_TRUE(stream.get()); 1195 EXPECT_TRUE(stream.get());
1144 1196
1145 TestCompletionCallback callback; 1197 TestCompletionCallback callback;
1146 QuicStreamRequest request2(factory_.get()); 1198 QuicStreamRequest request2(factory_.get());
1147 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 1199 EXPECT_EQ(OK, request2.Request(server2, advertised_versions, privacy_mode_,
1148 /*cert_verify_flags=*/0, url2_, "GET", 1200 /*cert_verify_flags=*/0, url2_, "GET",
1149 net_log_, callback.callback())); 1201 net_log_, callback.callback()));
1150 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1202 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1151 EXPECT_TRUE(stream2.get()); 1203 EXPECT_TRUE(stream2.get());
1152 1204
1153 factory_->OnSessionGoingAway(GetActiveSession(host_port_pair_)); 1205 factory_->OnSessionGoingAway(GetActiveSession(host_port_pair_));
1154 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1206 EXPECT_FALSE(HasActiveSession(host_port_pair_));
1155 EXPECT_FALSE(HasActiveSession(server2)); 1207 EXPECT_FALSE(HasActiveSession(server2));
1156 1208
1157 TestCompletionCallback callback3; 1209 TestCompletionCallback callback3;
1158 QuicStreamRequest request3(factory_.get()); 1210 QuicStreamRequest request3(factory_.get());
1159 EXPECT_EQ(OK, request3.Request(server2, privacy_mode_, 1211 EXPECT_EQ(OK, request3.Request(server2, advertised_versions, privacy_mode_,
1160 /*cert_verify_flags=*/0, url2_, "GET", 1212 /*cert_verify_flags=*/0, url2_, "GET",
1161 net_log_, callback3.callback())); 1213 net_log_, callback3.callback()));
1162 std::unique_ptr<HttpStream> stream3 = request3.CreateStream(); 1214 std::unique_ptr<HttpStream> stream3 = request3.CreateStream();
1163 EXPECT_TRUE(stream3.get()); 1215 EXPECT_TRUE(stream3.get());
1164 1216
1165 EXPECT_TRUE(HasActiveSession(server2)); 1217 EXPECT_TRUE(HasActiveSession(server2));
1166 1218
1167 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 1219 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
1168 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 1220 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
1169 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1221 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
(...skipping 12 matching lines...) Expand all
1182 HostPortPair server2(kServer2HostName, 443); 1234 HostPortPair server2(kServer2HostName, 443);
1183 1235
1184 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1236 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1185 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1237 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1186 1238
1187 host_resolver_.set_synchronous_mode(true); 1239 host_resolver_.set_synchronous_mode(true);
1188 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 1240 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
1189 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1241 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
1190 1242
1191 QuicStreamRequest request(factory_.get()); 1243 QuicStreamRequest request(factory_.get());
1192 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 1244 QuicVersionVector advertised_versions;
1245 advertised_versions.push_back(version_);
1246
1247 EXPECT_EQ(OK, request.Request(server1, advertised_versions, privacy_mode_,
1193 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1248 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1194 callback_.callback())); 1249 callback_.callback()));
1195 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1250 std::unique_ptr<HttpStream> stream = request.CreateStream();
1196 EXPECT_TRUE(stream.get()); 1251 EXPECT_TRUE(stream.get());
1197 1252
1198 TestCompletionCallback callback; 1253 TestCompletionCallback callback;
1199 QuicStreamRequest request2(factory_.get()); 1254 QuicStreamRequest request2(factory_.get());
1200 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 1255 EXPECT_EQ(OK, request2.Request(server2, advertised_versions, privacy_mode_,
1201 /*cert_verify_flags=*/0, url2_, "GET", 1256 /*cert_verify_flags=*/0, url2_, "GET",
1202 net_log_, callback_.callback())); 1257 net_log_, callback_.callback()));
1203 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1258 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1204 EXPECT_TRUE(stream2.get()); 1259 EXPECT_TRUE(stream2.get());
1205 1260
1206 EXPECT_EQ(GetActiveSession(server1), GetActiveSession(server2)); 1261 EXPECT_EQ(GetActiveSession(server1), GetActiveSession(server2));
1207 1262
1208 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1263 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1209 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1264 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1210 } 1265 }
(...skipping 15 matching lines...) Expand all
1226 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1281 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1227 verify_details.cert_verify_result.public_key_hashes.push_back( 1282 verify_details.cert_verify_result.public_key_hashes.push_back(
1228 test::GetTestHashValue(primary_pin)); 1283 test::GetTestHashValue(primary_pin));
1229 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1284 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1230 1285
1231 host_resolver_.set_synchronous_mode(true); 1286 host_resolver_.set_synchronous_mode(true);
1232 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 1287 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
1233 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1288 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
1234 1289
1235 QuicStreamRequest request(factory_.get()); 1290 QuicStreamRequest request(factory_.get());
1236 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 1291 QuicVersionVector advertised_versions;
1292 advertised_versions.push_back(version_);
1293 EXPECT_EQ(OK, request.Request(server1, advertised_versions, privacy_mode_,
1237 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1294 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1238 callback_.callback())); 1295 callback_.callback()));
1239 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1296 std::unique_ptr<HttpStream> stream = request.CreateStream();
1240 EXPECT_TRUE(stream.get()); 1297 EXPECT_TRUE(stream.get());
1241 1298
1242 TestCompletionCallback callback; 1299 TestCompletionCallback callback;
1243 QuicStreamRequest request2(factory_.get()); 1300 QuicStreamRequest request2(factory_.get());
1244 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 1301 EXPECT_EQ(OK, request2.Request(server2, advertised_versions, privacy_mode_,
1245 /*cert_verify_flags=*/0, url2_, "GET", 1302 /*cert_verify_flags=*/0, url2_, "GET",
1246 net_log_, callback_.callback())); 1303 net_log_, callback_.callback()));
1247 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1304 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1248 EXPECT_TRUE(stream2.get()); 1305 EXPECT_TRUE(stream2.get());
1249 1306
1250 EXPECT_EQ(GetActiveSession(server1), GetActiveSession(server2)); 1307 EXPECT_EQ(GetActiveSession(server1), GetActiveSession(server2));
1251 1308
1252 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1309 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1253 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1310 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1254 } 1311 }
(...skipping 26 matching lines...) Expand all
1281 ProofVerifyDetailsChromium verify_details2 = DefaultProofVerifyDetails(); 1338 ProofVerifyDetailsChromium verify_details2 = DefaultProofVerifyDetails();
1282 verify_details2.cert_verify_result.public_key_hashes.push_back( 1339 verify_details2.cert_verify_result.public_key_hashes.push_back(
1283 test::GetTestHashValue(primary_pin)); 1340 test::GetTestHashValue(primary_pin));
1284 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2); 1341 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2);
1285 1342
1286 host_resolver_.set_synchronous_mode(true); 1343 host_resolver_.set_synchronous_mode(true);
1287 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 1344 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
1288 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1345 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
1289 1346
1290 QuicStreamRequest request(factory_.get()); 1347 QuicStreamRequest request(factory_.get());
1291 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 1348 QuicVersionVector advertised_versions;
1349 advertised_versions.push_back(version_);
1350 EXPECT_EQ(OK, request.Request(server1, advertised_versions, privacy_mode_,
1292 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1351 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1293 callback_.callback())); 1352 callback_.callback()));
1294 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1353 std::unique_ptr<HttpStream> stream = request.CreateStream();
1295 EXPECT_TRUE(stream.get()); 1354 EXPECT_TRUE(stream.get());
1296 1355
1297 TestCompletionCallback callback; 1356 TestCompletionCallback callback;
1298 QuicStreamRequest request2(factory_.get()); 1357 QuicStreamRequest request2(factory_.get());
1299 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 1358 EXPECT_EQ(OK, request2.Request(server2, advertised_versions, privacy_mode_,
1300 /*cert_verify_flags=*/0, url2_, "GET", 1359 /*cert_verify_flags=*/0, url2_, "GET",
1301 net_log_, callback_.callback())); 1360 net_log_, callback_.callback()));
1302 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1361 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1303 EXPECT_TRUE(stream2.get()); 1362 EXPECT_TRUE(stream2.get());
1304 1363
1305 EXPECT_NE(GetActiveSession(server1), GetActiveSession(server2)); 1364 EXPECT_NE(GetActiveSession(server1), GetActiveSession(server2));
1306 1365
1307 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 1366 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
1308 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 1367 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
1309 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1368 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1310 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1369 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1311 } 1370 }
1312 1371
1313 TEST_P(QuicStreamFactoryTest, Goaway) { 1372 TEST_P(QuicStreamFactoryTest, Goaway) {
1314 Initialize(); 1373 Initialize();
1315 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1374 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1316 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1375 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1317 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1376 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1318 1377
1319 MockQuicData socket_data; 1378 MockQuicData socket_data;
1320 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1379 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1321 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1380 socket_data.AddWrite(ConstructInitialSettingsPacket());
1322 socket_data.AddSocketDataToFactory(&socket_factory_); 1381 socket_data.AddSocketDataToFactory(&socket_factory_);
1323 MockQuicData socket_data2; 1382 MockQuicData socket_data2;
1324 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1383 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1325 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 1384 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1326 socket_data2.AddSocketDataToFactory(&socket_factory_); 1385 socket_data2.AddSocketDataToFactory(&socket_factory_);
1327 1386
1328 QuicStreamRequest request(factory_.get()); 1387 QuicStreamRequest request(factory_.get());
1388 QuicVersionVector advertised_versions;
1389 advertised_versions.push_back(version_);
1329 EXPECT_EQ(ERR_IO_PENDING, 1390 EXPECT_EQ(ERR_IO_PENDING,
1330 request.Request(host_port_pair_, privacy_mode_, 1391 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
1331 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1392 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1332 callback_.callback())); 1393 callback_.callback()));
1333 1394
1334 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1395 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1335 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1396 std::unique_ptr<HttpStream> stream = request.CreateStream();
1336 EXPECT_TRUE(stream.get()); 1397 EXPECT_TRUE(stream.get());
1337 1398
1338 // Mark the session as going away. Ensure that while it is still alive 1399 // Mark the session as going away. Ensure that while it is still alive
1339 // that it is no longer active. 1400 // that it is no longer active.
1340 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 1401 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
1341 factory_->OnSessionGoingAway(session); 1402 factory_->OnSessionGoingAway(session);
1342 EXPECT_EQ(true, 1403 EXPECT_EQ(true,
1343 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1404 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
1344 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1405 EXPECT_FALSE(HasActiveSession(host_port_pair_));
1345 1406
1346 // Create a new request for the same destination and verify that a 1407 // Create a new request for the same destination and verify that a
1347 // new session is created. 1408 // new session is created.
1348 QuicStreamRequest request2(factory_.get()); 1409 QuicStreamRequest request2(factory_.get());
1349 EXPECT_EQ(ERR_IO_PENDING, 1410 EXPECT_EQ(
1350 request2.Request(host_port_pair_, privacy_mode_, 1411 ERR_IO_PENDING,
1351 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1412 request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
1352 callback_.callback())); 1413 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1414 callback_.callback()));
1353 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1415 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1354 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1416 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1355 EXPECT_TRUE(stream2.get()); 1417 EXPECT_TRUE(stream2.get());
1356 1418
1357 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 1419 EXPECT_TRUE(HasActiveSession(host_port_pair_));
1358 EXPECT_NE(session, GetActiveSession(host_port_pair_)); 1420 EXPECT_NE(session, GetActiveSession(host_port_pair_));
1359 EXPECT_EQ(true, 1421 EXPECT_EQ(true,
1360 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1422 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
1361 1423
1362 stream2.reset(); 1424 stream2.reset();
(...skipping 15 matching lines...) Expand all
1378 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1440 socket_data.AddWrite(ConstructInitialSettingsPacket());
1379 socket_data.AddWrite( 1441 socket_data.AddWrite(
1380 client_maker_.MakeRstPacket(2, true, stream_id, QUIC_STREAM_CANCELLED)); 1442 client_maker_.MakeRstPacket(2, true, stream_id, QUIC_STREAM_CANCELLED));
1381 socket_data.AddRead( 1443 socket_data.AddRead(
1382 server_maker_.MakeRstPacket(1, false, stream_id, QUIC_STREAM_CANCELLED)); 1444 server_maker_.MakeRstPacket(1, false, stream_id, QUIC_STREAM_CANCELLED));
1383 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1445 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1384 socket_data.AddSocketDataToFactory(&socket_factory_); 1446 socket_data.AddSocketDataToFactory(&socket_factory_);
1385 1447
1386 HttpRequestInfo request_info; 1448 HttpRequestInfo request_info;
1387 std::vector<std::unique_ptr<HttpStream>> streams; 1449 std::vector<std::unique_ptr<HttpStream>> streams;
1450 QuicVersionVector advertised_versions;
1451 advertised_versions.push_back(version_);
1388 // The MockCryptoClientStream sets max_open_streams to be 1452 // The MockCryptoClientStream sets max_open_streams to be
1389 // kDefaultMaxStreamsPerConnection / 2. 1453 // kDefaultMaxStreamsPerConnection / 2.
1390 for (size_t i = 0; i < kDefaultMaxStreamsPerConnection / 2; i++) { 1454 for (size_t i = 0; i < kDefaultMaxStreamsPerConnection / 2; i++) {
1391 QuicStreamRequest request(factory_.get()); 1455 QuicStreamRequest request(factory_.get());
1392 int rv = request.Request(host_port_pair_, privacy_mode_, 1456 int rv = request.Request(
1393 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1457 host_port_pair_, advertised_versions, privacy_mode_,
1394 callback_.callback()); 1458 /*cert_verify_flags=*/0, url_, "GET", net_log_, callback_.callback());
1395 if (i == 0) { 1459 if (i == 0) {
1396 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 1460 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1397 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1461 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1398 } else { 1462 } else {
1399 EXPECT_THAT(rv, IsOk()); 1463 EXPECT_THAT(rv, IsOk());
1400 } 1464 }
1401 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1465 std::unique_ptr<HttpStream> stream = request.CreateStream();
1402 EXPECT_TRUE(stream); 1466 EXPECT_TRUE(stream);
1403 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1467 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1404 net_log_, CompletionCallback())); 1468 net_log_, CompletionCallback()));
1405 streams.push_back(std::move(stream)); 1469 streams.push_back(std::move(stream));
1406 } 1470 }
1407 1471
1408 QuicStreamRequest request(factory_.get()); 1472 QuicStreamRequest request(factory_.get());
1409 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 1473 EXPECT_EQ(OK,
1410 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1474 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
1411 CompletionCallback())); 1475 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1476 CompletionCallback()));
1412 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1477 std::unique_ptr<HttpStream> stream = request.CreateStream();
1413 EXPECT_TRUE(stream); 1478 EXPECT_TRUE(stream);
1414 EXPECT_EQ(ERR_IO_PENDING, 1479 EXPECT_EQ(ERR_IO_PENDING,
1415 stream->InitializeStream(&request_info, DEFAULT_PRIORITY, net_log_, 1480 stream->InitializeStream(&request_info, DEFAULT_PRIORITY, net_log_,
1416 callback_.callback())); 1481 callback_.callback()));
1417 1482
1418 // Close the first stream. 1483 // Close the first stream.
1419 streams.front()->Close(false); 1484 streams.front()->Close(false);
1420 // Trigger exchange of RSTs that in turn allow progress for the last 1485 // Trigger exchange of RSTs that in turn allow progress for the last
1421 // stream. 1486 // stream.
(...skipping 11 matching lines...) Expand all
1433 } 1498 }
1434 1499
1435 TEST_P(QuicStreamFactoryTest, ResolutionErrorInCreate) { 1500 TEST_P(QuicStreamFactoryTest, ResolutionErrorInCreate) {
1436 Initialize(); 1501 Initialize();
1437 MockQuicData socket_data; 1502 MockQuicData socket_data;
1438 socket_data.AddSocketDataToFactory(&socket_factory_); 1503 socket_data.AddSocketDataToFactory(&socket_factory_);
1439 1504
1440 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName); 1505 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName);
1441 1506
1442 QuicStreamRequest request(factory_.get()); 1507 QuicStreamRequest request(factory_.get());
1508 QuicVersionVector advertised_versions;
1509 advertised_versions.push_back(version_);
1443 EXPECT_EQ(ERR_IO_PENDING, 1510 EXPECT_EQ(ERR_IO_PENDING,
1444 request.Request(host_port_pair_, privacy_mode_, 1511 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
1445 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1512 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1446 callback_.callback())); 1513 callback_.callback()));
1447 1514
1448 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_NAME_NOT_RESOLVED)); 1515 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_NAME_NOT_RESOLVED));
1449 1516
1450 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1517 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1451 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1518 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1452 } 1519 }
1453 1520
1454 TEST_P(QuicStreamFactoryTest, ConnectErrorInCreate) { 1521 TEST_P(QuicStreamFactoryTest, ConnectErrorInCreate) {
1455 Initialize(); 1522 Initialize();
1456 1523
1457 MockQuicData socket_data; 1524 MockQuicData socket_data;
1458 socket_data.AddConnect(SYNCHRONOUS, ERR_ADDRESS_IN_USE); 1525 socket_data.AddConnect(SYNCHRONOUS, ERR_ADDRESS_IN_USE);
1459 socket_data.AddSocketDataToFactory(&socket_factory_); 1526 socket_data.AddSocketDataToFactory(&socket_factory_);
1460 1527
1461 QuicStreamRequest request(factory_.get()); 1528 QuicStreamRequest request(factory_.get());
1529 QuicVersionVector advertised_versions;
1530 advertised_versions.push_back(version_);
1462 EXPECT_EQ(ERR_IO_PENDING, 1531 EXPECT_EQ(ERR_IO_PENDING,
1463 request.Request(host_port_pair_, privacy_mode_, 1532 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
1464 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1533 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1465 callback_.callback())); 1534 callback_.callback()));
1466 1535
1467 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_ADDRESS_IN_USE)); 1536 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_ADDRESS_IN_USE));
1468 1537
1469 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1538 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1470 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1539 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1471 } 1540 }
1472 1541
1473 TEST_P(QuicStreamFactoryTest, CancelCreate) { 1542 TEST_P(QuicStreamFactoryTest, CancelCreate) {
1474 Initialize(); 1543 Initialize();
1475 MockQuicData socket_data; 1544 MockQuicData socket_data;
1476 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1545 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1477 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1546 socket_data.AddWrite(ConstructInitialSettingsPacket());
1478 socket_data.AddSocketDataToFactory(&socket_factory_); 1547 socket_data.AddSocketDataToFactory(&socket_factory_);
1548 QuicVersionVector advertised_versions;
1549 advertised_versions.push_back(version_);
1479 { 1550 {
1480 QuicStreamRequest request(factory_.get()); 1551 QuicStreamRequest request(factory_.get());
1481 EXPECT_EQ(ERR_IO_PENDING, 1552 EXPECT_EQ(
1482 request.Request(host_port_pair_, privacy_mode_, 1553 ERR_IO_PENDING,
1483 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1554 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
1484 callback_.callback())); 1555 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1556 callback_.callback()));
1485 } 1557 }
1486 1558
1487 base::RunLoop().RunUntilIdle(); 1559 base::RunLoop().RunUntilIdle();
1488 1560
1489 QuicStreamRequest request2(factory_.get()); 1561 QuicStreamRequest request2(factory_.get());
1490 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_, 1562 EXPECT_EQ(
1491 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1563 OK, request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
1492 callback_.callback())); 1564 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1565 callback_.callback()));
1493 std::unique_ptr<HttpStream> stream = request2.CreateStream(); 1566 std::unique_ptr<HttpStream> stream = request2.CreateStream();
1494 1567
1495 EXPECT_TRUE(stream.get()); 1568 EXPECT_TRUE(stream.get());
1496 stream.reset(); 1569 stream.reset();
1497 1570
1498 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1571 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1499 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1572 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1500 } 1573 }
1501 1574
1502 TEST_P(QuicStreamFactoryTest, CloseAllSessions) { 1575 TEST_P(QuicStreamFactoryTest, CloseAllSessions) {
1503 Initialize(); 1576 Initialize();
1504 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1577 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1505 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1578 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1506 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1579 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1507 1580
1508 MockQuicData socket_data; 1581 MockQuicData socket_data;
1509 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1582 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1510 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1583 socket_data.AddWrite(ConstructInitialSettingsPacket());
1511 socket_data.AddWrite(ConstructClientRstPacket(2)); 1584 socket_data.AddWrite(ConstructClientRstPacket(2));
1512 socket_data.AddSocketDataToFactory(&socket_factory_); 1585 socket_data.AddSocketDataToFactory(&socket_factory_);
1513 1586
1514 MockQuicData socket_data2; 1587 MockQuicData socket_data2;
1515 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1588 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1516 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 1589 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1517 socket_data2.AddSocketDataToFactory(&socket_factory_); 1590 socket_data2.AddSocketDataToFactory(&socket_factory_);
1518 1591
1519 QuicStreamRequest request(factory_.get()); 1592 QuicStreamRequest request(factory_.get());
1593 QuicVersionVector advertised_versions;
1594 advertised_versions.push_back(version_);
1520 EXPECT_EQ(ERR_IO_PENDING, 1595 EXPECT_EQ(ERR_IO_PENDING,
1521 request.Request(host_port_pair_, privacy_mode_, 1596 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
1522 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1597 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1523 callback_.callback())); 1598 callback_.callback()));
1524 1599
1525 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1600 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1526 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1601 std::unique_ptr<HttpStream> stream = request.CreateStream();
1527 HttpRequestInfo request_info; 1602 HttpRequestInfo request_info;
1528 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1603 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1529 net_log_, CompletionCallback())); 1604 net_log_, CompletionCallback()));
1530 1605
1531 // Close the session and verify that stream saw the error. 1606 // Close the session and verify that stream saw the error.
1532 factory_->CloseAllSessions(ERR_INTERNET_DISCONNECTED, QUIC_INTERNAL_ERROR); 1607 factory_->CloseAllSessions(ERR_INTERNET_DISCONNECTED, QUIC_INTERNAL_ERROR);
1533 EXPECT_EQ(ERR_INTERNET_DISCONNECTED, 1608 EXPECT_EQ(ERR_INTERNET_DISCONNECTED,
1534 stream->ReadResponseHeaders(callback_.callback())); 1609 stream->ReadResponseHeaders(callback_.callback()));
1535 1610
1536 // Now attempting to request a stream to the same origin should create 1611 // Now attempting to request a stream to the same origin should create
1537 // a new session. 1612 // a new session.
1538 1613
1539 QuicStreamRequest request2(factory_.get()); 1614 QuicStreamRequest request2(factory_.get());
1540 EXPECT_EQ(ERR_IO_PENDING, 1615 EXPECT_EQ(
1541 request2.Request(host_port_pair_, privacy_mode_, 1616 ERR_IO_PENDING,
1542 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1617 request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
1543 callback_.callback())); 1618 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1619 callback_.callback()));
1544 1620
1545 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1621 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1546 stream = request2.CreateStream(); 1622 stream = request2.CreateStream();
1547 stream.reset(); // Will reset stream 3. 1623 stream.reset(); // Will reset stream 3.
1548 1624
1549 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1625 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1550 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1626 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1551 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1627 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1552 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1628 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1553 } 1629 }
(...skipping 10 matching lines...) Expand all
1564 MockCryptoClientStream::USE_DEFAULT_CRYPTO_STREAM); 1640 MockCryptoClientStream::USE_DEFAULT_CRYPTO_STREAM);
1565 1641
1566 MockQuicData socket_data; 1642 MockQuicData socket_data;
1567 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1643 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1568 // Trigger PACKET_WRITE_ERROR when sending packets in crypto connect. 1644 // Trigger PACKET_WRITE_ERROR when sending packets in crypto connect.
1569 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE); 1645 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE);
1570 socket_data.AddSocketDataToFactory(&socket_factory_); 1646 socket_data.AddSocketDataToFactory(&socket_factory_);
1571 1647
1572 // Create request, should fail after the write of the CHLO fails. 1648 // Create request, should fail after the write of the CHLO fails.
1573 QuicStreamRequest request(factory_.get()); 1649 QuicStreamRequest request(factory_.get());
1650 QuicVersionVector advertised_versions;
1651 advertised_versions.push_back(version_);
1574 EXPECT_EQ(ERR_IO_PENDING, 1652 EXPECT_EQ(ERR_IO_PENDING,
1575 request.Request(host_port_pair_, privacy_mode_, 1653 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
1576 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1654 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1577 callback_.callback())); 1655 callback_.callback()));
1578 EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED, callback_.WaitForResult()); 1656 EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED, callback_.WaitForResult());
1579 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1657 EXPECT_FALSE(HasActiveSession(host_port_pair_));
1580 EXPECT_FALSE(HasActiveJob(host_port_pair_, privacy_mode_)); 1658 EXPECT_FALSE(HasActiveJob(host_port_pair_, privacy_mode_));
1581 1659
1582 // Verify new requests can be sent normally without hanging. 1660 // Verify new requests can be sent normally without hanging.
1583 crypto_client_stream_factory_.set_handshake_mode( 1661 crypto_client_stream_factory_.set_handshake_mode(
1584 MockCryptoClientStream::COLD_START); 1662 MockCryptoClientStream::COLD_START);
1585 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1663 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1586 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1664 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1587 MockQuicData socket_data2; 1665 MockQuicData socket_data2;
1588 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1666 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1589 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 1667 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1590 socket_data2.AddSocketDataToFactory(&socket_factory_); 1668 socket_data2.AddSocketDataToFactory(&socket_factory_);
1591 1669
1592 QuicStreamRequest request2(factory_.get()); 1670 QuicStreamRequest request2(factory_.get());
1593 EXPECT_EQ(ERR_IO_PENDING, 1671 EXPECT_EQ(
1594 request2.Request(host_port_pair_, privacy_mode_, 1672 ERR_IO_PENDING,
1595 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1673 request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
1596 callback_.callback())); 1674 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1675 callback_.callback()));
1597 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1676 EXPECT_FALSE(HasActiveSession(host_port_pair_));
1598 EXPECT_TRUE(HasActiveJob(host_port_pair_, privacy_mode_)); 1677 EXPECT_TRUE(HasActiveJob(host_port_pair_, privacy_mode_));
1599 // Run the message loop to complete host resolution. 1678 // Run the message loop to complete host resolution.
1600 base::RunLoop().RunUntilIdle(); 1679 base::RunLoop().RunUntilIdle();
1601 1680
1602 // Complete handshake. QuicStreamFactory::Job should complete and succeed. 1681 // Complete handshake. QuicStreamFactory::Job should complete and succeed.
1603 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( 1682 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
1604 QuicSession::HANDSHAKE_CONFIRMED); 1683 QuicSession::HANDSHAKE_CONFIRMED);
1605 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1684 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1606 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 1685 EXPECT_TRUE(HasActiveSession(host_port_pair_));
(...skipping 19 matching lines...) Expand all
1626 "192.168.0.1", ""); 1705 "192.168.0.1", "");
1627 1706
1628 MockQuicData socket_data; 1707 MockQuicData socket_data;
1629 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1708 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1630 // Trigger PACKET_WRITE_ERROR when sending packets in crypto connect. 1709 // Trigger PACKET_WRITE_ERROR when sending packets in crypto connect.
1631 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE); 1710 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE);
1632 socket_data.AddSocketDataToFactory(&socket_factory_); 1711 socket_data.AddSocketDataToFactory(&socket_factory_);
1633 1712
1634 // Create request, should fail immediately. 1713 // Create request, should fail immediately.
1635 QuicStreamRequest request(factory_.get()); 1714 QuicStreamRequest request(factory_.get());
1715 QuicVersionVector advertised_versions;
1716 advertised_versions.push_back(version_);
1636 EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED, 1717 EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED,
1637 request.Request(host_port_pair_, privacy_mode_, 1718 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
1638 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1719 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1639 callback_.callback())); 1720 callback_.callback()));
1640 // Check no active session, or active jobs left for this server. 1721 // Check no active session, or active jobs left for this server.
1641 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1722 EXPECT_FALSE(HasActiveSession(host_port_pair_));
1642 EXPECT_FALSE(HasActiveJob(host_port_pair_, privacy_mode_)); 1723 EXPECT_FALSE(HasActiveJob(host_port_pair_, privacy_mode_));
1643 1724
1644 // Verify new requests can be sent normally without hanging. 1725 // Verify new requests can be sent normally without hanging.
1645 crypto_client_stream_factory_.set_handshake_mode( 1726 crypto_client_stream_factory_.set_handshake_mode(
1646 MockCryptoClientStream::COLD_START); 1727 MockCryptoClientStream::COLD_START);
1647 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1728 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1648 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1729 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1649 MockQuicData socket_data2; 1730 MockQuicData socket_data2;
1650 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1731 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1651 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 1732 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1652 socket_data2.AddSocketDataToFactory(&socket_factory_); 1733 socket_data2.AddSocketDataToFactory(&socket_factory_);
1653 1734
1654 QuicStreamRequest request2(factory_.get()); 1735 QuicStreamRequest request2(factory_.get());
1655 EXPECT_EQ(ERR_IO_PENDING, 1736 EXPECT_EQ(
1656 request2.Request(host_port_pair_, privacy_mode_, 1737 ERR_IO_PENDING,
1657 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1738 request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
1658 callback_.callback())); 1739 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1740 callback_.callback()));
1659 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1741 EXPECT_FALSE(HasActiveSession(host_port_pair_));
1660 EXPECT_TRUE(HasActiveJob(host_port_pair_, privacy_mode_)); 1742 EXPECT_TRUE(HasActiveJob(host_port_pair_, privacy_mode_));
1661 1743
1662 // Complete handshake. 1744 // Complete handshake.
1663 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( 1745 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
1664 QuicSession::HANDSHAKE_CONFIRMED); 1746 QuicSession::HANDSHAKE_CONFIRMED);
1665 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1747 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1666 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 1748 EXPECT_TRUE(HasActiveSession(host_port_pair_));
1667 EXPECT_FALSE(HasActiveJob(host_port_pair_, privacy_mode_)); 1749 EXPECT_FALSE(HasActiveJob(host_port_pair_, privacy_mode_));
1668 1750
(...skipping 19 matching lines...) Expand all
1688 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1770 socket_data.AddWrite(ConstructInitialSettingsPacket());
1689 socket_data.AddWrite(ConstructClientRstPacket(2)); 1771 socket_data.AddWrite(ConstructClientRstPacket(2));
1690 socket_data.AddSocketDataToFactory(&socket_factory_); 1772 socket_data.AddSocketDataToFactory(&socket_factory_);
1691 1773
1692 MockQuicData socket_data2; 1774 MockQuicData socket_data2;
1693 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1775 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1694 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 1776 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1695 socket_data2.AddSocketDataToFactory(&socket_factory_); 1777 socket_data2.AddSocketDataToFactory(&socket_factory_);
1696 1778
1697 QuicStreamRequest request(factory_.get()); 1779 QuicStreamRequest request(factory_.get());
1780 QuicVersionVector advertised_versions;
1781 advertised_versions.push_back(version_);
1698 EXPECT_EQ(ERR_IO_PENDING, 1782 EXPECT_EQ(ERR_IO_PENDING,
1699 request.Request(host_port_pair_, privacy_mode_, 1783 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
1700 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1784 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1701 callback_.callback())); 1785 callback_.callback()));
1702 1786
1703 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1787 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1704 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1788 std::unique_ptr<HttpStream> stream = request.CreateStream();
1705 HttpRequestInfo request_info; 1789 HttpRequestInfo request_info;
1706 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1790 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1707 net_log_, CompletionCallback())); 1791 net_log_, CompletionCallback()));
1708 1792
1709 // Change the IP address and verify that stream saw the error. 1793 // Change the IP address and verify that stream saw the error.
1710 NotifyIPAddressChanged(); 1794 NotifyIPAddressChanged();
1711 EXPECT_EQ(ERR_NETWORK_CHANGED, 1795 EXPECT_EQ(ERR_NETWORK_CHANGED,
1712 stream->ReadResponseHeaders(callback_.callback())); 1796 stream->ReadResponseHeaders(callback_.callback()));
1713 EXPECT_TRUE(factory_->require_confirmation()); 1797 EXPECT_TRUE(factory_->require_confirmation());
1714 1798
1715 // Now attempting to request a stream to the same origin should create 1799 // Now attempting to request a stream to the same origin should create
1716 // a new session. 1800 // a new session.
1717 1801
1718 QuicStreamRequest request2(factory_.get()); 1802 QuicStreamRequest request2(factory_.get());
1719 EXPECT_EQ(ERR_IO_PENDING, 1803 EXPECT_EQ(
1720 request2.Request(host_port_pair_, privacy_mode_, 1804 ERR_IO_PENDING,
1721 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1805 request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
1722 callback_.callback())); 1806 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1807 callback_.callback()));
1723 1808
1724 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1809 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1725 stream = request2.CreateStream(); 1810 stream = request2.CreateStream();
1726 stream.reset(); // Will reset stream 3. 1811 stream.reset(); // Will reset stream 3.
1727 1812
1728 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1813 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1729 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1814 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1730 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1815 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1731 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1816 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1732 } 1817 }
(...skipping 23 matching lines...) Expand all
1756 packet_number++, GetNthClientInitiatedStreamId(0), true, true, 1841 packet_number++, GetNthClientInitiatedStreamId(0), true, true,
1757 &header_stream_offset)); 1842 &header_stream_offset));
1758 if (async_write_before) { 1843 if (async_write_before) {
1759 socket_data.AddWrite(ASYNC, OK); 1844 socket_data.AddWrite(ASYNC, OK);
1760 packet_number++; 1845 packet_number++;
1761 } 1846 }
1762 socket_data.AddSocketDataToFactory(&socket_factory_); 1847 socket_data.AddSocketDataToFactory(&socket_factory_);
1763 1848
1764 // Create request and QuicHttpStream. 1849 // Create request and QuicHttpStream.
1765 QuicStreamRequest request(factory_.get()); 1850 QuicStreamRequest request(factory_.get());
1851 QuicVersionVector advertised_versions;
1852 advertised_versions.push_back(version_);
1766 EXPECT_EQ(ERR_IO_PENDING, 1853 EXPECT_EQ(ERR_IO_PENDING,
1767 request.Request(host_port_pair_, privacy_mode_, 1854 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
1768 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1855 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1769 callback_.callback())); 1856 callback_.callback()));
1770 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1857 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1771 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1858 std::unique_ptr<HttpStream> stream = request.CreateStream();
1772 EXPECT_TRUE(stream.get()); 1859 EXPECT_TRUE(stream.get());
1773 1860
1774 // Cause QUIC stream to be created. 1861 // Cause QUIC stream to be created.
1775 HttpRequestInfo request_info; 1862 HttpRequestInfo request_info;
1776 request_info.method = "GET"; 1863 request_info.method = "GET";
1777 request_info.url = url_; 1864 request_info.url = url_;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1823 EXPECT_EQ(200, response.headers->response_code()); 1910 EXPECT_EQ(200, response.headers->response_code());
1824 1911
1825 // Create a new request for the same destination and verify that a 1912 // Create a new request for the same destination and verify that a
1826 // new session is created. 1913 // new session is created.
1827 MockQuicData socket_data2; 1914 MockQuicData socket_data2;
1828 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1915 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1829 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 1916 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1830 socket_data2.AddSocketDataToFactory(&socket_factory_); 1917 socket_data2.AddSocketDataToFactory(&socket_factory_);
1831 1918
1832 QuicStreamRequest request2(factory_.get()); 1919 QuicStreamRequest request2(factory_.get());
1833 EXPECT_EQ(ERR_IO_PENDING, 1920 EXPECT_EQ(
1834 request2.Request(host_port_pair_, privacy_mode_, 1921 ERR_IO_PENDING,
1835 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1922 request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
1836 callback_.callback())); 1923 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1924 callback_.callback()));
1837 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1925 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1838 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 1926 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1839 EXPECT_TRUE(stream2.get()); 1927 EXPECT_TRUE(stream2.get());
1840 1928
1841 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 1929 EXPECT_TRUE(HasActiveSession(host_port_pair_));
1842 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); 1930 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_);
1843 EXPECT_NE(session, new_session); 1931 EXPECT_NE(session, new_session);
1844 1932
1845 // On a DISCONNECTED notification, nothing happens to the migrated 1933 // On a DISCONNECTED notification, nothing happens to the migrated
1846 // session, but the new session is closed since it has no open 1934 // session, but the new session is closed since it has no open
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1886 packet_number++, GetNthClientInitiatedStreamId(0), true, true, 1974 packet_number++, GetNthClientInitiatedStreamId(0), true, true,
1887 &header_stream_offset)); 1975 &header_stream_offset));
1888 if (async_write_before) { 1976 if (async_write_before) {
1889 socket_data.AddWrite(ASYNC, OK); 1977 socket_data.AddWrite(ASYNC, OK);
1890 packet_number++; 1978 packet_number++;
1891 } 1979 }
1892 socket_data.AddSocketDataToFactory(&socket_factory_); 1980 socket_data.AddSocketDataToFactory(&socket_factory_);
1893 1981
1894 // Create request and QuicHttpStream. 1982 // Create request and QuicHttpStream.
1895 QuicStreamRequest request(factory_.get()); 1983 QuicStreamRequest request(factory_.get());
1984 QuicVersionVector advertised_versions;
1985 advertised_versions.push_back(version_);
1896 EXPECT_EQ(ERR_IO_PENDING, 1986 EXPECT_EQ(ERR_IO_PENDING,
1897 request.Request(host_port_pair_, privacy_mode_, 1987 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
1898 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1988 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1899 callback_.callback())); 1989 callback_.callback()));
1900 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 1990 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1901 std::unique_ptr<HttpStream> stream = request.CreateStream(); 1991 std::unique_ptr<HttpStream> stream = request.CreateStream();
1902 EXPECT_TRUE(stream.get()); 1992 EXPECT_TRUE(stream.get());
1903 1993
1904 // Cause QUIC stream to be created. 1994 // Cause QUIC stream to be created.
1905 HttpRequestInfo request_info; 1995 HttpRequestInfo request_info;
1906 request_info.method = "GET"; 1996 request_info.method = "GET";
1907 request_info.url = url_; 1997 request_info.url = url_;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1948 EXPECT_EQ(1u, session->GetNumActiveStreams()); 2038 EXPECT_EQ(1u, session->GetNumActiveStreams());
1949 2039
1950 // Create a new request for the same destination and verify that a 2040 // Create a new request for the same destination and verify that a
1951 // new session is created. 2041 // new session is created.
1952 MockQuicData socket_data2; 2042 MockQuicData socket_data2;
1953 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2043 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1954 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 2044 socket_data2.AddWrite(ConstructInitialSettingsPacket());
1955 socket_data2.AddSocketDataToFactory(&socket_factory_); 2045 socket_data2.AddSocketDataToFactory(&socket_factory_);
1956 2046
1957 QuicStreamRequest request2(factory_.get()); 2047 QuicStreamRequest request2(factory_.get());
1958 EXPECT_EQ(ERR_IO_PENDING, 2048 EXPECT_EQ(
1959 request2.Request(host_port_pair_, privacy_mode_, 2049 ERR_IO_PENDING,
1960 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2050 request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
1961 callback_.callback())); 2051 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2052 callback_.callback()));
1962 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2053 EXPECT_THAT(callback_.WaitForResult(), IsOk());
1963 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 2054 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
1964 EXPECT_TRUE(stream2.get()); 2055 EXPECT_TRUE(stream2.get());
1965 2056
1966 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 2057 EXPECT_TRUE(HasActiveSession(host_port_pair_));
1967 EXPECT_NE(session, GetActiveSession(host_port_pair_)); 2058 EXPECT_NE(session, GetActiveSession(host_port_pair_));
1968 EXPECT_EQ(true, 2059 EXPECT_EQ(true,
1969 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 2060 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
1970 2061
1971 stream.reset(); 2062 stream.reset();
(...skipping 24 matching lines...) Expand all
1996 // Use the test task runner, to force the migration alarm timeout later. 2087 // Use the test task runner, to force the migration alarm timeout later.
1997 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get()); 2088 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get());
1998 2089
1999 MockQuicData socket_data; 2090 MockQuicData socket_data;
2000 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2091 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2001 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2092 socket_data.AddWrite(ConstructInitialSettingsPacket());
2002 socket_data.AddSocketDataToFactory(&socket_factory_); 2093 socket_data.AddSocketDataToFactory(&socket_factory_);
2003 2094
2004 // Create request and QuicHttpStream. 2095 // Create request and QuicHttpStream.
2005 QuicStreamRequest request(factory_.get()); 2096 QuicStreamRequest request(factory_.get());
2097 QuicVersionVector advertised_versions;
2098 advertised_versions.push_back(version_);
2006 EXPECT_EQ(ERR_IO_PENDING, 2099 EXPECT_EQ(ERR_IO_PENDING,
2007 request.Request(host_port_pair_, privacy_mode_, 2100 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
2008 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2101 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2009 callback_.callback())); 2102 callback_.callback()));
2010 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2103 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2011 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2104 std::unique_ptr<HttpStream> stream = request.CreateStream();
2012 EXPECT_TRUE(stream.get()); 2105 EXPECT_TRUE(stream.get());
2013 2106
2014 // Cause QUIC stream to be created. 2107 // Cause QUIC stream to be created.
2015 HttpRequestInfo request_info; 2108 HttpRequestInfo request_info;
2016 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2109 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2017 net_log_, CompletionCallback())); 2110 net_log_, CompletionCallback()));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2054 2147
2055 MockQuicData socket_data; 2148 MockQuicData socket_data;
2056 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2149 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2057 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2150 socket_data.AddWrite(ConstructInitialSettingsPacket());
2058 socket_data.AddWrite(client_maker_.MakeRstPacket( 2151 socket_data.AddWrite(client_maker_.MakeRstPacket(
2059 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 2152 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
2060 socket_data.AddSocketDataToFactory(&socket_factory_); 2153 socket_data.AddSocketDataToFactory(&socket_factory_);
2061 2154
2062 // Create request and QuicHttpStream. 2155 // Create request and QuicHttpStream.
2063 QuicStreamRequest request(factory_.get()); 2156 QuicStreamRequest request(factory_.get());
2157 QuicVersionVector advertised_versions;
2158 advertised_versions.push_back(version_);
2064 EXPECT_EQ(ERR_IO_PENDING, 2159 EXPECT_EQ(ERR_IO_PENDING,
2065 request.Request(host_port_pair_, privacy_mode_, 2160 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
2066 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2161 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2067 callback_.callback())); 2162 callback_.callback()));
2068 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2163 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2069 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2164 std::unique_ptr<HttpStream> stream = request.CreateStream();
2070 EXPECT_TRUE(stream.get()); 2165 EXPECT_TRUE(stream.get());
2071 2166
2072 // Cause QUIC stream to be created, but marked as non-migratable. 2167 // Cause QUIC stream to be created, but marked as non-migratable.
2073 HttpRequestInfo request_info; 2168 HttpRequestInfo request_info;
2074 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; 2169 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION;
2075 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2170 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
(...skipping 27 matching lines...) Expand all
2103 2198
2104 MockQuicData socket_data; 2199 MockQuicData socket_data;
2105 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2200 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2106 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2201 socket_data.AddWrite(ConstructInitialSettingsPacket());
2107 socket_data.AddWrite(client_maker_.MakeRstPacket( 2202 socket_data.AddWrite(client_maker_.MakeRstPacket(
2108 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 2203 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
2109 socket_data.AddSocketDataToFactory(&socket_factory_); 2204 socket_data.AddSocketDataToFactory(&socket_factory_);
2110 2205
2111 // Create request and QuicHttpStream. 2206 // Create request and QuicHttpStream.
2112 QuicStreamRequest request(factory_.get()); 2207 QuicStreamRequest request(factory_.get());
2208 QuicVersionVector advertised_versions;
2209 advertised_versions.push_back(version_);
2113 EXPECT_EQ(ERR_IO_PENDING, 2210 EXPECT_EQ(ERR_IO_PENDING,
2114 request.Request(host_port_pair_, privacy_mode_, 2211 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
2115 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2212 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2116 callback_.callback())); 2213 callback_.callback()));
2117 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2214 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2118 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2215 std::unique_ptr<HttpStream> stream = request.CreateStream();
2119 EXPECT_TRUE(stream.get()); 2216 EXPECT_TRUE(stream.get());
2120 2217
2121 // Cause QUIC stream to be created. 2218 // Cause QUIC stream to be created.
2122 HttpRequestInfo request_info; 2219 HttpRequestInfo request_info;
2123 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2220 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2124 net_log_, CompletionCallback())); 2221 net_log_, CompletionCallback()));
(...skipping 30 matching lines...) Expand all
2155 2252
2156 MockQuicData socket_data; 2253 MockQuicData socket_data;
2157 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2254 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2158 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2255 socket_data.AddWrite(ConstructInitialSettingsPacket());
2159 socket_data.AddWrite(client_maker_.MakeRstPacket( 2256 socket_data.AddWrite(client_maker_.MakeRstPacket(
2160 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT)); 2257 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT));
2161 socket_data.AddSocketDataToFactory(&socket_factory_); 2258 socket_data.AddSocketDataToFactory(&socket_factory_);
2162 2259
2163 // Create request and QuicHttpStream. 2260 // Create request and QuicHttpStream.
2164 QuicStreamRequest request(factory_.get()); 2261 QuicStreamRequest request(factory_.get());
2262 QuicVersionVector advertised_versions;
2263 advertised_versions.push_back(version_);
2165 EXPECT_EQ(ERR_IO_PENDING, 2264 EXPECT_EQ(ERR_IO_PENDING,
2166 request.Request(host_port_pair_, privacy_mode_, 2265 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
2167 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2266 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2168 callback_.callback())); 2267 callback_.callback()));
2169 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2268 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2170 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2269 std::unique_ptr<HttpStream> stream = request.CreateStream();
2171 EXPECT_TRUE(stream.get()); 2270 EXPECT_TRUE(stream.get());
2172 2271
2173 // Cause QUIC stream to be created, but marked as non-migratable. 2272 // Cause QUIC stream to be created, but marked as non-migratable.
2174 HttpRequestInfo request_info; 2273 HttpRequestInfo request_info;
2175 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; 2274 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION;
2176 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2275 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
(...skipping 26 matching lines...) Expand all
2203 2302
2204 MockQuicData socket_data; 2303 MockQuicData socket_data;
2205 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2304 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2206 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2305 socket_data.AddWrite(ConstructInitialSettingsPacket());
2207 socket_data.AddWrite(client_maker_.MakeRstPacket( 2306 socket_data.AddWrite(client_maker_.MakeRstPacket(
2208 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT)); 2307 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT));
2209 socket_data.AddSocketDataToFactory(&socket_factory_); 2308 socket_data.AddSocketDataToFactory(&socket_factory_);
2210 2309
2211 // Create request and QuicHttpStream. 2310 // Create request and QuicHttpStream.
2212 QuicStreamRequest request(factory_.get()); 2311 QuicStreamRequest request(factory_.get());
2312 QuicVersionVector advertised_versions;
2313 advertised_versions.push_back(version_);
2213 EXPECT_EQ(ERR_IO_PENDING, 2314 EXPECT_EQ(ERR_IO_PENDING,
2214 request.Request(host_port_pair_, privacy_mode_, 2315 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
2215 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2316 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2216 callback_.callback())); 2317 callback_.callback()));
2217 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2318 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2218 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2319 std::unique_ptr<HttpStream> stream = request.CreateStream();
2219 EXPECT_TRUE(stream.get()); 2320 EXPECT_TRUE(stream.get());
2220 2321
2221 // Cause QUIC stream to be created. 2322 // Cause QUIC stream to be created.
2222 HttpRequestInfo request_info; 2323 HttpRequestInfo request_info;
2223 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2324 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2224 net_log_, CompletionCallback())); 2325 net_log_, CompletionCallback()));
(...skipping 26 matching lines...) Expand all
2251 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2352 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2252 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2353 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2253 2354
2254 MockQuicData socket_data; 2355 MockQuicData socket_data;
2255 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2356 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2256 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2357 socket_data.AddWrite(ConstructInitialSettingsPacket());
2257 socket_data.AddSocketDataToFactory(&socket_factory_); 2358 socket_data.AddSocketDataToFactory(&socket_factory_);
2258 2359
2259 // Create request and QuicHttpStream. 2360 // Create request and QuicHttpStream.
2260 QuicStreamRequest request(factory_.get()); 2361 QuicStreamRequest request(factory_.get());
2362 QuicVersionVector advertised_versions;
2363 advertised_versions.push_back(version_);
2261 EXPECT_EQ(ERR_IO_PENDING, 2364 EXPECT_EQ(ERR_IO_PENDING,
2262 request.Request(host_port_pair_, privacy_mode_, 2365 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
2263 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2366 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2264 callback_.callback())); 2367 callback_.callback()));
2265 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2368 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2266 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2369 std::unique_ptr<HttpStream> stream = request.CreateStream();
2267 EXPECT_TRUE(stream.get()); 2370 EXPECT_TRUE(stream.get());
2268 2371
2269 // Ensure that session is alive and active. 2372 // Ensure that session is alive and active.
2270 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 2373 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
2271 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 2374 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
2272 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 2375 EXPECT_TRUE(HasActiveSession(host_port_pair_));
(...skipping 16 matching lines...) Expand all
2289 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2392 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2290 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2393 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2291 2394
2292 MockQuicData socket_data; 2395 MockQuicData socket_data;
2293 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2396 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2294 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2397 socket_data.AddWrite(ConstructInitialSettingsPacket());
2295 socket_data.AddSocketDataToFactory(&socket_factory_); 2398 socket_data.AddSocketDataToFactory(&socket_factory_);
2296 2399
2297 // Create request and QuicHttpStream. 2400 // Create request and QuicHttpStream.
2298 QuicStreamRequest request(factory_.get()); 2401 QuicStreamRequest request(factory_.get());
2402 QuicVersionVector advertised_versions;
2403 advertised_versions.push_back(version_);
2299 EXPECT_EQ(ERR_IO_PENDING, 2404 EXPECT_EQ(ERR_IO_PENDING,
2300 request.Request(host_port_pair_, privacy_mode_, 2405 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
2301 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2406 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2302 callback_.callback())); 2407 callback_.callback()));
2303 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2408 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2304 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2409 std::unique_ptr<HttpStream> stream = request.CreateStream();
2305 EXPECT_TRUE(stream.get()); 2410 EXPECT_TRUE(stream.get());
2306 2411
2307 // Ensure that session is alive and active. 2412 // Ensure that session is alive and active.
2308 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 2413 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
2309 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 2414 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
2310 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 2415 EXPECT_TRUE(HasActiveSession(host_port_pair_));
(...skipping 20 matching lines...) Expand all
2331 QuicStreamOffset header_stream_offset = 0; 2436 QuicStreamOffset header_stream_offset = 0;
2332 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2437 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2333 socket_data.AddWrite( 2438 socket_data.AddWrite(
2334 ConstructInitialSettingsPacket(1, &header_stream_offset)); 2439 ConstructInitialSettingsPacket(1, &header_stream_offset));
2335 socket_data.AddWrite(ConstructGetRequestPacket( 2440 socket_data.AddWrite(ConstructGetRequestPacket(
2336 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); 2441 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
2337 socket_data.AddSocketDataToFactory(&socket_factory_); 2442 socket_data.AddSocketDataToFactory(&socket_factory_);
2338 2443
2339 // Create request and QuicHttpStream. 2444 // Create request and QuicHttpStream.
2340 QuicStreamRequest request(factory_.get()); 2445 QuicStreamRequest request(factory_.get());
2446 QuicVersionVector advertised_versions;
2447 advertised_versions.push_back(version_);
2341 EXPECT_EQ(ERR_IO_PENDING, 2448 EXPECT_EQ(ERR_IO_PENDING,
2342 request.Request(host_port_pair_, privacy_mode_, 2449 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
2343 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2450 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2344 callback_.callback())); 2451 callback_.callback()));
2345 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2452 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2346 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2453 std::unique_ptr<HttpStream> stream = request.CreateStream();
2347 EXPECT_TRUE(stream.get()); 2454 EXPECT_TRUE(stream.get());
2348 2455
2349 // Cause QUIC stream to be created. 2456 // Cause QUIC stream to be created.
2350 HttpRequestInfo request_info; 2457 HttpRequestInfo request_info;
2351 request_info.method = "GET"; 2458 request_info.method = "GET";
2352 request_info.url = url_; 2459 request_info.url = url_;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
2407 // Response headers are received over the new network. 2514 // Response headers are received over the new network.
2408 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2515 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2409 EXPECT_EQ(200, response.headers->response_code()); 2516 EXPECT_EQ(200, response.headers->response_code());
2410 2517
2411 // Create a new request and verify that a new session is created. 2518 // Create a new request and verify that a new session is created.
2412 MockQuicData socket_data2; 2519 MockQuicData socket_data2;
2413 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2520 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2414 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 2521 socket_data2.AddWrite(ConstructInitialSettingsPacket());
2415 socket_data2.AddSocketDataToFactory(&socket_factory_); 2522 socket_data2.AddSocketDataToFactory(&socket_factory_);
2416 QuicStreamRequest request2(factory_.get()); 2523 QuicStreamRequest request2(factory_.get());
2417 EXPECT_EQ(ERR_IO_PENDING, 2524 EXPECT_EQ(
2418 request2.Request(host_port_pair_, privacy_mode_, 2525 ERR_IO_PENDING,
2419 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2526 request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
2420 callback_.callback())); 2527 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2528 callback_.callback()));
2421 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2529 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2422 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 2530 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
2423 EXPECT_TRUE(stream2.get()); 2531 EXPECT_TRUE(stream2.get());
2424 2532
2425 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 2533 EXPECT_TRUE(HasActiveSession(host_port_pair_));
2426 EXPECT_NE(session, GetActiveSession(host_port_pair_)); 2534 EXPECT_NE(session, GetActiveSession(host_port_pair_));
2427 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 2535 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
2428 2536
2429 stream.reset(); 2537 stream.reset();
2430 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2538 EXPECT_TRUE(socket_data.AllReadDataConsumed());
(...skipping 25 matching lines...) Expand all
2456 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2564 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2457 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2565 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2458 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2566 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2459 2567
2460 host_resolver_.set_synchronous_mode(true); 2568 host_resolver_.set_synchronous_mode(true);
2461 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 2569 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
2462 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.2", ""); 2570 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.2", "");
2463 2571
2464 // Create request and QuicHttpStream to create session1. 2572 // Create request and QuicHttpStream to create session1.
2465 QuicStreamRequest request1(factory_.get()); 2573 QuicStreamRequest request1(factory_.get());
2466 EXPECT_EQ(OK, request1.Request(server1, privacy_mode_, 2574 QuicVersionVector advertised_versions;
2575 advertised_versions.push_back(version_);
2576 EXPECT_EQ(OK, request1.Request(server1, advertised_versions, privacy_mode_,
2467 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2577 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2468 callback_.callback())); 2578 callback_.callback()));
2469 std::unique_ptr<HttpStream> stream1 = request1.CreateStream(); 2579 std::unique_ptr<HttpStream> stream1 = request1.CreateStream();
2470 EXPECT_TRUE(stream1.get()); 2580 EXPECT_TRUE(stream1.get());
2471 2581
2472 // Create request and QuicHttpStream to create session2. 2582 // Create request and QuicHttpStream to create session2.
2473 QuicStreamRequest request2(factory_.get()); 2583 QuicStreamRequest request2(factory_.get());
2474 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 2584 EXPECT_EQ(OK, request2.Request(server2, advertised_versions, privacy_mode_,
2475 /*cert_verify_flags=*/0, url2_, "GET", 2585 /*cert_verify_flags=*/0, url2_, "GET",
2476 net_log_, callback_.callback())); 2586 net_log_, callback_.callback()));
2477 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 2587 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
2478 EXPECT_TRUE(stream2.get()); 2588 EXPECT_TRUE(stream2.get());
2479 2589
2480 QuicChromiumClientSession* session1 = GetActiveSession(server1); 2590 QuicChromiumClientSession* session1 = GetActiveSession(server1);
2481 QuicChromiumClientSession* session2 = GetActiveSession(server2); 2591 QuicChromiumClientSession* session2 = GetActiveSession(server2);
2482 EXPECT_NE(session1, session2); 2592 EXPECT_NE(session1, session2);
2483 2593
2484 // Cause QUIC stream to be created and send GET so session1 has an open 2594 // 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
2548 QuicStreamOffset header_stream_offset = 0; 2658 QuicStreamOffset header_stream_offset = 0;
2549 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2659 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2550 socket_data.AddWrite( 2660 socket_data.AddWrite(
2551 ConstructInitialSettingsPacket(1, &header_stream_offset)); 2661 ConstructInitialSettingsPacket(1, &header_stream_offset));
2552 socket_data.AddWrite(ConstructGetRequestPacket( 2662 socket_data.AddWrite(ConstructGetRequestPacket(
2553 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); 2663 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
2554 socket_data.AddSocketDataToFactory(&socket_factory_); 2664 socket_data.AddSocketDataToFactory(&socket_factory_);
2555 2665
2556 // Create request and QuicHttpStream. 2666 // Create request and QuicHttpStream.
2557 QuicStreamRequest request(factory_.get()); 2667 QuicStreamRequest request(factory_.get());
2668 QuicVersionVector advertised_versions;
2669 advertised_versions.push_back(version_);
2558 EXPECT_EQ(ERR_IO_PENDING, 2670 EXPECT_EQ(ERR_IO_PENDING,
2559 request.Request(host_port_pair_, privacy_mode_, 2671 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
2560 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2672 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2561 callback_.callback())); 2673 callback_.callback()));
2562 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2674 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2563 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2675 std::unique_ptr<HttpStream> stream = request.CreateStream();
2564 EXPECT_TRUE(stream.get()); 2676 EXPECT_TRUE(stream.get());
2565 2677
2566 // Cause QUIC stream to be created. 2678 // Cause QUIC stream to be created.
2567 HttpRequestInfo request_info; 2679 HttpRequestInfo request_info;
2568 request_info.method = "GET"; 2680 request_info.method = "GET";
2569 request_info.url = url_; 2681 request_info.url = url_;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2612 EXPECT_EQ(200, response.headers->response_code()); 2724 EXPECT_EQ(200, response.headers->response_code());
2613 2725
2614 // Create a new request for the same destination and verify that a 2726 // Create a new request for the same destination and verify that a
2615 // new session is created. 2727 // new session is created.
2616 MockQuicData socket_data2; 2728 MockQuicData socket_data2;
2617 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2729 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2618 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 2730 socket_data2.AddWrite(ConstructInitialSettingsPacket());
2619 socket_data2.AddSocketDataToFactory(&socket_factory_); 2731 socket_data2.AddSocketDataToFactory(&socket_factory_);
2620 2732
2621 QuicStreamRequest request2(factory_.get()); 2733 QuicStreamRequest request2(factory_.get());
2622 EXPECT_EQ(ERR_IO_PENDING, 2734 EXPECT_EQ(
2623 request2.Request(host_port_pair_, privacy_mode_, 2735 ERR_IO_PENDING,
2624 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2736 request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
2625 callback_.callback())); 2737 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2738 callback_.callback()));
2626 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2739 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2627 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 2740 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
2628 EXPECT_TRUE(stream2.get()); 2741 EXPECT_TRUE(stream2.get());
2629 2742
2630 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 2743 EXPECT_TRUE(HasActiveSession(host_port_pair_));
2631 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); 2744 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_);
2632 EXPECT_NE(session, new_session); 2745 EXPECT_NE(session, new_session);
2633 2746
2634 // On a NETWORK_MADE_DEFAULT notification, nothing happens to the 2747 // On a NETWORK_MADE_DEFAULT notification, nothing happens to the
2635 // migrated session, but the new session is closed since it has no 2748 // migrated session, but the new session is closed since it has no
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2673 QuicStreamOffset header_stream_offset = 0; 2786 QuicStreamOffset header_stream_offset = 0;
2674 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2787 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2675 socket_data.AddWrite( 2788 socket_data.AddWrite(
2676 ConstructInitialSettingsPacket(1, &header_stream_offset)); 2789 ConstructInitialSettingsPacket(1, &header_stream_offset));
2677 socket_data.AddWrite(ConstructGetRequestPacket( 2790 socket_data.AddWrite(ConstructGetRequestPacket(
2678 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); 2791 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
2679 socket_data.AddSocketDataToFactory(&socket_factory_); 2792 socket_data.AddSocketDataToFactory(&socket_factory_);
2680 2793
2681 // Create request and QuicHttpStream. 2794 // Create request and QuicHttpStream.
2682 QuicStreamRequest request(factory_.get()); 2795 QuicStreamRequest request(factory_.get());
2796 QuicVersionVector advertised_versions;
2797 advertised_versions.push_back(version_);
2683 EXPECT_EQ(ERR_IO_PENDING, 2798 EXPECT_EQ(ERR_IO_PENDING,
2684 request.Request(host_port_pair_, privacy_mode_, 2799 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
2685 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2800 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2686 callback_.callback())); 2801 callback_.callback()));
2687 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2802 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2688 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2803 std::unique_ptr<HttpStream> stream = request.CreateStream();
2689 EXPECT_TRUE(stream.get()); 2804 EXPECT_TRUE(stream.get());
2690 2805
2691 // Cause QUIC stream to be created. 2806 // Cause QUIC stream to be created.
2692 HttpRequestInfo request_info; 2807 HttpRequestInfo request_info;
2693 request_info.method = "GET"; 2808 request_info.method = "GET";
2694 request_info.url = url_; 2809 request_info.url = url_;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2739 EXPECT_EQ(200, response.headers->response_code()); 2854 EXPECT_EQ(200, response.headers->response_code());
2740 2855
2741 // Create a new request for the same destination and verify that a 2856 // Create a new request for the same destination and verify that a
2742 // new session is created. 2857 // new session is created.
2743 MockQuicData socket_data2; 2858 MockQuicData socket_data2;
2744 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2859 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2745 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 2860 socket_data2.AddWrite(ConstructInitialSettingsPacket());
2746 socket_data2.AddSocketDataToFactory(&socket_factory_); 2861 socket_data2.AddSocketDataToFactory(&socket_factory_);
2747 2862
2748 QuicStreamRequest request2(factory_.get()); 2863 QuicStreamRequest request2(factory_.get());
2749 EXPECT_EQ(ERR_IO_PENDING, 2864 EXPECT_EQ(
2750 request2.Request(host_port_pair_, privacy_mode_, 2865 ERR_IO_PENDING,
2751 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2866 request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
2752 callback_.callback())); 2867 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2868 callback_.callback()));
2753 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2869 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2754 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 2870 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
2755 EXPECT_TRUE(stream2.get()); 2871 EXPECT_TRUE(stream2.get());
2756 2872
2757 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 2873 EXPECT_TRUE(HasActiveSession(host_port_pair_));
2758 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); 2874 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_);
2759 EXPECT_NE(session, new_session); 2875 EXPECT_NE(session, new_session);
2760 2876
2761 // On a NETWORK_MADE_DEFAULT notification, nothing happens to the 2877 // On a NETWORK_MADE_DEFAULT notification, nothing happens to the
2762 // migrated session, but the new session is closed since it has no 2878 // migrated session, but the new session is closed since it has no
(...skipping 29 matching lines...) Expand all
2792 2908
2793 MockQuicData socket_data; 2909 MockQuicData socket_data;
2794 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2910 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2795 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2911 socket_data.AddWrite(ConstructInitialSettingsPacket());
2796 socket_data.AddWrite(client_maker_.MakeRstPacket( 2912 socket_data.AddWrite(client_maker_.MakeRstPacket(
2797 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 2913 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
2798 socket_data.AddSocketDataToFactory(&socket_factory_); 2914 socket_data.AddSocketDataToFactory(&socket_factory_);
2799 2915
2800 // Create request and QuicHttpStream. 2916 // Create request and QuicHttpStream.
2801 QuicStreamRequest request(factory_.get()); 2917 QuicStreamRequest request(factory_.get());
2918 QuicVersionVector advertised_versions;
2919 advertised_versions.push_back(version_);
2802 EXPECT_EQ(ERR_IO_PENDING, 2920 EXPECT_EQ(ERR_IO_PENDING,
2803 request.Request(host_port_pair_, privacy_mode_, 2921 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
2804 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2922 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2805 callback_.callback())); 2923 callback_.callback()));
2806 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2924 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2807 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2925 std::unique_ptr<HttpStream> stream = request.CreateStream();
2808 EXPECT_TRUE(stream.get()); 2926 EXPECT_TRUE(stream.get());
2809 2927
2810 // Cause QUIC stream to be created. 2928 // Cause QUIC stream to be created.
2811 HttpRequestInfo request_info; 2929 HttpRequestInfo request_info;
2812 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2930 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2813 net_log_, CompletionCallback())); 2931 net_log_, CompletionCallback()));
(...skipping 30 matching lines...) Expand all
2844 2962
2845 MockQuicData socket_data; 2963 MockQuicData socket_data;
2846 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2964 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2847 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2965 socket_data.AddWrite(ConstructInitialSettingsPacket());
2848 socket_data.AddWrite(client_maker_.MakeRstPacket( 2966 socket_data.AddWrite(client_maker_.MakeRstPacket(
2849 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 2967 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
2850 socket_data.AddSocketDataToFactory(&socket_factory_); 2968 socket_data.AddSocketDataToFactory(&socket_factory_);
2851 2969
2852 // Create request and QuicHttpStream. 2970 // Create request and QuicHttpStream.
2853 QuicStreamRequest request(factory_.get()); 2971 QuicStreamRequest request(factory_.get());
2972 QuicVersionVector advertised_versions;
2973 advertised_versions.push_back(version_);
2854 EXPECT_EQ(ERR_IO_PENDING, 2974 EXPECT_EQ(ERR_IO_PENDING,
2855 request.Request(host_port_pair_, privacy_mode_, 2975 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
2856 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2976 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2857 callback_.callback())); 2977 callback_.callback()));
2858 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2978 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2859 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2979 std::unique_ptr<HttpStream> stream = request.CreateStream();
2860 EXPECT_TRUE(stream.get()); 2980 EXPECT_TRUE(stream.get());
2861 2981
2862 // Cause QUIC stream to be created, but marked as non-migratable. 2982 // Cause QUIC stream to be created, but marked as non-migratable.
2863 HttpRequestInfo request_info; 2983 HttpRequestInfo request_info;
2864 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; 2984 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION;
2865 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2985 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
(...skipping 30 matching lines...) Expand all
2896 3016
2897 MockQuicData socket_data; 3017 MockQuicData socket_data;
2898 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3018 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2899 socket_data.AddWrite(ConstructInitialSettingsPacket()); 3019 socket_data.AddWrite(ConstructInitialSettingsPacket());
2900 socket_data.AddWrite(client_maker_.MakeRstPacket( 3020 socket_data.AddWrite(client_maker_.MakeRstPacket(
2901 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 3021 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
2902 socket_data.AddSocketDataToFactory(&socket_factory_); 3022 socket_data.AddSocketDataToFactory(&socket_factory_);
2903 3023
2904 // Create request and QuicHttpStream. 3024 // Create request and QuicHttpStream.
2905 QuicStreamRequest request(factory_.get()); 3025 QuicStreamRequest request(factory_.get());
3026 QuicVersionVector advertised_versions;
3027 advertised_versions.push_back(version_);
2906 EXPECT_EQ(ERR_IO_PENDING, 3028 EXPECT_EQ(ERR_IO_PENDING,
2907 request.Request(host_port_pair_, privacy_mode_, 3029 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
2908 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3030 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2909 callback_.callback())); 3031 callback_.callback()));
2910 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 3032 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2911 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3033 std::unique_ptr<HttpStream> stream = request.CreateStream();
2912 EXPECT_TRUE(stream.get()); 3034 EXPECT_TRUE(stream.get());
2913 3035
2914 // Cause QUIC stream to be created. 3036 // Cause QUIC stream to be created.
2915 HttpRequestInfo request_info; 3037 HttpRequestInfo request_info;
2916 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3038 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2917 net_log_, CompletionCallback())); 3039 net_log_, CompletionCallback()));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2954 MockQuicData socket_data; 3076 MockQuicData socket_data;
2955 QuicStreamOffset header_stream_offset = 0; 3077 QuicStreamOffset header_stream_offset = 0;
2956 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3078 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2957 socket_data.AddWrite( 3079 socket_data.AddWrite(
2958 ConstructInitialSettingsPacket(1, &header_stream_offset)); 3080 ConstructInitialSettingsPacket(1, &header_stream_offset));
2959 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE); 3081 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE);
2960 socket_data.AddSocketDataToFactory(&socket_factory_); 3082 socket_data.AddSocketDataToFactory(&socket_factory_);
2961 3083
2962 // Create request and QuicHttpStream. 3084 // Create request and QuicHttpStream.
2963 QuicStreamRequest request(factory_.get()); 3085 QuicStreamRequest request(factory_.get());
3086 QuicVersionVector advertised_versions;
3087 advertised_versions.push_back(version_);
2964 EXPECT_EQ(ERR_IO_PENDING, 3088 EXPECT_EQ(ERR_IO_PENDING,
2965 request.Request(host_port_pair_, privacy_mode_, 3089 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
2966 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3090 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2967 callback_.callback())); 3091 callback_.callback()));
2968 EXPECT_EQ(OK, callback_.WaitForResult()); 3092 EXPECT_EQ(OK, callback_.WaitForResult());
2969 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3093 std::unique_ptr<HttpStream> stream = request.CreateStream();
2970 EXPECT_TRUE(stream.get()); 3094 EXPECT_TRUE(stream.get());
2971 3095
2972 // Cause QUIC stream to be created. 3096 // Cause QUIC stream to be created.
2973 HttpRequestInfo request_info; 3097 HttpRequestInfo request_info;
2974 request_info.method = "GET"; 3098 request_info.method = "GET";
2975 request_info.url = GURL("https://www.example.org/"); 3099 request_info.url = GURL("https://www.example.org/");
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
3043 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get()); 3167 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get());
3044 3168
3045 MockQuicData socket_data; 3169 MockQuicData socket_data;
3046 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3170 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3047 socket_data.AddWrite(ConstructInitialSettingsPacket()); 3171 socket_data.AddWrite(ConstructInitialSettingsPacket());
3048 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE); 3172 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE);
3049 socket_data.AddSocketDataToFactory(&socket_factory_); 3173 socket_data.AddSocketDataToFactory(&socket_factory_);
3050 3174
3051 // Create request and QuicHttpStream. 3175 // Create request and QuicHttpStream.
3052 QuicStreamRequest request(factory_.get()); 3176 QuicStreamRequest request(factory_.get());
3177 QuicVersionVector advertised_versions;
3178 advertised_versions.push_back(version_);
3053 EXPECT_EQ(ERR_IO_PENDING, 3179 EXPECT_EQ(ERR_IO_PENDING,
3054 request.Request(host_port_pair_, privacy_mode_, 3180 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
3055 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3181 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3056 callback_.callback())); 3182 callback_.callback()));
3057 EXPECT_EQ(OK, callback_.WaitForResult()); 3183 EXPECT_EQ(OK, callback_.WaitForResult());
3058 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3184 std::unique_ptr<HttpStream> stream = request.CreateStream();
3059 EXPECT_TRUE(stream.get()); 3185 EXPECT_TRUE(stream.get());
3060 3186
3061 // Cause QUIC stream to be created. 3187 // Cause QUIC stream to be created.
3062 HttpRequestInfo request_info; 3188 HttpRequestInfo request_info;
3063 request_info.method = "GET"; 3189 request_info.method = "GET";
3064 request_info.url = GURL("https://www.example.org/"); 3190 request_info.url = GURL("https://www.example.org/");
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
3132 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 3258 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
3133 3259
3134 MockQuicData socket_data; 3260 MockQuicData socket_data;
3135 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3261 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3136 socket_data.AddWrite(ConstructInitialSettingsPacket()); 3262 socket_data.AddWrite(ConstructInitialSettingsPacket());
3137 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE); 3263 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE);
3138 socket_data.AddSocketDataToFactory(&socket_factory_); 3264 socket_data.AddSocketDataToFactory(&socket_factory_);
3139 3265
3140 // Create request and QuicHttpStream. 3266 // Create request and QuicHttpStream.
3141 QuicStreamRequest request(factory_.get()); 3267 QuicStreamRequest request(factory_.get());
3268 QuicVersionVector advertised_versions;
3269 advertised_versions.push_back(version_);
3142 EXPECT_EQ(ERR_IO_PENDING, 3270 EXPECT_EQ(ERR_IO_PENDING,
3143 request.Request(host_port_pair_, privacy_mode_, 3271 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
3144 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3272 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3145 callback_.callback())); 3273 callback_.callback()));
3146 EXPECT_EQ(OK, callback_.WaitForResult()); 3274 EXPECT_EQ(OK, callback_.WaitForResult());
3147 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3275 std::unique_ptr<HttpStream> stream = request.CreateStream();
3148 EXPECT_TRUE(stream.get()); 3276 EXPECT_TRUE(stream.get());
3149 3277
3150 // Cause QUIC stream to be created, but marked as non-migratable. 3278 // Cause QUIC stream to be created, but marked as non-migratable.
3151 HttpRequestInfo request_info; 3279 HttpRequestInfo request_info;
3152 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; 3280 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION;
3153 request_info.method = "GET"; 3281 request_info.method = "GET";
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
3196 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 3324 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
3197 3325
3198 MockQuicData socket_data; 3326 MockQuicData socket_data;
3199 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3327 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3200 socket_data.AddWrite(ConstructInitialSettingsPacket()); 3328 socket_data.AddWrite(ConstructInitialSettingsPacket());
3201 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE); 3329 socket_data.AddWrite(write_error_mode, ERR_ADDRESS_UNREACHABLE);
3202 socket_data.AddSocketDataToFactory(&socket_factory_); 3330 socket_data.AddSocketDataToFactory(&socket_factory_);
3203 3331
3204 // Create request and QuicHttpStream. 3332 // Create request and QuicHttpStream.
3205 QuicStreamRequest request(factory_.get()); 3333 QuicStreamRequest request(factory_.get());
3334 QuicVersionVector advertised_versions;
3335 advertised_versions.push_back(version_);
3206 EXPECT_EQ(ERR_IO_PENDING, 3336 EXPECT_EQ(ERR_IO_PENDING,
3207 request.Request(host_port_pair_, privacy_mode_, 3337 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
3208 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3338 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3209 callback_.callback())); 3339 callback_.callback()));
3210 EXPECT_EQ(OK, callback_.WaitForResult()); 3340 EXPECT_EQ(OK, callback_.WaitForResult());
3211 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3341 std::unique_ptr<HttpStream> stream = request.CreateStream();
3212 EXPECT_TRUE(stream.get()); 3342 EXPECT_TRUE(stream.get());
3213 3343
3214 // Cause QUIC stream to be created. 3344 // Cause QUIC stream to be created.
3215 HttpRequestInfo request_info; 3345 HttpRequestInfo request_info;
3216 request_info.method = "GET"; 3346 request_info.method = "GET";
3217 request_info.url = GURL("https://www.example.org/"); 3347 request_info.url = GURL("https://www.example.org/");
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
3275 } 3405 }
3276 socket_data[i].AddWrite( 3406 socket_data[i].AddWrite(
3277 (i % 2 == 0) ? first_write_error_mode : second_write_error_mode, 3407 (i % 2 == 0) ? first_write_error_mode : second_write_error_mode,
3278 ERR_FAILED); 3408 ERR_FAILED);
3279 } 3409 }
3280 socket_data[i].AddSocketDataToFactory(&socket_factory_); 3410 socket_data[i].AddSocketDataToFactory(&socket_factory_);
3281 } 3411 }
3282 3412
3283 // Create request and QuicHttpStream. 3413 // Create request and QuicHttpStream.
3284 QuicStreamRequest request(factory_.get()); 3414 QuicStreamRequest request(factory_.get());
3415 QuicVersionVector advertised_versions;
3416 advertised_versions.push_back(version_);
3285 EXPECT_EQ(ERR_IO_PENDING, 3417 EXPECT_EQ(ERR_IO_PENDING,
3286 request.Request(host_port_pair_, privacy_mode_, 3418 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
3287 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3419 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3288 callback_.callback())); 3420 callback_.callback()));
3289 EXPECT_EQ(OK, callback_.WaitForResult()); 3421 EXPECT_EQ(OK, callback_.WaitForResult());
3290 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3422 std::unique_ptr<HttpStream> stream = request.CreateStream();
3291 EXPECT_TRUE(stream.get()); 3423 EXPECT_TRUE(stream.get());
3292 3424
3293 // Cause QUIC stream to be created. 3425 // Cause QUIC stream to be created.
3294 HttpRequestInfo request_info; 3426 HttpRequestInfo request_info;
3295 request_info.method = "GET"; 3427 request_info.method = "GET";
3296 request_info.url = GURL("https://www.example.org/"); 3428 request_info.url = GURL("https://www.example.org/");
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
3355 MockQuicData socket_data; 3487 MockQuicData socket_data;
3356 QuicStreamOffset header_stream_offset = 0; 3488 QuicStreamOffset header_stream_offset = 0;
3357 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3489 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3358 socket_data.AddWrite( 3490 socket_data.AddWrite(
3359 ConstructInitialSettingsPacket(1, &header_stream_offset)); 3491 ConstructInitialSettingsPacket(1, &header_stream_offset));
3360 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE); 3492 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE);
3361 socket_data.AddSocketDataToFactory(&socket_factory_); 3493 socket_data.AddSocketDataToFactory(&socket_factory_);
3362 3494
3363 // Create request and QuicHttpStream. 3495 // Create request and QuicHttpStream.
3364 QuicStreamRequest request(factory_.get()); 3496 QuicStreamRequest request(factory_.get());
3497 QuicVersionVector advertised_versions;
3498 advertised_versions.push_back(version_);
3365 EXPECT_EQ(ERR_IO_PENDING, 3499 EXPECT_EQ(ERR_IO_PENDING,
3366 request.Request(host_port_pair_, privacy_mode_, 3500 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
3367 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3501 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3368 callback_.callback())); 3502 callback_.callback()));
3369 EXPECT_EQ(OK, callback_.WaitForResult()); 3503 EXPECT_EQ(OK, callback_.WaitForResult());
3370 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3504 std::unique_ptr<HttpStream> stream = request.CreateStream();
3371 EXPECT_TRUE(stream.get()); 3505 EXPECT_TRUE(stream.get());
3372 3506
3373 // Cause QUIC stream to be created. 3507 // Cause QUIC stream to be created.
3374 HttpRequestInfo request_info; 3508 HttpRequestInfo request_info;
3375 request_info.method = "GET"; 3509 request_info.method = "GET";
3376 request_info.url = GURL("https://www.example.org/"); 3510 request_info.url = GURL("https://www.example.org/");
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
3453 MockQuicData socket_data; 3587 MockQuicData socket_data;
3454 QuicStreamOffset header_stream_offset = 0; 3588 QuicStreamOffset header_stream_offset = 0;
3455 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3589 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3456 socket_data.AddWrite( 3590 socket_data.AddWrite(
3457 ConstructInitialSettingsPacket(1, &header_stream_offset)); 3591 ConstructInitialSettingsPacket(1, &header_stream_offset));
3458 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE); 3592 socket_data.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE);
3459 socket_data.AddSocketDataToFactory(&socket_factory_); 3593 socket_data.AddSocketDataToFactory(&socket_factory_);
3460 3594
3461 // Create request and QuicHttpStream. 3595 // Create request and QuicHttpStream.
3462 QuicStreamRequest request(factory_.get()); 3596 QuicStreamRequest request(factory_.get());
3597 QuicVersionVector advertised_versions;
3598 advertised_versions.push_back(version_);
3463 EXPECT_EQ(ERR_IO_PENDING, 3599 EXPECT_EQ(ERR_IO_PENDING,
3464 request.Request(host_port_pair_, privacy_mode_, 3600 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
3465 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3601 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3466 callback_.callback())); 3602 callback_.callback()));
3467 EXPECT_EQ(OK, callback_.WaitForResult()); 3603 EXPECT_EQ(OK, callback_.WaitForResult());
3468 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3604 std::unique_ptr<HttpStream> stream = request.CreateStream();
3469 EXPECT_TRUE(stream.get()); 3605 EXPECT_TRUE(stream.get());
3470 3606
3471 // Cause QUIC stream to be created. 3607 // Cause QUIC stream to be created.
3472 HttpRequestInfo request_info; 3608 HttpRequestInfo request_info;
3473 request_info.method = "GET"; 3609 request_info.method = "GET";
3474 request_info.url = GURL("https://www.example.org/"); 3610 request_info.url = GURL("https://www.example.org/");
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
3552 MockQuicData socket_data; 3688 MockQuicData socket_data;
3553 QuicStreamOffset header_stream_offset = 0; 3689 QuicStreamOffset header_stream_offset = 0;
3554 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3690 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3555 socket_data.AddWrite( 3691 socket_data.AddWrite(
3556 ConstructInitialSettingsPacket(1, &header_stream_offset)); 3692 ConstructInitialSettingsPacket(1, &header_stream_offset));
3557 socket_data.AddWrite(SYNCHRONOUS, ERR_FAILED); 3693 socket_data.AddWrite(SYNCHRONOUS, ERR_FAILED);
3558 socket_data.AddSocketDataToFactory(&socket_factory_); 3694 socket_data.AddSocketDataToFactory(&socket_factory_);
3559 3695
3560 // Create request and QuicHttpStream. 3696 // Create request and QuicHttpStream.
3561 QuicStreamRequest request(factory_.get()); 3697 QuicStreamRequest request(factory_.get());
3698 QuicVersionVector advertised_versions;
3699 advertised_versions.push_back(version_);
3562 EXPECT_EQ(ERR_IO_PENDING, 3700 EXPECT_EQ(ERR_IO_PENDING,
3563 request.Request(host_port_pair_, privacy_mode_, 3701 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
3564 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3702 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3565 callback_.callback())); 3703 callback_.callback()));
3566 EXPECT_EQ(OK, callback_.WaitForResult()); 3704 EXPECT_EQ(OK, callback_.WaitForResult());
3567 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3705 std::unique_ptr<HttpStream> stream = request.CreateStream();
3568 EXPECT_TRUE(stream.get()); 3706 EXPECT_TRUE(stream.get());
3569 3707
3570 // Cause QUIC stream to be created. 3708 // Cause QUIC stream to be created.
3571 HttpRequestInfo request_info; 3709 HttpRequestInfo request_info;
3572 request_info.method = "GET"; 3710 request_info.method = "GET";
3573 request_info.url = GURL("https://www.example.org/"); 3711 request_info.url = GURL("https://www.example.org/");
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
3633 EXPECT_EQ(200, response.headers->response_code()); 3771 EXPECT_EQ(200, response.headers->response_code());
3634 3772
3635 // Create a new request for the same destination and verify that a 3773 // Create a new request for the same destination and verify that a
3636 // new session is created. 3774 // new session is created.
3637 MockQuicData socket_data2; 3775 MockQuicData socket_data2;
3638 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3776 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3639 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 3777 socket_data2.AddWrite(ConstructInitialSettingsPacket());
3640 socket_data2.AddSocketDataToFactory(&socket_factory_); 3778 socket_data2.AddSocketDataToFactory(&socket_factory_);
3641 3779
3642 QuicStreamRequest request2(factory_.get()); 3780 QuicStreamRequest request2(factory_.get());
3643 EXPECT_EQ(ERR_IO_PENDING, 3781 EXPECT_EQ(
3644 request2.Request(host_port_pair_, privacy_mode_, 3782 ERR_IO_PENDING,
3645 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3783 request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
3646 callback_.callback())); 3784 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3785 callback_.callback()));
3647 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 3786 EXPECT_THAT(callback_.WaitForResult(), IsOk());
3648 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 3787 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
3649 EXPECT_TRUE(stream2.get()); 3788 EXPECT_TRUE(stream2.get());
3650 3789
3651 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 3790 EXPECT_TRUE(HasActiveSession(host_port_pair_));
3652 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); 3791 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_);
3653 EXPECT_NE(session, new_session); 3792 EXPECT_NE(session, new_session);
3654 3793
3655 stream.reset(); 3794 stream.reset();
3656 stream2.reset(); 3795 stream2.reset();
(...skipping 28 matching lines...) Expand all
3685 MockQuicData socket_data; 3824 MockQuicData socket_data;
3686 QuicStreamOffset header_stream_offset = 0; 3825 QuicStreamOffset header_stream_offset = 0;
3687 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3826 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3688 socket_data.AddWrite( 3827 socket_data.AddWrite(
3689 ConstructInitialSettingsPacket(1, &header_stream_offset)); 3828 ConstructInitialSettingsPacket(1, &header_stream_offset));
3690 socket_data.AddWrite(SYNCHRONOUS, ERR_FAILED); 3829 socket_data.AddWrite(SYNCHRONOUS, ERR_FAILED);
3691 socket_data.AddSocketDataToFactory(&socket_factory_); 3830 socket_data.AddSocketDataToFactory(&socket_factory_);
3692 3831
3693 // Create request and QuicHttpStream. 3832 // Create request and QuicHttpStream.
3694 QuicStreamRequest request(factory_.get()); 3833 QuicStreamRequest request(factory_.get());
3834 QuicVersionVector advertised_versions;
3835 advertised_versions.push_back(version_);
3695 EXPECT_EQ(ERR_IO_PENDING, 3836 EXPECT_EQ(ERR_IO_PENDING,
3696 request.Request(host_port_pair_, privacy_mode_, 3837 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
3697 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3838 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3698 callback_.callback())); 3839 callback_.callback()));
3699 EXPECT_EQ(OK, callback_.WaitForResult()); 3840 EXPECT_EQ(OK, callback_.WaitForResult());
3700 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3841 std::unique_ptr<HttpStream> stream = request.CreateStream();
3701 EXPECT_TRUE(stream.get()); 3842 EXPECT_TRUE(stream.get());
3702 3843
3703 // Cause QUIC stream to be created. 3844 // Cause QUIC stream to be created.
3704 HttpRequestInfo request_info; 3845 HttpRequestInfo request_info;
3705 request_info.method = "GET"; 3846 request_info.method = "GET";
3706 request_info.url = GURL("https://www.example.org/"); 3847 request_info.url = GURL("https://www.example.org/");
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
3774 ->NotifyNetworkConnected(kNewNetworkForTests); 3915 ->NotifyNetworkConnected(kNewNetworkForTests);
3775 3916
3776 // Create a new request for the same destination and verify that a 3917 // Create a new request for the same destination and verify that a
3777 // new session is created. 3918 // new session is created.
3778 MockQuicData socket_data2; 3919 MockQuicData socket_data2;
3779 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3920 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3780 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 3921 socket_data2.AddWrite(ConstructInitialSettingsPacket());
3781 socket_data2.AddSocketDataToFactory(&socket_factory_); 3922 socket_data2.AddSocketDataToFactory(&socket_factory_);
3782 3923
3783 QuicStreamRequest request2(factory_.get()); 3924 QuicStreamRequest request2(factory_.get());
3784 EXPECT_EQ(ERR_IO_PENDING, 3925 EXPECT_EQ(
3785 request2.Request(host_port_pair_, privacy_mode_, 3926 ERR_IO_PENDING,
3786 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3927 request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
3787 callback_.callback())); 3928 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3929 callback_.callback()));
3788 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 3930 EXPECT_THAT(callback_.WaitForResult(), IsOk());
3789 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 3931 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
3790 EXPECT_TRUE(stream2.get()); 3932 EXPECT_TRUE(stream2.get());
3791 3933
3792 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 3934 EXPECT_TRUE(HasActiveSession(host_port_pair_));
3793 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); 3935 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_);
3794 EXPECT_NE(session, new_session); 3936 EXPECT_NE(session, new_session);
3795 3937
3796 stream.reset(); 3938 stream.reset();
3797 stream2.reset(); 3939 stream2.reset();
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
3839 QuicStreamOffset header_stream_offset = 0; 3981 QuicStreamOffset header_stream_offset = 0;
3840 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3982 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3841 socket_data.AddWrite( 3983 socket_data.AddWrite(
3842 ConstructInitialSettingsPacket(1, &header_stream_offset)); 3984 ConstructInitialSettingsPacket(1, &header_stream_offset));
3843 socket_data.AddWrite(ConstructGetRequestPacket( 3985 socket_data.AddWrite(ConstructGetRequestPacket(
3844 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); 3986 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
3845 socket_data.AddSocketDataToFactory(&socket_factory_); 3987 socket_data.AddSocketDataToFactory(&socket_factory_);
3846 3988
3847 // Create request and QuicHttpStream. 3989 // Create request and QuicHttpStream.
3848 QuicStreamRequest request(factory_.get()); 3990 QuicStreamRequest request(factory_.get());
3991 QuicVersionVector advertised_versions;
3992 advertised_versions.push_back(version_);
3849 EXPECT_EQ(ERR_IO_PENDING, 3993 EXPECT_EQ(ERR_IO_PENDING,
3850 request.Request(host_port_pair_, privacy_mode_, 3994 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
3851 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3995 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3852 callback_.callback())); 3996 callback_.callback()));
3853 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 3997 EXPECT_THAT(callback_.WaitForResult(), IsOk());
3854 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3998 std::unique_ptr<HttpStream> stream = request.CreateStream();
3855 EXPECT_TRUE(stream.get()); 3999 EXPECT_TRUE(stream.get());
3856 4000
3857 // Cause QUIC stream to be created. 4001 // Cause QUIC stream to be created.
3858 HttpRequestInfo request_info; 4002 HttpRequestInfo request_info;
3859 request_info.method = "GET"; 4003 request_info.method = "GET";
3860 request_info.url = url_; 4004 request_info.url = url_;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
3902 QuicStreamOffset header_stream_offset = 0; 4046 QuicStreamOffset header_stream_offset = 0;
3903 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4047 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3904 socket_data1.AddWrite( 4048 socket_data1.AddWrite(
3905 ConstructInitialSettingsPacket(1, &header_stream_offset)); 4049 ConstructInitialSettingsPacket(1, &header_stream_offset));
3906 socket_data1.AddWrite(ConstructGetRequestPacket( 4050 socket_data1.AddWrite(ConstructGetRequestPacket(
3907 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); 4051 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
3908 socket_data1.AddSocketDataToFactory(&socket_factory_); 4052 socket_data1.AddSocketDataToFactory(&socket_factory_);
3909 4053
3910 // Create request and QuicHttpStream. 4054 // Create request and QuicHttpStream.
3911 QuicStreamRequest request(factory_.get()); 4055 QuicStreamRequest request(factory_.get());
4056 QuicVersionVector advertised_versions;
4057 advertised_versions.push_back(version_);
3912 EXPECT_EQ(ERR_IO_PENDING, 4058 EXPECT_EQ(ERR_IO_PENDING,
3913 request.Request(host_port_pair_, privacy_mode_, 4059 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
3914 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4060 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3915 callback_.callback())); 4061 callback_.callback()));
3916 EXPECT_EQ(OK, callback_.WaitForResult()); 4062 EXPECT_EQ(OK, callback_.WaitForResult());
3917 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4063 std::unique_ptr<HttpStream> stream = request.CreateStream();
3918 EXPECT_TRUE(stream.get()); 4064 EXPECT_TRUE(stream.get());
3919 4065
3920 // Cause QUIC stream to be created. 4066 // Cause QUIC stream to be created.
3921 HttpRequestInfo request_info; 4067 HttpRequestInfo request_info;
3922 request_info.method = "GET"; 4068 request_info.method = "GET";
3923 request_info.url = GURL("https://www.example.org/"); 4069 request_info.url = GURL("https://www.example.org/");
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
4044 // Set up only socket data provider. 4190 // Set up only socket data provider.
4045 MockQuicData socket_data1; 4191 MockQuicData socket_data1;
4046 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4192 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4047 socket_data1.AddWrite(ConstructInitialSettingsPacket()); 4193 socket_data1.AddWrite(ConstructInitialSettingsPacket());
4048 socket_data1.AddWrite(client_maker_.MakeRstPacket( 4194 socket_data1.AddWrite(client_maker_.MakeRstPacket(
4049 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 4195 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
4050 socket_data1.AddSocketDataToFactory(&socket_factory_); 4196 socket_data1.AddSocketDataToFactory(&socket_factory_);
4051 4197
4052 // Create request and QuicHttpStream. 4198 // Create request and QuicHttpStream.
4053 QuicStreamRequest request(factory_.get()); 4199 QuicStreamRequest request(factory_.get());
4200 QuicVersionVector advertised_versions;
4201 advertised_versions.push_back(version_);
4054 EXPECT_EQ(ERR_IO_PENDING, 4202 EXPECT_EQ(ERR_IO_PENDING,
4055 request.Request(host_port_pair_, privacy_mode_, 4203 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
4056 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4204 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4057 callback_.callback())); 4205 callback_.callback()));
4058 EXPECT_EQ(OK, callback_.WaitForResult()); 4206 EXPECT_EQ(OK, callback_.WaitForResult());
4059 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4207 std::unique_ptr<HttpStream> stream = request.CreateStream();
4060 EXPECT_TRUE(stream.get()); 4208 EXPECT_TRUE(stream.get());
4061 4209
4062 // Cause QUIC stream to be created. 4210 // Cause QUIC stream to be created.
4063 HttpRequestInfo request_info; 4211 HttpRequestInfo request_info;
4064 request_info.method = "GET"; 4212 request_info.method = "GET";
4065 request_info.url = GURL("https://www.example.org/"); 4213 request_info.url = GURL("https://www.example.org/");
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
4098 socket_data.AddWrite(ConstructInitialSettingsPacket()); 4246 socket_data.AddWrite(ConstructInitialSettingsPacket());
4099 socket_data.AddWrite(ConstructClientRstPacket(2)); 4247 socket_data.AddWrite(ConstructClientRstPacket(2));
4100 socket_data.AddSocketDataToFactory(&socket_factory_); 4248 socket_data.AddSocketDataToFactory(&socket_factory_);
4101 4249
4102 MockQuicData socket_data2; 4250 MockQuicData socket_data2;
4103 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4251 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4104 socket_data2.AddWrite(ConstructInitialSettingsPacket(1, nullptr)); 4252 socket_data2.AddWrite(ConstructInitialSettingsPacket(1, nullptr));
4105 socket_data2.AddSocketDataToFactory(&socket_factory_); 4253 socket_data2.AddSocketDataToFactory(&socket_factory_);
4106 4254
4107 QuicStreamRequest request(factory_.get()); 4255 QuicStreamRequest request(factory_.get());
4256 QuicVersionVector advertised_versions;
4257 advertised_versions.push_back(version_);
4108 EXPECT_EQ(ERR_IO_PENDING, 4258 EXPECT_EQ(ERR_IO_PENDING,
4109 request.Request(host_port_pair_, privacy_mode_, 4259 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
4110 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4260 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4111 callback_.callback())); 4261 callback_.callback()));
4112 4262
4113 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4263 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4114 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4264 std::unique_ptr<HttpStream> stream = request.CreateStream();
4115 HttpRequestInfo request_info; 4265 HttpRequestInfo request_info;
4116 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 4266 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
4117 net_log_, CompletionCallback())); 4267 net_log_, CompletionCallback()));
4118 4268
4119 ssl_config_service_->NotifySSLConfigChange(); 4269 ssl_config_service_->NotifySSLConfigChange();
4120 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, 4270 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED,
4121 stream->ReadResponseHeaders(callback_.callback())); 4271 stream->ReadResponseHeaders(callback_.callback()));
4122 EXPECT_FALSE(factory_->require_confirmation()); 4272 EXPECT_FALSE(factory_->require_confirmation());
4123 4273
4124 // Now attempting to request a stream to the same origin should create 4274 // Now attempting to request a stream to the same origin should create
4125 // a new session. 4275 // a new session.
4126 4276
4127 QuicStreamRequest request2(factory_.get()); 4277 QuicStreamRequest request2(factory_.get());
4128 EXPECT_EQ(ERR_IO_PENDING, 4278 EXPECT_EQ(
4129 request2.Request(host_port_pair_, privacy_mode_, 4279 ERR_IO_PENDING,
4130 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4280 request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
4131 callback_.callback())); 4281 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4282 callback_.callback()));
4132 4283
4133 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4284 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4134 stream = request2.CreateStream(); 4285 stream = request2.CreateStream();
4135 stream.reset(); // Will reset stream 3. 4286 stream.reset(); // Will reset stream 3.
4136 4287
4137 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 4288 EXPECT_TRUE(socket_data.AllReadDataConsumed());
4138 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 4289 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
4139 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 4290 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
4140 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 4291 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
4141 } 4292 }
4142 4293
4143 TEST_P(QuicStreamFactoryTest, OnCertDBChanged) { 4294 TEST_P(QuicStreamFactoryTest, OnCertDBChanged) {
4144 Initialize(); 4295 Initialize();
4145 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 4296 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
4146 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4297 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4147 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4298 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4148 4299
4149 MockQuicData socket_data; 4300 MockQuicData socket_data;
4150 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4301 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4151 socket_data.AddWrite(ConstructInitialSettingsPacket()); 4302 socket_data.AddWrite(ConstructInitialSettingsPacket());
4152 socket_data.AddWrite(ConstructClientRstPacket(2)); 4303 socket_data.AddWrite(ConstructClientRstPacket(2));
4153 socket_data.AddSocketDataToFactory(&socket_factory_); 4304 socket_data.AddSocketDataToFactory(&socket_factory_);
4154 4305
4155 MockQuicData socket_data2; 4306 MockQuicData socket_data2;
4156 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4307 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4157 socket_data2.AddWrite(ConstructInitialSettingsPacket(1, nullptr)); 4308 socket_data2.AddWrite(ConstructInitialSettingsPacket(1, nullptr));
4158 socket_data2.AddSocketDataToFactory(&socket_factory_); 4309 socket_data2.AddSocketDataToFactory(&socket_factory_);
4159 4310
4160 QuicStreamRequest request(factory_.get()); 4311 QuicStreamRequest request(factory_.get());
4312 QuicVersionVector advertised_versions;
4313 advertised_versions.push_back(version_);
4161 EXPECT_EQ(ERR_IO_PENDING, 4314 EXPECT_EQ(ERR_IO_PENDING,
4162 request.Request(host_port_pair_, privacy_mode_, 4315 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
4163 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4316 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4164 callback_.callback())); 4317 callback_.callback()));
4165 4318
4166 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4319 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4167 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4320 std::unique_ptr<HttpStream> stream = request.CreateStream();
4168 HttpRequestInfo request_info; 4321 HttpRequestInfo request_info;
4169 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 4322 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
4170 net_log_, CompletionCallback())); 4323 net_log_, CompletionCallback()));
4171 4324
4172 // Change the CA cert and verify that stream saw the event. 4325 // Change the CA cert and verify that stream saw the event.
4173 factory_->OnCertDBChanged(); 4326 factory_->OnCertDBChanged();
4174 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, 4327 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED,
4175 stream->ReadResponseHeaders(callback_.callback())); 4328 stream->ReadResponseHeaders(callback_.callback()));
4176 EXPECT_FALSE(factory_->require_confirmation()); 4329 EXPECT_FALSE(factory_->require_confirmation());
4177 4330
4178 // Now attempting to request a stream to the same origin should create 4331 // Now attempting to request a stream to the same origin should create
4179 // a new session. 4332 // a new session.
4180 4333
4181 QuicStreamRequest request2(factory_.get()); 4334 QuicStreamRequest request2(factory_.get());
4182 EXPECT_EQ(ERR_IO_PENDING, 4335 EXPECT_EQ(
4183 request2.Request(host_port_pair_, privacy_mode_, 4336 ERR_IO_PENDING,
4184 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4337 request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
4185 callback_.callback())); 4338 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4339 callback_.callback()));
4186 4340
4187 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4341 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4188 stream = request2.CreateStream(); 4342 stream = request2.CreateStream();
4189 stream.reset(); // Will reset stream 3. 4343 stream.reset(); // Will reset stream 3.
4190 4344
4191 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 4345 EXPECT_TRUE(socket_data.AllReadDataConsumed());
4192 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 4346 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
4193 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 4347 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
4194 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 4348 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
4195 } 4349 }
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
4277 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4431 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4278 socket_data.AddSocketDataToFactory(&socket_factory_); 4432 socket_data.AddSocketDataToFactory(&socket_factory_);
4279 4433
4280 crypto_client_stream_factory_.set_handshake_mode( 4434 crypto_client_stream_factory_.set_handshake_mode(
4281 MockCryptoClientStream::ZERO_RTT); 4435 MockCryptoClientStream::ZERO_RTT);
4282 host_resolver_.set_synchronous_mode(true); 4436 host_resolver_.set_synchronous_mode(true);
4283 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 4437 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
4284 "192.168.0.1", ""); 4438 "192.168.0.1", "");
4285 4439
4286 QuicStreamRequest request(factory_.get()); 4440 QuicStreamRequest request(factory_.get());
4287 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 4441 QuicVersionVector advertised_versions;
4288 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4442 advertised_versions.push_back(version_);
4289 callback_.callback())); 4443 EXPECT_EQ(OK,
4444 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
4445 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4446 callback_.callback()));
4290 4447
4291 // If we are waiting for disk cache, we would have posted a task. Verify that 4448 // If we are waiting for disk cache, we would have posted a task. Verify that
4292 // the CancelWaitForDataReady task hasn't been posted. 4449 // the CancelWaitForDataReady task hasn't been posted.
4293 ASSERT_EQ(0u, runner_->GetPostedTasks().size()); 4450 ASSERT_EQ(0u, runner_->GetPostedTasks().size());
4294 4451
4295 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4452 std::unique_ptr<HttpStream> stream = request.CreateStream();
4296 EXPECT_TRUE(stream.get()); 4453 EXPECT_TRUE(stream.get());
4297 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 4454 EXPECT_TRUE(socket_data.AllReadDataConsumed());
4298 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 4455 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
4299 } 4456 }
(...skipping 24 matching lines...) Expand all
4324 host_resolver_.set_synchronous_mode(true); 4481 host_resolver_.set_synchronous_mode(true);
4325 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 4482 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
4326 "192.168.0.1", ""); 4483 "192.168.0.1", "");
4327 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 4484 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
4328 4485
4329 // Quic should use default PING timeout when no previous connection times out 4486 // Quic should use default PING timeout when no previous connection times out
4330 // with open stream. 4487 // with open stream.
4331 EXPECT_EQ(QuicTime::Delta::FromSeconds(kPingTimeoutSecs), 4488 EXPECT_EQ(QuicTime::Delta::FromSeconds(kPingTimeoutSecs),
4332 QuicStreamFactoryPeer::GetPingTimeout(factory_.get())); 4489 QuicStreamFactoryPeer::GetPingTimeout(factory_.get()));
4333 QuicStreamRequest request(factory_.get()); 4490 QuicStreamRequest request(factory_.get());
4334 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 4491 QuicVersionVector advertised_versions;
4335 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4492 advertised_versions.push_back(version_);
4336 callback_.callback())); 4493 EXPECT_EQ(OK,
4494 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
4495 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4496 callback_.callback()));
4337 4497
4338 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 4498 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
4339 EXPECT_EQ(QuicTime::Delta::FromSeconds(kPingTimeoutSecs), 4499 EXPECT_EQ(QuicTime::Delta::FromSeconds(kPingTimeoutSecs),
4340 session->connection()->ping_timeout()); 4500 session->connection()->ping_timeout());
4341 4501
4342 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4502 std::unique_ptr<HttpStream> stream = request.CreateStream();
4343 EXPECT_TRUE(stream.get()); 4503 EXPECT_TRUE(stream.get());
4344 HttpRequestInfo request_info; 4504 HttpRequestInfo request_info;
4345 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 4505 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
4346 net_log_, CompletionCallback())); 4506 net_log_, CompletionCallback()));
4347 4507
4348 DVLOG(1) 4508 DVLOG(1)
4349 << "Created 1st session and initialized a stream. Now trigger timeout"; 4509 << "Created 1st session and initialized a stream. Now trigger timeout";
4350 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, "test", 4510 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, "test",
4351 ConnectionCloseBehavior::SILENT_CLOSE); 4511 ConnectionCloseBehavior::SILENT_CLOSE);
4352 // Need to spin the loop now to ensure that 4512 // Need to spin the loop now to ensure that
4353 // QuicStreamFactory::OnSessionClosed() runs. 4513 // QuicStreamFactory::OnSessionClosed() runs.
4354 base::RunLoop run_loop; 4514 base::RunLoop run_loop;
4355 run_loop.RunUntilIdle(); 4515 run_loop.RunUntilIdle();
4356 4516
4357 // The first connection times out with open stream, QUIC should reduce initial 4517 // The first connection times out with open stream, QUIC should reduce initial
4358 // PING time for subsequent connections. 4518 // PING time for subsequent connections.
4359 EXPECT_EQ(QuicTime::Delta::FromSeconds(10), 4519 EXPECT_EQ(QuicTime::Delta::FromSeconds(10),
4360 QuicStreamFactoryPeer::GetPingTimeout(factory_.get())); 4520 QuicStreamFactoryPeer::GetPingTimeout(factory_.get()));
4361 4521
4362 // Test two-in-a-row timeouts with open streams. 4522 // Test two-in-a-row timeouts with open streams.
4363 DVLOG(1) << "Create 2nd session and timeout with open stream"; 4523 DVLOG(1) << "Create 2nd session and timeout with open stream";
4364 TestCompletionCallback callback2; 4524 TestCompletionCallback callback2;
4365 QuicStreamRequest request2(factory_.get()); 4525 QuicStreamRequest request2(factory_.get());
4366 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 4526 EXPECT_EQ(OK, request2.Request(server2, advertised_versions, privacy_mode_,
4367 /*cert_verify_flags=*/0, url2_, "GET", 4527 /*cert_verify_flags=*/0, url2_, "GET",
4368 net_log_, callback2.callback())); 4528 net_log_, callback2.callback()));
4369 QuicChromiumClientSession* session2 = GetActiveSession(server2); 4529 QuicChromiumClientSession* session2 = GetActiveSession(server2);
4370 EXPECT_EQ(QuicTime::Delta::FromSeconds(10), 4530 EXPECT_EQ(QuicTime::Delta::FromSeconds(10),
4371 session2->connection()->ping_timeout()); 4531 session2->connection()->ping_timeout());
4372 4532
4373 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 4533 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
4374 EXPECT_TRUE(stream2.get()); 4534 EXPECT_TRUE(stream2.get());
4375 EXPECT_EQ(OK, stream2->InitializeStream(&request_info, DEFAULT_PRIORITY, 4535 EXPECT_EQ(OK, stream2->InitializeStream(&request_info, DEFAULT_PRIORITY,
4376 net_log_, CompletionCallback())); 4536 net_log_, CompletionCallback()));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
4421 4581
4422 while (HasActiveCertVerifierJob(quic_server_id)) { 4582 while (HasActiveCertVerifierJob(quic_server_id)) {
4423 base::RunLoop().RunUntilIdle(); 4583 base::RunLoop().RunUntilIdle();
4424 } 4584 }
4425 } 4585 }
4426 // Verify CertVerifierJob has finished. 4586 // Verify CertVerifierJob has finished.
4427 EXPECT_FALSE(HasActiveCertVerifierJob(quic_server_id)); 4587 EXPECT_FALSE(HasActiveCertVerifierJob(quic_server_id));
4428 4588
4429 // Start a QUIC request. 4589 // Start a QUIC request.
4430 QuicStreamRequest request(factory_.get()); 4590 QuicStreamRequest request(factory_.get());
4591 QuicVersionVector advertised_versions;
4592 advertised_versions.push_back(version_);
4431 EXPECT_EQ(ERR_IO_PENDING, 4593 EXPECT_EQ(ERR_IO_PENDING,
4432 request.Request(host_port_pair_, privacy_mode_, 4594 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
4433 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4595 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4434 callback_.callback())); 4596 callback_.callback()));
4435 4597
4436 EXPECT_EQ(OK, callback_.WaitForResult()); 4598 EXPECT_EQ(OK, callback_.WaitForResult());
4437 4599
4438 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4600 std::unique_ptr<HttpStream> stream = request.CreateStream();
4439 EXPECT_TRUE(stream.get()); 4601 EXPECT_TRUE(stream.get());
4440 4602
4441 // Restore |race_cert_verification|. 4603 // Restore |race_cert_verification|.
4442 QuicStreamFactoryPeer::SetRaceCertVerification(factory_.get(), 4604 QuicStreamFactoryPeer::SetRaceCertVerification(factory_.get(),
(...skipping 24 matching lines...) Expand all
4467 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 4629 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
4468 "192.168.0.1", ""); 4630 "192.168.0.1", "");
4469 4631
4470 // Set up the TaskObserver to verify QuicChromiumPacketReader::StartReading 4632 // Set up the TaskObserver to verify QuicChromiumPacketReader::StartReading
4471 // posts a task. 4633 // posts a task.
4472 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver?? 4634 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver??
4473 SpdySessionTestTaskObserver observer("quic_chromium_packet_reader.cc", 4635 SpdySessionTestTaskObserver observer("quic_chromium_packet_reader.cc",
4474 "StartReading"); 4636 "StartReading");
4475 4637
4476 QuicStreamRequest request(factory_.get()); 4638 QuicStreamRequest request(factory_.get());
4477 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 4639 QuicVersionVector advertised_versions;
4478 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4640 advertised_versions.push_back(version_);
4479 callback_.callback())); 4641 EXPECT_EQ(OK,
4642 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
4643 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4644 callback_.callback()));
4480 4645
4481 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets 4646 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets
4482 // called. 4647 // called.
4483 base::RunLoop run_loop; 4648 base::RunLoop run_loop;
4484 run_loop.RunUntilIdle(); 4649 run_loop.RunUntilIdle();
4485 4650
4486 // Verify task that the observer's executed_count is 1, which indicates 4651 // Verify task that the observer's executed_count is 1, which indicates
4487 // QuicChromiumPacketReader::StartReading() has posted only one task and 4652 // QuicChromiumPacketReader::StartReading() has posted only one task and
4488 // yielded the read. 4653 // yielded the read.
4489 EXPECT_EQ(1u, observer.executed_count()); 4654 EXPECT_EQ(1u, observer.executed_count());
(...skipping 22 matching lines...) Expand all
4512 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 4677 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
4513 "192.168.0.1", ""); 4678 "192.168.0.1", "");
4514 4679
4515 // Set up the TaskObserver to verify QuicChromiumPacketReader::StartReading 4680 // Set up the TaskObserver to verify QuicChromiumPacketReader::StartReading
4516 // posts a task. 4681 // posts a task.
4517 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver?? 4682 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver??
4518 SpdySessionTestTaskObserver observer("quic_chromium_packet_reader.cc", 4683 SpdySessionTestTaskObserver observer("quic_chromium_packet_reader.cc",
4519 "StartReading"); 4684 "StartReading");
4520 4685
4521 QuicStreamRequest request(factory_.get()); 4686 QuicStreamRequest request(factory_.get());
4522 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 4687 QuicVersionVector advertised_versions;
4523 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4688 advertised_versions.push_back(version_);
4524 callback_.callback())); 4689 EXPECT_EQ(OK,
4690 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
4691 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4692 callback_.callback()));
4525 4693
4526 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets 4694 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets
4527 // called. 4695 // called.
4528 base::RunLoop run_loop; 4696 base::RunLoop run_loop;
4529 run_loop.RunUntilIdle(); 4697 run_loop.RunUntilIdle();
4530 4698
4531 // Verify task that the observer's executed_count is 1, which indicates 4699 // Verify task that the observer's executed_count is 1, which indicates
4532 // QuicChromiumPacketReader::StartReading() has posted only one task and 4700 // QuicChromiumPacketReader::StartReading() has posted only one task and
4533 // yielded the read. 4701 // yielded the read.
4534 EXPECT_EQ(1u, observer.executed_count()); 4702 EXPECT_EQ(1u, observer.executed_count());
4535 4703
4536 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4704 std::unique_ptr<HttpStream> stream = request.CreateStream();
4537 EXPECT_FALSE(stream.get()); // Session is already closed. 4705 EXPECT_FALSE(stream.get()); // Session is already closed.
4538 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 4706 EXPECT_TRUE(socket_data.AllReadDataConsumed());
4539 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 4707 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
4540 } 4708 }
4541 4709
4542 TEST_P(QuicStreamFactoryTest, ServerPushSessionAffinity) { 4710 TEST_P(QuicStreamFactoryTest, ServerPushSessionAffinity) {
4543 Initialize(); 4711 Initialize();
4544 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 4712 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
4545 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4713 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4546 4714
4547 MockQuicData socket_data; 4715 MockQuicData socket_data;
4548 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4716 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4549 socket_data.AddWrite(ConstructInitialSettingsPacket()); 4717 socket_data.AddWrite(ConstructInitialSettingsPacket());
4550 socket_data.AddSocketDataToFactory(&socket_factory_); 4718 socket_data.AddSocketDataToFactory(&socket_factory_);
4551 4719
4552 QuicStreamRequest request(factory_.get()); 4720 QuicStreamRequest request(factory_.get());
4721 QuicVersionVector advertised_versions;
4722 advertised_versions.push_back(version_);
4553 EXPECT_EQ(ERR_IO_PENDING, 4723 EXPECT_EQ(ERR_IO_PENDING,
4554 request.Request(host_port_pair_, privacy_mode_, 4724 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
4555 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4725 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4556 callback_.callback())); 4726 callback_.callback()));
4557 4727
4558 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4728 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4559 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4729 std::unique_ptr<HttpStream> stream = request.CreateStream();
4560 EXPECT_TRUE(stream.get()); 4730 EXPECT_TRUE(stream.get());
4561 4731
4562 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); 4732 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
4563 4733
4564 string url = "https://www.example.org/"; 4734 string url = "https://www.example.org/";
4565 4735
4566 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 4736 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
4567 4737
4568 QuicClientPromisedInfo promised(session, GetNthServerInitiatedStreamId(0), 4738 QuicClientPromisedInfo promised(session, GetNthServerInitiatedStreamId(0),
4569 kDefaultUrl); 4739 kDefaultUrl);
4570 (*QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get()) 4740 (*QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get())
4571 ->promised_by_url())[kDefaultUrl] = &promised; 4741 ->promised_by_url())[kDefaultUrl] = &promised;
4572 4742
4573 QuicStreamRequest request2(factory_.get()); 4743 QuicStreamRequest request2(factory_.get());
4574 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_, 4744 EXPECT_EQ(
4575 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4745 OK, request2.Request(host_port_pair_, advertised_versions, privacy_mode_,
4576 callback_.callback())); 4746 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4747 callback_.callback()));
4577 4748
4578 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); 4749 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
4579 } 4750 }
4580 4751
4581 TEST_P(QuicStreamFactoryTest, ServerPushPrivacyModeMismatch) { 4752 TEST_P(QuicStreamFactoryTest, ServerPushPrivacyModeMismatch) {
4582 Initialize(); 4753 Initialize();
4583 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 4754 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
4584 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4755 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4585 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4756 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4586 4757
4587 MockQuicData socket_data1; 4758 MockQuicData socket_data1;
4588 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4759 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4589 socket_data1.AddWrite(ConstructInitialSettingsPacket()); 4760 socket_data1.AddWrite(ConstructInitialSettingsPacket());
4590 socket_data1.AddWrite(client_maker_.MakeRstPacket( 4761 socket_data1.AddWrite(client_maker_.MakeRstPacket(
4591 2, true, GetNthServerInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 4762 2, true, GetNthServerInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
4592 socket_data1.AddSocketDataToFactory(&socket_factory_); 4763 socket_data1.AddSocketDataToFactory(&socket_factory_);
4593 4764
4594 MockQuicData socket_data2; 4765 MockQuicData socket_data2;
4595 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4766 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4596 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 4767 socket_data2.AddWrite(ConstructInitialSettingsPacket());
4597 socket_data2.AddSocketDataToFactory(&socket_factory_); 4768 socket_data2.AddSocketDataToFactory(&socket_factory_);
4598 4769
4599 QuicStreamRequest request(factory_.get()); 4770 QuicStreamRequest request(factory_.get());
4771 QuicVersionVector advertised_versions;
4772 advertised_versions.push_back(version_);
4600 EXPECT_EQ(ERR_IO_PENDING, 4773 EXPECT_EQ(ERR_IO_PENDING,
4601 request.Request(host_port_pair_, privacy_mode_, 4774 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
4602 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4775 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4603 callback_.callback())); 4776 callback_.callback()));
4604 4777
4605 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4778 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4606 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4779 std::unique_ptr<HttpStream> stream = request.CreateStream();
4607 EXPECT_TRUE(stream.get()); 4780 EXPECT_TRUE(stream.get());
4608 4781
4609 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); 4782 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
4610 4783
4611 string url = "https://www.example.org/"; 4784 string url = "https://www.example.org/";
4612 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 4785 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
4613 4786
4614 QuicClientPromisedInfo promised(session, GetNthServerInitiatedStreamId(0), 4787 QuicClientPromisedInfo promised(session, GetNthServerInitiatedStreamId(0),
4615 kDefaultUrl); 4788 kDefaultUrl);
4616 4789
4617 QuicClientPushPromiseIndex* index = 4790 QuicClientPushPromiseIndex* index =
4618 QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get()); 4791 QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get());
4619 4792
4620 (*index->promised_by_url())[kDefaultUrl] = &promised; 4793 (*index->promised_by_url())[kDefaultUrl] = &promised;
4621 EXPECT_EQ(index->GetPromised(kDefaultUrl), &promised); 4794 EXPECT_EQ(index->GetPromised(kDefaultUrl), &promised);
4622 4795
4623 // Doing the request should not use the push stream, but rather 4796 // Doing the request should not use the push stream, but rather
4624 // cancel it because the privacy modes do not match. 4797 // cancel it because the privacy modes do not match.
4625 QuicStreamRequest request2(factory_.get()); 4798 QuicStreamRequest request2(factory_.get());
4626 EXPECT_EQ(ERR_IO_PENDING, 4799 EXPECT_EQ(ERR_IO_PENDING,
4627 request2.Request(host_port_pair_, PRIVACY_MODE_ENABLED, 4800 request2.Request(host_port_pair_, advertised_versions,
4801 PRIVACY_MODE_ENABLED,
4628 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4802 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4629 callback_.callback())); 4803 callback_.callback()));
4630 4804
4631 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); 4805 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
4632 EXPECT_EQ(index->GetPromised(kDefaultUrl), nullptr); 4806 EXPECT_EQ(index->GetPromised(kDefaultUrl), nullptr);
4633 4807
4634 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4808 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4635 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 4809 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
4636 EXPECT_TRUE(stream2.get()); 4810 EXPECT_TRUE(stream2.get());
4637 4811
(...skipping 13 matching lines...) Expand all
4651 4825
4652 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 4826 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
4653 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4827 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4654 4828
4655 MockQuicData socket_data; 4829 MockQuicData socket_data;
4656 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4830 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4657 socket_data.AddWrite(ConstructInitialSettingsPacket()); 4831 socket_data.AddWrite(ConstructInitialSettingsPacket());
4658 socket_data.AddSocketDataToFactory(&socket_factory_); 4832 socket_data.AddSocketDataToFactory(&socket_factory_);
4659 4833
4660 QuicStreamRequest request1(factory_.get()); 4834 QuicStreamRequest request1(factory_.get());
4835 QuicVersionVector advertised_versions;
4836 advertised_versions.push_back(version_);
4661 EXPECT_EQ(ERR_IO_PENDING, 4837 EXPECT_EQ(ERR_IO_PENDING,
4662 request1.Request(destination1, privacy_mode_, 4838 request1.Request(destination1, advertised_versions, privacy_mode_,
4663 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4839 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4664 callback_.callback())); 4840 callback_.callback()));
4665 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4841 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4666 std::unique_ptr<HttpStream> stream1 = request1.CreateStream(); 4842 std::unique_ptr<HttpStream> stream1 = request1.CreateStream();
4667 EXPECT_TRUE(stream1.get()); 4843 EXPECT_TRUE(stream1.get());
4668 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 4844 EXPECT_TRUE(HasActiveSession(host_port_pair_));
4669 4845
4670 // Second request returns synchronously because it pools to existing session. 4846 // Second request returns synchronously because it pools to existing session.
4671 TestCompletionCallback callback2; 4847 TestCompletionCallback callback2;
4672 QuicStreamRequest request2(factory_.get()); 4848 QuicStreamRequest request2(factory_.get());
4673 EXPECT_EQ(OK, request2.Request(destination2, privacy_mode_, 4849 EXPECT_EQ(OK,
4674 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4850 request2.Request(destination2, advertised_versions, privacy_mode_,
4675 callback2.callback())); 4851 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4852 callback2.callback()));
4676 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 4853 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
4677 EXPECT_TRUE(stream2.get()); 4854 EXPECT_TRUE(stream2.get());
4678 4855
4679 QuicChromiumClientSession::Handle* session1 = 4856 QuicChromiumClientSession::Handle* session1 =
4680 QuicHttpStreamPeer::GetSessionHandle(stream1.get()); 4857 QuicHttpStreamPeer::GetSessionHandle(stream1.get());
4681 QuicChromiumClientSession::Handle* session2 = 4858 QuicChromiumClientSession::Handle* session2 =
4682 QuicHttpStreamPeer::GetSessionHandle(stream2.get()); 4859 QuicHttpStreamPeer::GetSessionHandle(stream2.get());
4683 EXPECT_TRUE(session1->SharesSameSession(*session2)); 4860 EXPECT_TRUE(session1->SharesSameSession(*session2));
4684 EXPECT_EQ(QuicServerId(host_port_pair_, privacy_mode_), 4861 EXPECT_EQ(QuicServerId(host_port_pair_, privacy_mode_),
4685 session1->server_id()); 4862 session1->server_id());
4686 4863
4687 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 4864 EXPECT_TRUE(socket_data.AllReadDataConsumed());
4688 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 4865 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
4689 } 4866 }
4690 4867
4691 TEST_P(QuicStreamFactoryTest, ForceHolBlockingEnabled) { 4868 TEST_P(QuicStreamFactoryTest, ForceHolBlockingEnabled) {
4692 force_hol_blocking_ = true; 4869 force_hol_blocking_ = true;
4693 Initialize(); 4870 Initialize();
4694 4871
4695 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 4872 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
4696 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4873 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4697 4874
4698 MockQuicData socket_data; 4875 MockQuicData socket_data;
4699 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4876 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4700 socket_data.AddWrite(ConstructInitialSettingsPacket()); 4877 socket_data.AddWrite(ConstructInitialSettingsPacket());
4701 socket_data.AddSocketDataToFactory(&socket_factory_); 4878 socket_data.AddSocketDataToFactory(&socket_factory_);
4702 4879
4703 QuicStreamRequest request(factory_.get()); 4880 QuicStreamRequest request(factory_.get());
4881 QuicVersionVector advertised_versions;
4882 advertised_versions.push_back(version_);
4704 EXPECT_EQ(ERR_IO_PENDING, 4883 EXPECT_EQ(ERR_IO_PENDING,
4705 request.Request(host_port_pair_, privacy_mode_, 4884 request.Request(host_port_pair_, advertised_versions, privacy_mode_,
4706 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4885 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4707 callback_.callback())); 4886 callback_.callback()));
4708 4887
4709 EXPECT_EQ(OK, callback_.WaitForResult()); 4888 EXPECT_EQ(OK, callback_.WaitForResult());
4710 4889
4711 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 4890 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
4712 if (session->connection()->version() == QUIC_VERSION_36) { 4891 if (session->connection()->version() == QUIC_VERSION_36) {
4713 EXPECT_TRUE(session->force_hol_blocking()); 4892 EXPECT_TRUE(session->force_hol_blocking());
4714 } else { 4893 } else {
4715 EXPECT_FALSE(session->force_hol_blocking()); 4894 EXPECT_FALSE(session->force_hol_blocking());
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
4791 ASSERT_TRUE(cert->VerifyNameMatch(origin2_.host(), false)); 4970 ASSERT_TRUE(cert->VerifyNameMatch(origin2_.host(), false));
4792 4971
4793 ProofVerifyDetailsChromium verify_details; 4972 ProofVerifyDetailsChromium verify_details;
4794 verify_details.cert_verify_result.verified_cert = cert; 4973 verify_details.cert_verify_result.verified_cert = cert;
4795 verify_details.cert_verify_result.is_issued_by_known_root = true; 4974 verify_details.cert_verify_result.is_issued_by_known_root = true;
4796 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4975 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4797 4976
4798 AddHangingSocketData(); 4977 AddHangingSocketData();
4799 4978
4800 QuicStreamRequest request(factory_.get()); 4979 QuicStreamRequest request(factory_.get());
4801 EXPECT_EQ(ERR_IO_PENDING, request.Request(destination, privacy_mode_, 4980 QuicVersionVector advertised_versions;
4802 /*cert_verify_flags=*/0, url, "GET", 4981 advertised_versions.push_back(version_);
4803 net_log_, callback_.callback())); 4982 EXPECT_EQ(ERR_IO_PENDING,
4983 request.Request(destination, advertised_versions, privacy_mode_,
4984 /*cert_verify_flags=*/0, url, "GET", net_log_,
4985 callback_.callback()));
4804 4986
4805 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_QUIC_HANDSHAKE_FAILED)); 4987 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_QUIC_HANDSHAKE_FAILED));
4806 4988
4807 EXPECT_TRUE(AllDataConsumed()); 4989 EXPECT_TRUE(AllDataConsumed());
4808 } 4990 }
4809 4991
4810 // QuicStreamRequest is pooled based on |destination| if certificate matches. 4992 // QuicStreamRequest is pooled based on |destination| if certificate matches.
4811 TEST_P(QuicStreamFactoryWithDestinationTest, SharedCertificate) { 4993 TEST_P(QuicStreamFactoryWithDestinationTest, SharedCertificate) {
4812 Initialize(); 4994 Initialize();
4813 4995
(...skipping 19 matching lines...) Expand all
4833 std::unique_ptr<QuicEncryptedPacket> settings_packet( 5015 std::unique_ptr<QuicEncryptedPacket> settings_packet(
4834 client_maker_.MakeInitialSettingsPacket(1, nullptr)); 5016 client_maker_.MakeInitialSettingsPacket(1, nullptr));
4835 MockWrite writes[] = {MockWrite(SYNCHRONOUS, settings_packet->data(), 5017 MockWrite writes[] = {MockWrite(SYNCHRONOUS, settings_packet->data(),
4836 settings_packet->length(), 1)}; 5018 settings_packet->length(), 1)};
4837 std::unique_ptr<SequencedSocketData> sequenced_socket_data( 5019 std::unique_ptr<SequencedSocketData> sequenced_socket_data(
4838 new SequencedSocketData(reads, 1, writes, arraysize(writes))); 5020 new SequencedSocketData(reads, 1, writes, arraysize(writes)));
4839 socket_factory_.AddSocketDataProvider(sequenced_socket_data.get()); 5021 socket_factory_.AddSocketDataProvider(sequenced_socket_data.get());
4840 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data)); 5022 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data));
4841 5023
4842 QuicStreamRequest request1(factory_.get()); 5024 QuicStreamRequest request1(factory_.get());
5025 QuicVersionVector advertised_versions;
5026 advertised_versions.push_back(version_);
4843 EXPECT_EQ(ERR_IO_PENDING, 5027 EXPECT_EQ(ERR_IO_PENDING,
4844 request1.Request(destination, privacy_mode_, 5028 request1.Request(destination, advertised_versions, privacy_mode_,
4845 /*cert_verify_flags=*/0, url1, "GET", net_log_, 5029 /*cert_verify_flags=*/0, url1, "GET", net_log_,
4846 callback_.callback())); 5030 callback_.callback()));
4847 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 5031 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4848 5032
4849 std::unique_ptr<HttpStream> stream1 = request1.CreateStream(); 5033 std::unique_ptr<HttpStream> stream1 = request1.CreateStream();
4850 EXPECT_TRUE(stream1.get()); 5034 EXPECT_TRUE(stream1.get());
4851 EXPECT_TRUE(HasActiveSession(origin1_)); 5035 EXPECT_TRUE(HasActiveSession(origin1_));
4852 5036
4853 // Second request returns synchronously because it pools to existing session. 5037 // Second request returns synchronously because it pools to existing session.
4854 TestCompletionCallback callback2; 5038 TestCompletionCallback callback2;
4855 QuicStreamRequest request2(factory_.get()); 5039 QuicStreamRequest request2(factory_.get());
4856 EXPECT_EQ(OK, request2.Request(destination, privacy_mode_, 5040 EXPECT_EQ(OK,
4857 /*cert_verify_flags=*/0, url2, "GET", net_log_, 5041 request2.Request(destination, advertised_versions, privacy_mode_,
4858 callback2.callback())); 5042 /*cert_verify_flags=*/0, url2, "GET", net_log_,
5043 callback2.callback()));
4859 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 5044 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
4860 EXPECT_TRUE(stream2.get()); 5045 EXPECT_TRUE(stream2.get());
4861 5046
4862 QuicChromiumClientSession::Handle* session1 = 5047 QuicChromiumClientSession::Handle* session1 =
4863 QuicHttpStreamPeer::GetSessionHandle(stream1.get()); 5048 QuicHttpStreamPeer::GetSessionHandle(stream1.get());
4864 QuicChromiumClientSession::Handle* session2 = 5049 QuicChromiumClientSession::Handle* session2 =
4865 QuicHttpStreamPeer::GetSessionHandle(stream2.get()); 5050 QuicHttpStreamPeer::GetSessionHandle(stream2.get());
4866 EXPECT_TRUE(session1->SharesSameSession(*session2)); 5051 EXPECT_TRUE(session1->SharesSameSession(*session2));
4867 5052
4868 EXPECT_EQ(QuicServerId(origin1_, privacy_mode_), session1->server_id()); 5053 EXPECT_EQ(QuicServerId(origin1_, privacy_mode_), session1->server_id());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
4905 std::unique_ptr<SequencedSocketData> sequenced_socket_data( 5090 std::unique_ptr<SequencedSocketData> sequenced_socket_data(
4906 new SequencedSocketData(reads, 1, writes, arraysize(writes))); 5091 new SequencedSocketData(reads, 1, writes, arraysize(writes)));
4907 socket_factory_.AddSocketDataProvider(sequenced_socket_data.get()); 5092 socket_factory_.AddSocketDataProvider(sequenced_socket_data.get());
4908 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data)); 5093 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data));
4909 std::unique_ptr<SequencedSocketData> sequenced_socket_data1( 5094 std::unique_ptr<SequencedSocketData> sequenced_socket_data1(
4910 new SequencedSocketData(reads, 1, writes, arraysize(writes))); 5095 new SequencedSocketData(reads, 1, writes, arraysize(writes)));
4911 socket_factory_.AddSocketDataProvider(sequenced_socket_data1.get()); 5096 socket_factory_.AddSocketDataProvider(sequenced_socket_data1.get());
4912 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data1)); 5097 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data1));
4913 5098
4914 QuicStreamRequest request1(factory_.get()); 5099 QuicStreamRequest request1(factory_.get());
4915 EXPECT_EQ(ERR_IO_PENDING, 5100 QuicVersionVector advertised_versions;
4916 request1.Request(destination, PRIVACY_MODE_DISABLED, 5101 advertised_versions.push_back(version_);
4917 /*cert_verify_flags=*/0, url1, "GET", net_log_, 5102 EXPECT_EQ(
4918 callback_.callback())); 5103 ERR_IO_PENDING,
5104 request1.Request(destination, advertised_versions, PRIVACY_MODE_DISABLED,
5105 /*cert_verify_flags=*/0, url1, "GET", net_log_,
5106 callback_.callback()));
4919 EXPECT_EQ(OK, callback_.WaitForResult()); 5107 EXPECT_EQ(OK, callback_.WaitForResult());
4920 std::unique_ptr<HttpStream> stream1 = request1.CreateStream(); 5108 std::unique_ptr<HttpStream> stream1 = request1.CreateStream();
4921 EXPECT_TRUE(stream1.get()); 5109 EXPECT_TRUE(stream1.get());
4922 EXPECT_TRUE(HasActiveSession(origin1_)); 5110 EXPECT_TRUE(HasActiveSession(origin1_));
4923 5111
4924 TestCompletionCallback callback2; 5112 TestCompletionCallback callback2;
4925 QuicStreamRequest request2(factory_.get()); 5113 QuicStreamRequest request2(factory_.get());
4926 EXPECT_EQ(ERR_IO_PENDING, 5114 EXPECT_EQ(
4927 request2.Request(destination, PRIVACY_MODE_ENABLED, 5115 ERR_IO_PENDING,
4928 /*cert_verify_flags=*/0, url2, "GET", net_log_, 5116 request2.Request(destination, advertised_versions, PRIVACY_MODE_ENABLED,
4929 callback2.callback())); 5117 /*cert_verify_flags=*/0, url2, "GET", net_log_,
5118 callback2.callback()));
4930 EXPECT_EQ(OK, callback2.WaitForResult()); 5119 EXPECT_EQ(OK, callback2.WaitForResult());
4931 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 5120 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
4932 EXPECT_TRUE(stream2.get()); 5121 EXPECT_TRUE(stream2.get());
4933 5122
4934 // |request2| does not pool to the first session, because PrivacyMode does not 5123 // |request2| does not pool to the first session, because PrivacyMode does not
4935 // match. Instead, another session is opened to the same destination, but 5124 // match. Instead, another session is opened to the same destination, but
4936 // with a different QuicServerId. 5125 // with a different QuicServerId.
4937 QuicChromiumClientSession::Handle* session1 = 5126 QuicChromiumClientSession::Handle* session1 =
4938 QuicHttpStreamPeer::GetSessionHandle(stream1.get()); 5127 QuicHttpStreamPeer::GetSessionHandle(stream1.get());
4939 QuicChromiumClientSession::Handle* session2 = 5128 QuicChromiumClientSession::Handle* session2 =
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
4988 std::unique_ptr<SequencedSocketData> sequenced_socket_data( 5177 std::unique_ptr<SequencedSocketData> sequenced_socket_data(
4989 new SequencedSocketData(reads, 1, writes, arraysize(writes))); 5178 new SequencedSocketData(reads, 1, writes, arraysize(writes)));
4990 socket_factory_.AddSocketDataProvider(sequenced_socket_data.get()); 5179 socket_factory_.AddSocketDataProvider(sequenced_socket_data.get());
4991 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data)); 5180 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data));
4992 std::unique_ptr<SequencedSocketData> sequenced_socket_data1( 5181 std::unique_ptr<SequencedSocketData> sequenced_socket_data1(
4993 new SequencedSocketData(reads, 1, writes, arraysize(writes))); 5182 new SequencedSocketData(reads, 1, writes, arraysize(writes)));
4994 socket_factory_.AddSocketDataProvider(sequenced_socket_data1.get()); 5183 socket_factory_.AddSocketDataProvider(sequenced_socket_data1.get());
4995 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data1)); 5184 sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data1));
4996 5185
4997 QuicStreamRequest request1(factory_.get()); 5186 QuicStreamRequest request1(factory_.get());
5187 QuicVersionVector advertised_versions;
5188 advertised_versions.push_back(version_);
4998 EXPECT_EQ(ERR_IO_PENDING, 5189 EXPECT_EQ(ERR_IO_PENDING,
4999 request1.Request(destination, privacy_mode_, 5190 request1.Request(destination, advertised_versions, privacy_mode_,
5000 /*cert_verify_flags=*/0, url1, "GET", net_log_, 5191 /*cert_verify_flags=*/0, url1, "GET", net_log_,
5001 callback_.callback())); 5192 callback_.callback()));
5002 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 5193 EXPECT_THAT(callback_.WaitForResult(), IsOk());
5003 std::unique_ptr<HttpStream> stream1 = request1.CreateStream(); 5194 std::unique_ptr<HttpStream> stream1 = request1.CreateStream();
5004 EXPECT_TRUE(stream1.get()); 5195 EXPECT_TRUE(stream1.get());
5005 EXPECT_TRUE(HasActiveSession(origin1_)); 5196 EXPECT_TRUE(HasActiveSession(origin1_));
5006 5197
5007 TestCompletionCallback callback2; 5198 TestCompletionCallback callback2;
5008 QuicStreamRequest request2(factory_.get()); 5199 QuicStreamRequest request2(factory_.get());
5009 EXPECT_EQ(ERR_IO_PENDING, 5200 EXPECT_EQ(ERR_IO_PENDING,
5010 request2.Request(destination, privacy_mode_, 5201 request2.Request(destination, advertised_versions, privacy_mode_,
5011 /*cert_verify_flags=*/0, url2, "GET", net_log_, 5202 /*cert_verify_flags=*/0, url2, "GET", net_log_,
5012 callback2.callback())); 5203 callback2.callback()));
5013 EXPECT_THAT(callback2.WaitForResult(), IsOk()); 5204 EXPECT_THAT(callback2.WaitForResult(), IsOk());
5014 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 5205 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
5015 EXPECT_TRUE(stream2.get()); 5206 EXPECT_TRUE(stream2.get());
5016 5207
5017 // |request2| does not pool to the first session, because the certificate does 5208 // |request2| does not pool to the first session, because the certificate does
5018 // not match. Instead, another session is opened to the same destination, but 5209 // not match. Instead, another session is opened to the same destination, but
5019 // with a different QuicServerId. 5210 // with a different QuicServerId.
5020 QuicChromiumClientSession::Handle* session1 = 5211 QuicChromiumClientSession::Handle* session1 =
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
5071 // Clear all cached states. 5262 // Clear all cached states.
5072 factory_->ClearCachedStatesInCryptoConfig( 5263 factory_->ClearCachedStatesInCryptoConfig(
5073 base::Callback<bool(const GURL&)>()); 5264 base::Callback<bool(const GURL&)>());
5074 EXPECT_TRUE(test_cases[0].state->certs().empty()); 5265 EXPECT_TRUE(test_cases[0].state->certs().empty());
5075 EXPECT_TRUE(test_cases[1].state->certs().empty()); 5266 EXPECT_TRUE(test_cases[1].state->certs().empty());
5076 EXPECT_TRUE(test_cases[2].state->certs().empty()); 5267 EXPECT_TRUE(test_cases[2].state->certs().empty());
5077 } 5268 }
5078 5269
5079 } // namespace test 5270 } // namespace test
5080 } // namespace net 5271 } // namespace net
OLDNEW
« no previous file with comments | « 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