| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/quic/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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |