| 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 24 matching lines...) Expand all Loading... |
| 35 #include "net/quic/chromium/quic_test_packet_maker.h" | 35 #include "net/quic/chromium/quic_test_packet_maker.h" |
| 36 #include "net/quic/chromium/test_task_runner.h" | 36 #include "net/quic/chromium/test_task_runner.h" |
| 37 #include "net/quic/core/crypto/crypto_handshake.h" | 37 #include "net/quic/core/crypto/crypto_handshake.h" |
| 38 #include "net/quic/core/crypto/quic_crypto_client_config.h" | 38 #include "net/quic/core/crypto/quic_crypto_client_config.h" |
| 39 #include "net/quic/core/crypto/quic_decrypter.h" | 39 #include "net/quic/core/crypto/quic_decrypter.h" |
| 40 #include "net/quic/core/crypto/quic_encrypter.h" | 40 #include "net/quic/core/crypto/quic_encrypter.h" |
| 41 #include "net/quic/core/quic_client_promised_info.h" | 41 #include "net/quic/core/quic_client_promised_info.h" |
| 42 #include "net/quic/test_tools/mock_clock.h" | 42 #include "net/quic/test_tools/mock_clock.h" |
| 43 #include "net/quic/test_tools/mock_random.h" | 43 #include "net/quic/test_tools/mock_random.h" |
| 44 #include "net/quic/test_tools/quic_config_peer.h" | 44 #include "net/quic/test_tools/quic_config_peer.h" |
| 45 #include "net/quic/test_tools/quic_spdy_session_peer.h" | |
| 46 #include "net/quic/test_tools/quic_test_utils.h" | 45 #include "net/quic/test_tools/quic_test_utils.h" |
| 47 #include "net/socket/next_proto.h" | 46 #include "net/socket/next_proto.h" |
| 48 #include "net/socket/socket_test_util.h" | 47 #include "net/socket/socket_test_util.h" |
| 49 #include "net/spdy/chromium/spdy_session_test_util.h" | 48 #include "net/spdy/chromium/spdy_session_test_util.h" |
| 50 #include "net/spdy/core/spdy_test_utils.h" | 49 #include "net/spdy/core/spdy_test_utils.h" |
| 51 #include "net/ssl/channel_id_service.h" | 50 #include "net/ssl/channel_id_service.h" |
| 52 #include "net/ssl/default_channel_id_store.h" | 51 #include "net/ssl/default_channel_id_store.h" |
| 53 #include "net/test/cert_test_util.h" | 52 #include "net/test/cert_test_util.h" |
| 54 #include "net/test/gtest_util.h" | 53 #include "net/test/gtest_util.h" |
| 55 #include "net/test/test_data_directory.h" | 54 #include "net/test/test_data_directory.h" |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 312 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 311 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 313 return socket_factory_.udp_client_socket_ports()[socket_count]; | 312 return socket_factory_.udp_client_socket_ports()[socket_count]; |
| 314 } | 313 } |
| 315 | 314 |
| 316 std::unique_ptr<QuicEncryptedPacket> ConstructClientConnectionClosePacket( | 315 std::unique_ptr<QuicEncryptedPacket> ConstructClientConnectionClosePacket( |
| 317 QuicPacketNumber num) { | 316 QuicPacketNumber num) { |
| 318 return client_maker_.MakeConnectionClosePacket(num); | 317 return client_maker_.MakeConnectionClosePacket(num); |
| 319 } | 318 } |
| 320 | 319 |
| 321 std::unique_ptr<QuicEncryptedPacket> ConstructClientRstPacket() { | 320 std::unique_ptr<QuicEncryptedPacket> ConstructClientRstPacket() { |
| 322 QuicStreamId stream_id = GetNthClientInitiatedStreamId(0); | 321 QuicStreamId stream_id = kClientDataStreamId1; |
| 323 return client_maker_.MakeRstPacket(1, true, stream_id, | 322 return client_maker_.MakeRstPacket(1, true, stream_id, |
| 324 QUIC_RST_ACKNOWLEDGEMENT); | 323 QUIC_RST_ACKNOWLEDGEMENT); |
| 325 } | 324 } |
| 326 | 325 |
| 327 std::unique_ptr<QuicEncryptedPacket> ConstructClientRstPacket( | 326 std::unique_ptr<QuicEncryptedPacket> ConstructClientRstPacket( |
| 328 QuicPacketNumber packet_number) { | 327 QuicPacketNumber packet_number) { |
| 329 QuicStreamId stream_id = GetNthClientInitiatedStreamId(0); | 328 QuicStreamId stream_id = kClientDataStreamId1; |
| 330 return client_maker_.MakeRstPacket(packet_number, true, stream_id, | 329 return client_maker_.MakeRstPacket(packet_number, true, stream_id, |
| 331 QUIC_RST_ACKNOWLEDGEMENT); | 330 QUIC_RST_ACKNOWLEDGEMENT); |
| 332 } | 331 } |
| 333 | 332 |
| 334 static ProofVerifyDetailsChromium DefaultProofVerifyDetails() { | 333 static ProofVerifyDetailsChromium DefaultProofVerifyDetails() { |
| 335 // Load a certificate that is valid for *.example.org | 334 // Load a certificate that is valid for *.example.org |
| 336 scoped_refptr<X509Certificate> test_cert( | 335 scoped_refptr<X509Certificate> test_cert( |
| 337 ImportCertFromFile(GetTestCertsDirectory(), "wildcard.pem")); | 336 ImportCertFromFile(GetTestCertsDirectory(), "wildcard.pem")); |
| 338 EXPECT_TRUE(test_cert.get()); | 337 EXPECT_TRUE(test_cert.get()); |
| 339 ProofVerifyDetailsChromium verify_details; | 338 ProofVerifyDetailsChromium verify_details; |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 416 socket_data1.AddSocketDataToFactory(&socket_factory_); | 415 socket_data1.AddSocketDataToFactory(&socket_factory_); |
| 417 | 416 |
| 418 // Set up second socket data provider that is used after | 417 // Set up second socket data provider that is used after |
| 419 // migration. | 418 // migration. |
| 420 MockQuicData socket_data2; | 419 MockQuicData socket_data2; |
| 421 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 420 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 422 socket_data2.AddWrite(ConstructInitialSettingsPacket()); | 421 socket_data2.AddWrite(ConstructInitialSettingsPacket()); |
| 423 socket_data2.AddWrite( | 422 socket_data2.AddWrite( |
| 424 client_maker_.MakePingPacket(2, /*include_version=*/true)); | 423 client_maker_.MakePingPacket(2, /*include_version=*/true)); |
| 425 socket_data2.AddWrite(client_maker_.MakeRstPacket( | 424 socket_data2.AddWrite(client_maker_.MakeRstPacket( |
| 426 3, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); | 425 3, true, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); |
| 427 socket_data2.AddSocketDataToFactory(&socket_factory_); | 426 socket_data2.AddSocketDataToFactory(&socket_factory_); |
| 428 | 427 |
| 429 // Create request and QuicHttpStream. | 428 // Create request and QuicHttpStream. |
| 430 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 429 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 431 EXPECT_EQ(ERR_IO_PENDING, | 430 EXPECT_EQ(ERR_IO_PENDING, |
| 432 request.Request(host_port_pair_, privacy_mode_, | 431 request.Request(host_port_pair_, privacy_mode_, |
| 433 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 432 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 434 callback_.callback())); | 433 callback_.callback())); |
| 435 EXPECT_EQ(OK, callback_.WaitForResult()); | 434 EXPECT_EQ(OK, callback_.WaitForResult()); |
| 436 | 435 |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 671 EXPECT_EQ(signature2, cached2->signature()); | 670 EXPECT_EQ(signature2, cached2->signature()); |
| 672 ASSERT_EQ(1U, cached->certs().size()); | 671 ASSERT_EQ(1U, cached->certs().size()); |
| 673 EXPECT_EQ(test_cert2, cached2->certs()[0]); | 672 EXPECT_EQ(test_cert2, cached2->certs()[0]); |
| 674 } | 673 } |
| 675 | 674 |
| 676 void RunTestLoopUntilIdle() { | 675 void RunTestLoopUntilIdle() { |
| 677 while (!runner_->GetPostedTasks().empty()) | 676 while (!runner_->GetPostedTasks().empty()) |
| 678 runner_->RunNextTask(); | 677 runner_->RunNextTask(); |
| 679 } | 678 } |
| 680 | 679 |
| 681 QuicStreamId GetNthClientInitiatedStreamId(int n) { | |
| 682 return test::GetNthClientInitiatedStreamId(version_, n); | |
| 683 } | |
| 684 | |
| 685 QuicStreamId GetNthServerInitiatedStreamId(int n) { | |
| 686 return test::GetNthServerInitiatedStreamId(version_, n); | |
| 687 } | |
| 688 | |
| 689 // Helper methods for tests of connection migration on write error. | 680 // Helper methods for tests of connection migration on write error. |
| 690 void TestMigrationOnWriteErrorNonMigratableStream(IoMode write_error_mode); | 681 void TestMigrationOnWriteErrorNonMigratableStream(IoMode write_error_mode); |
| 691 void TestMigrationOnWriteErrorMigrationDisabled(IoMode write_error_mode); | 682 void TestMigrationOnWriteErrorMigrationDisabled(IoMode write_error_mode); |
| 692 void TestMigrationOnWriteError(IoMode write_error_mode); | 683 void TestMigrationOnWriteError(IoMode write_error_mode); |
| 693 void TestMigrationOnWriteErrorNoNewNetwork(IoMode write_error_mode); | 684 void TestMigrationOnWriteErrorNoNewNetwork(IoMode write_error_mode); |
| 694 void TestMigrationOnMultipleWriteErrors(IoMode first_write_error_mode, | 685 void TestMigrationOnMultipleWriteErrors(IoMode first_write_error_mode, |
| 695 IoMode second_write_error_mode); | 686 IoMode second_write_error_mode); |
| 696 void TestMigrationOnWriteErrorWithNotificationQueued(bool disconnected); | 687 void TestMigrationOnWriteErrorWithNotificationQueued(bool disconnected); |
| 697 void TestMigrationOnNotificationWithWriteErrorQueued(bool disconnected); | 688 void TestMigrationOnNotificationWithWriteErrorQueued(bool disconnected); |
| 698 void OnNetworkDisconnected(bool async_write_before); | 689 void OnNetworkDisconnected(bool async_write_before); |
| (...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1379 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 1370 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 1380 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 1371 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
| 1381 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 1372 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
| 1382 } | 1373 } |
| 1383 | 1374 |
| 1384 TEST_P(QuicStreamFactoryTest, MaxOpenStream) { | 1375 TEST_P(QuicStreamFactoryTest, MaxOpenStream) { |
| 1385 Initialize(); | 1376 Initialize(); |
| 1386 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 1377 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 1387 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 1378 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 1388 | 1379 |
| 1389 QuicStreamId stream_id = GetNthClientInitiatedStreamId(0); | 1380 QuicStreamId stream_id = kClientDataStreamId1; |
| 1390 MockQuicData socket_data; | 1381 MockQuicData socket_data; |
| 1391 socket_data.AddWrite(ConstructInitialSettingsPacket()); | 1382 socket_data.AddWrite(ConstructInitialSettingsPacket()); |
| 1392 socket_data.AddWrite( | 1383 socket_data.AddWrite( |
| 1393 client_maker_.MakeRstPacket(2, true, stream_id, QUIC_STREAM_CANCELLED)); | 1384 client_maker_.MakeRstPacket(2, true, stream_id, QUIC_STREAM_CANCELLED)); |
| 1394 socket_data.AddRead( | 1385 socket_data.AddRead( |
| 1395 server_maker_.MakeRstPacket(1, false, stream_id, QUIC_STREAM_CANCELLED)); | 1386 server_maker_.MakeRstPacket(1, false, stream_id, QUIC_STREAM_CANCELLED)); |
| 1396 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 1387 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 1397 socket_data.AddSocketDataToFactory(&socket_factory_); | 1388 socket_data.AddSocketDataToFactory(&socket_factory_); |
| 1398 | 1389 |
| 1399 HttpRequestInfo request_info; | 1390 HttpRequestInfo request_info; |
| (...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1758 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 1749 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 1759 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 1750 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 1760 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 1751 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 1761 | 1752 |
| 1762 int packet_number = 1; | 1753 int packet_number = 1; |
| 1763 MockQuicData socket_data; | 1754 MockQuicData socket_data; |
| 1764 QuicStreamOffset header_stream_offset = 0; | 1755 QuicStreamOffset header_stream_offset = 0; |
| 1765 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 1756 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 1766 socket_data.AddWrite( | 1757 socket_data.AddWrite( |
| 1767 ConstructInitialSettingsPacket(packet_number++, &header_stream_offset)); | 1758 ConstructInitialSettingsPacket(packet_number++, &header_stream_offset)); |
| 1768 socket_data.AddWrite(ConstructGetRequestPacket( | 1759 socket_data.AddWrite(ConstructGetRequestPacket(packet_number++, |
| 1769 packet_number++, GetNthClientInitiatedStreamId(0), true, true, | 1760 kClientDataStreamId1, true, |
| 1770 &header_stream_offset)); | 1761 true, &header_stream_offset)); |
| 1771 if (async_write_before) { | 1762 if (async_write_before) { |
| 1772 socket_data.AddWrite(ASYNC, OK); | 1763 socket_data.AddWrite(ASYNC, OK); |
| 1773 packet_number++; | 1764 packet_number++; |
| 1774 } | 1765 } |
| 1775 socket_data.AddSocketDataToFactory(&socket_factory_); | 1766 socket_data.AddSocketDataToFactory(&socket_factory_); |
| 1776 | 1767 |
| 1777 // Create request and QuicHttpStream. | 1768 // Create request and QuicHttpStream. |
| 1778 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 1769 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 1779 EXPECT_EQ(ERR_IO_PENDING, | 1770 EXPECT_EQ(ERR_IO_PENDING, |
| 1780 request.Request(host_port_pair_, privacy_mode_, | 1771 request.Request(host_port_pair_, privacy_mode_, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1804 | 1795 |
| 1805 // Do an async write to leave writer blocked. | 1796 // Do an async write to leave writer blocked. |
| 1806 if (async_write_before) | 1797 if (async_write_before) |
| 1807 session->connection()->SendPing(); | 1798 session->connection()->SendPing(); |
| 1808 | 1799 |
| 1809 // Set up second socket data provider that is used after migration. | 1800 // Set up second socket data provider that is used after migration. |
| 1810 // The response to the earlier request is read on this new socket. | 1801 // The response to the earlier request is read on this new socket. |
| 1811 MockQuicData socket_data1; | 1802 MockQuicData socket_data1; |
| 1812 socket_data1.AddWrite( | 1803 socket_data1.AddWrite( |
| 1813 client_maker_.MakePingPacket(packet_number++, /*include_version=*/true)); | 1804 client_maker_.MakePingPacket(packet_number++, /*include_version=*/true)); |
| 1814 socket_data1.AddRead(ConstructOkResponsePacket( | 1805 socket_data1.AddRead( |
| 1815 1, GetNthClientInitiatedStreamId(0), false, false)); | 1806 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); |
| 1816 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 1807 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 1817 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( | 1808 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( |
| 1818 packet_number++, false, GetNthClientInitiatedStreamId(0), | 1809 packet_number++, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, |
| 1819 QUIC_STREAM_CANCELLED, 1, 1, 1, true)); | 1810 1, true)); |
| 1820 socket_data1.AddSocketDataToFactory(&socket_factory_); | 1811 socket_data1.AddSocketDataToFactory(&socket_factory_); |
| 1821 | 1812 |
| 1822 // Trigger connection migration. This should cause a PING frame | 1813 // Trigger connection migration. This should cause a PING frame |
| 1823 // to be emitted. | 1814 // to be emitted. |
| 1824 scoped_mock_network_change_notifier_->mock_network_change_notifier() | 1815 scoped_mock_network_change_notifier_->mock_network_change_notifier() |
| 1825 ->NotifyNetworkMadeDefault(kNewNetworkForTests); | 1816 ->NotifyNetworkMadeDefault(kNewNetworkForTests); |
| 1826 | 1817 |
| 1827 // The session should now be marked as going away. Ensure that | 1818 // The session should now be marked as going away. Ensure that |
| 1828 // while it is still alive, it is no longer active. | 1819 // while it is still alive, it is no longer active. |
| 1829 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 1820 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1888 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 1879 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 1889 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 1880 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 1890 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 1881 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 1891 | 1882 |
| 1892 int packet_number = 1; | 1883 int packet_number = 1; |
| 1893 MockQuicData socket_data; | 1884 MockQuicData socket_data; |
| 1894 QuicStreamOffset header_stream_offset = 0; | 1885 QuicStreamOffset header_stream_offset = 0; |
| 1895 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 1886 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 1896 socket_data.AddWrite( | 1887 socket_data.AddWrite( |
| 1897 ConstructInitialSettingsPacket(packet_number++, &header_stream_offset)); | 1888 ConstructInitialSettingsPacket(packet_number++, &header_stream_offset)); |
| 1898 socket_data.AddWrite(ConstructGetRequestPacket( | 1889 socket_data.AddWrite(ConstructGetRequestPacket(packet_number++, |
| 1899 packet_number++, GetNthClientInitiatedStreamId(0), true, true, | 1890 kClientDataStreamId1, true, |
| 1900 &header_stream_offset)); | 1891 true, &header_stream_offset)); |
| 1901 if (async_write_before) { | 1892 if (async_write_before) { |
| 1902 socket_data.AddWrite(ASYNC, OK); | 1893 socket_data.AddWrite(ASYNC, OK); |
| 1903 packet_number++; | 1894 packet_number++; |
| 1904 } | 1895 } |
| 1905 socket_data.AddSocketDataToFactory(&socket_factory_); | 1896 socket_data.AddSocketDataToFactory(&socket_factory_); |
| 1906 | 1897 |
| 1907 // Create request and QuicHttpStream. | 1898 // Create request and QuicHttpStream. |
| 1908 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 1899 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 1909 EXPECT_EQ(ERR_IO_PENDING, | 1900 EXPECT_EQ(ERR_IO_PENDING, |
| 1910 request.Request(host_port_pair_, privacy_mode_, | 1901 request.Request(host_port_pair_, privacy_mode_, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1934 | 1925 |
| 1935 // Do an async write to leave writer blocked. | 1926 // Do an async write to leave writer blocked. |
| 1936 if (async_write_before) | 1927 if (async_write_before) |
| 1937 session->connection()->SendPing(); | 1928 session->connection()->SendPing(); |
| 1938 | 1929 |
| 1939 // Set up second socket data provider that is used after migration. | 1930 // Set up second socket data provider that is used after migration. |
| 1940 // The response to the earlier request is read on this new socket. | 1931 // The response to the earlier request is read on this new socket. |
| 1941 MockQuicData socket_data1; | 1932 MockQuicData socket_data1; |
| 1942 socket_data1.AddWrite( | 1933 socket_data1.AddWrite( |
| 1943 client_maker_.MakePingPacket(packet_number++, /*include_version=*/true)); | 1934 client_maker_.MakePingPacket(packet_number++, /*include_version=*/true)); |
| 1944 socket_data1.AddRead(ConstructOkResponsePacket( | 1935 socket_data1.AddRead( |
| 1945 1, GetNthClientInitiatedStreamId(0), false, false)); | 1936 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); |
| 1946 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 1937 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 1947 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( | 1938 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( |
| 1948 packet_number++, false, GetNthClientInitiatedStreamId(0), | 1939 packet_number++, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, |
| 1949 QUIC_STREAM_CANCELLED, 1, 1, 1, true)); | 1940 1, true)); |
| 1950 socket_data1.AddSocketDataToFactory(&socket_factory_); | 1941 socket_data1.AddSocketDataToFactory(&socket_factory_); |
| 1951 | 1942 |
| 1952 // Trigger connection migration. This should cause a PING frame | 1943 // Trigger connection migration. This should cause a PING frame |
| 1953 // to be emitted. | 1944 // to be emitted. |
| 1954 scoped_mock_network_change_notifier_->mock_network_change_notifier() | 1945 scoped_mock_network_change_notifier_->mock_network_change_notifier() |
| 1955 ->NotifyNetworkDisconnected(kDefaultNetworkForTests); | 1946 ->NotifyNetworkDisconnected(kDefaultNetworkForTests); |
| 1956 | 1947 |
| 1957 // The session should now be marked as going away. Ensure that | 1948 // The session should now be marked as going away. Ensure that |
| 1958 // while it is still alive, it is no longer active. | 1949 // while it is still alive, it is no longer active. |
| 1959 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 1950 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2062 TEST_P(QuicStreamFactoryTest, OnNetworkMadeDefaultNonMigratableStream) { | 2053 TEST_P(QuicStreamFactoryTest, OnNetworkMadeDefaultNonMigratableStream) { |
| 2063 InitializeConnectionMigrationTest( | 2054 InitializeConnectionMigrationTest( |
| 2064 {kDefaultNetworkForTests, kNewNetworkForTests}); | 2055 {kDefaultNetworkForTests, kNewNetworkForTests}); |
| 2065 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 2056 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 2066 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 2057 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 2067 | 2058 |
| 2068 MockQuicData socket_data; | 2059 MockQuicData socket_data; |
| 2069 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 2060 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 2070 socket_data.AddWrite(ConstructInitialSettingsPacket()); | 2061 socket_data.AddWrite(ConstructInitialSettingsPacket()); |
| 2071 socket_data.AddWrite(client_maker_.MakeRstPacket( | 2062 socket_data.AddWrite(client_maker_.MakeRstPacket( |
| 2072 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); | 2063 2, true, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); |
| 2073 socket_data.AddSocketDataToFactory(&socket_factory_); | 2064 socket_data.AddSocketDataToFactory(&socket_factory_); |
| 2074 | 2065 |
| 2075 // Create request and QuicHttpStream. | 2066 // Create request and QuicHttpStream. |
| 2076 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 2067 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 2077 EXPECT_EQ(ERR_IO_PENDING, | 2068 EXPECT_EQ(ERR_IO_PENDING, |
| 2078 request.Request(host_port_pair_, privacy_mode_, | 2069 request.Request(host_port_pair_, privacy_mode_, |
| 2079 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2070 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2080 callback_.callback())); | 2071 callback_.callback())); |
| 2081 EXPECT_THAT(callback_.WaitForResult(), IsOk()); | 2072 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2082 std::unique_ptr<HttpStream> stream = request.CreateStream(); | 2073 std::unique_ptr<HttpStream> stream = request.CreateStream(); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 2111 TEST_P(QuicStreamFactoryTest, OnNetworkMadeDefaultConnectionMigrationDisabled) { | 2102 TEST_P(QuicStreamFactoryTest, OnNetworkMadeDefaultConnectionMigrationDisabled) { |
| 2112 InitializeConnectionMigrationTest( | 2103 InitializeConnectionMigrationTest( |
| 2113 {kDefaultNetworkForTests, kNewNetworkForTests}); | 2104 {kDefaultNetworkForTests, kNewNetworkForTests}); |
| 2114 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 2105 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 2115 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 2106 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 2116 | 2107 |
| 2117 MockQuicData socket_data; | 2108 MockQuicData socket_data; |
| 2118 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 2109 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 2119 socket_data.AddWrite(ConstructInitialSettingsPacket()); | 2110 socket_data.AddWrite(ConstructInitialSettingsPacket()); |
| 2120 socket_data.AddWrite(client_maker_.MakeRstPacket( | 2111 socket_data.AddWrite(client_maker_.MakeRstPacket( |
| 2121 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); | 2112 2, true, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); |
| 2122 socket_data.AddSocketDataToFactory(&socket_factory_); | 2113 socket_data.AddSocketDataToFactory(&socket_factory_); |
| 2123 | 2114 |
| 2124 // Create request and QuicHttpStream. | 2115 // Create request and QuicHttpStream. |
| 2125 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 2116 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 2126 EXPECT_EQ(ERR_IO_PENDING, | 2117 EXPECT_EQ(ERR_IO_PENDING, |
| 2127 request.Request(host_port_pair_, privacy_mode_, | 2118 request.Request(host_port_pair_, privacy_mode_, |
| 2128 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2119 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2129 callback_.callback())); | 2120 callback_.callback())); |
| 2130 EXPECT_THAT(callback_.WaitForResult(), IsOk()); | 2121 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2131 std::unique_ptr<HttpStream> stream = request.CreateStream(); | 2122 std::unique_ptr<HttpStream> stream = request.CreateStream(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2163 TEST_P(QuicStreamFactoryTest, OnNetworkDisconnectedNonMigratableStream) { | 2154 TEST_P(QuicStreamFactoryTest, OnNetworkDisconnectedNonMigratableStream) { |
| 2164 InitializeConnectionMigrationTest( | 2155 InitializeConnectionMigrationTest( |
| 2165 {kDefaultNetworkForTests, kNewNetworkForTests}); | 2156 {kDefaultNetworkForTests, kNewNetworkForTests}); |
| 2166 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 2157 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 2167 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 2158 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 2168 | 2159 |
| 2169 MockQuicData socket_data; | 2160 MockQuicData socket_data; |
| 2170 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 2161 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 2171 socket_data.AddWrite(ConstructInitialSettingsPacket()); | 2162 socket_data.AddWrite(ConstructInitialSettingsPacket()); |
| 2172 socket_data.AddWrite(client_maker_.MakeRstPacket( | 2163 socket_data.AddWrite(client_maker_.MakeRstPacket( |
| 2173 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT)); | 2164 2, true, kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT)); |
| 2174 socket_data.AddSocketDataToFactory(&socket_factory_); | 2165 socket_data.AddSocketDataToFactory(&socket_factory_); |
| 2175 | 2166 |
| 2176 // Create request and QuicHttpStream. | 2167 // Create request and QuicHttpStream. |
| 2177 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 2168 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 2178 EXPECT_EQ(ERR_IO_PENDING, | 2169 EXPECT_EQ(ERR_IO_PENDING, |
| 2179 request.Request(host_port_pair_, privacy_mode_, | 2170 request.Request(host_port_pair_, privacy_mode_, |
| 2180 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2171 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2181 callback_.callback())); | 2172 callback_.callback())); |
| 2182 EXPECT_THAT(callback_.WaitForResult(), IsOk()); | 2173 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2183 std::unique_ptr<HttpStream> stream = request.CreateStream(); | 2174 std::unique_ptr<HttpStream> stream = request.CreateStream(); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 2211 OnNetworkDisconnectedConnectionMigrationDisabled) { | 2202 OnNetworkDisconnectedConnectionMigrationDisabled) { |
| 2212 InitializeConnectionMigrationTest( | 2203 InitializeConnectionMigrationTest( |
| 2213 {kDefaultNetworkForTests, kNewNetworkForTests}); | 2204 {kDefaultNetworkForTests, kNewNetworkForTests}); |
| 2214 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 2205 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 2215 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 2206 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 2216 | 2207 |
| 2217 MockQuicData socket_data; | 2208 MockQuicData socket_data; |
| 2218 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 2209 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 2219 socket_data.AddWrite(ConstructInitialSettingsPacket()); | 2210 socket_data.AddWrite(ConstructInitialSettingsPacket()); |
| 2220 socket_data.AddWrite(client_maker_.MakeRstPacket( | 2211 socket_data.AddWrite(client_maker_.MakeRstPacket( |
| 2221 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT)); | 2212 2, true, kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT)); |
| 2222 socket_data.AddSocketDataToFactory(&socket_factory_); | 2213 socket_data.AddSocketDataToFactory(&socket_factory_); |
| 2223 | 2214 |
| 2224 // Create request and QuicHttpStream. | 2215 // Create request and QuicHttpStream. |
| 2225 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 2216 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 2226 EXPECT_EQ(ERR_IO_PENDING, | 2217 EXPECT_EQ(ERR_IO_PENDING, |
| 2227 request.Request(host_port_pair_, privacy_mode_, | 2218 request.Request(host_port_pair_, privacy_mode_, |
| 2228 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2219 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2229 callback_.callback())); | 2220 callback_.callback())); |
| 2230 EXPECT_THAT(callback_.WaitForResult(), IsOk()); | 2221 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2231 std::unique_ptr<HttpStream> stream = request.CreateStream(); | 2222 std::unique_ptr<HttpStream> stream = request.CreateStream(); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2338 InitializeConnectionMigrationTest({kDefaultNetworkForTests}); | 2329 InitializeConnectionMigrationTest({kDefaultNetworkForTests}); |
| 2339 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 2330 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 2340 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 2331 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 2341 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 2332 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 2342 | 2333 |
| 2343 MockQuicData socket_data; | 2334 MockQuicData socket_data; |
| 2344 QuicStreamOffset header_stream_offset = 0; | 2335 QuicStreamOffset header_stream_offset = 0; |
| 2345 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 2336 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 2346 socket_data.AddWrite( | 2337 socket_data.AddWrite( |
| 2347 ConstructInitialSettingsPacket(1, &header_stream_offset)); | 2338 ConstructInitialSettingsPacket(1, &header_stream_offset)); |
| 2348 socket_data.AddWrite(ConstructGetRequestPacket( | 2339 socket_data.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, |
| 2349 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); | 2340 true, &header_stream_offset)); |
| 2350 socket_data.AddSocketDataToFactory(&socket_factory_); | 2341 socket_data.AddSocketDataToFactory(&socket_factory_); |
| 2351 | 2342 |
| 2352 // Create request and QuicHttpStream. | 2343 // Create request and QuicHttpStream. |
| 2353 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 2344 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 2354 EXPECT_EQ(ERR_IO_PENDING, | 2345 EXPECT_EQ(ERR_IO_PENDING, |
| 2355 request.Request(host_port_pair_, privacy_mode_, | 2346 request.Request(host_port_pair_, privacy_mode_, |
| 2356 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2347 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2357 callback_.callback())); | 2348 callback_.callback())); |
| 2358 EXPECT_THAT(callback_.WaitForResult(), IsOk()); | 2349 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2359 std::unique_ptr<HttpStream> stream = request.CreateStream(); | 2350 std::unique_ptr<HttpStream> stream = request.CreateStream(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 2386 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 2377 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
| 2387 EXPECT_FALSE(HasActiveSession(host_port_pair_)); | 2378 EXPECT_FALSE(HasActiveSession(host_port_pair_)); |
| 2388 EXPECT_EQ(1u, session->GetNumActiveStreams()); | 2379 EXPECT_EQ(1u, session->GetNumActiveStreams()); |
| 2389 EXPECT_EQ(ERR_IO_PENDING, stream->ReadResponseHeaders(callback_.callback())); | 2380 EXPECT_EQ(ERR_IO_PENDING, stream->ReadResponseHeaders(callback_.callback())); |
| 2390 | 2381 |
| 2391 // Set up second socket data provider that is used after migration. | 2382 // Set up second socket data provider that is used after migration. |
| 2392 // The response to the earlier request is read on this new socket. | 2383 // The response to the earlier request is read on this new socket. |
| 2393 MockQuicData socket_data1; | 2384 MockQuicData socket_data1; |
| 2394 socket_data1.AddWrite( | 2385 socket_data1.AddWrite( |
| 2395 client_maker_.MakePingPacket(3, /*include_version=*/true)); | 2386 client_maker_.MakePingPacket(3, /*include_version=*/true)); |
| 2396 socket_data1.AddRead(ConstructOkResponsePacket( | 2387 socket_data1.AddRead( |
| 2397 1, GetNthClientInitiatedStreamId(0), false, false)); | 2388 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); |
| 2398 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 2389 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 2399 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( | 2390 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( |
| 2400 4, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1, | 2391 4, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); |
| 2401 1, true)); | |
| 2402 socket_data1.AddSocketDataToFactory(&socket_factory_); | 2392 socket_data1.AddSocketDataToFactory(&socket_factory_); |
| 2403 | 2393 |
| 2404 // Add a new network and notify the stream factory of a new connected network. | 2394 // Add a new network and notify the stream factory of a new connected network. |
| 2405 // This causes a PING packet to be sent over the new network. | 2395 // This causes a PING packet to be sent over the new network. |
| 2406 scoped_mock_network_change_notifier_->mock_network_change_notifier() | 2396 scoped_mock_network_change_notifier_->mock_network_change_notifier() |
| 2407 ->SetConnectedNetworksList({kNewNetworkForTests}); | 2397 ->SetConnectedNetworksList({kNewNetworkForTests}); |
| 2408 scoped_mock_network_change_notifier_->mock_network_change_notifier() | 2398 scoped_mock_network_change_notifier_->mock_network_change_notifier() |
| 2409 ->NotifyNetworkConnected(kNewNetworkForTests); | 2399 ->NotifyNetworkConnected(kNewNetworkForTests); |
| 2410 | 2400 |
| 2411 // Ensure that the session is still alive. | 2401 // Ensure that the session is still alive. |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2555 {kDefaultNetworkForTests, kNewNetworkForTests}); | 2545 {kDefaultNetworkForTests, kNewNetworkForTests}); |
| 2556 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 2546 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 2557 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 2547 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 2558 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 2548 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 2559 | 2549 |
| 2560 MockQuicData socket_data; | 2550 MockQuicData socket_data; |
| 2561 QuicStreamOffset header_stream_offset = 0; | 2551 QuicStreamOffset header_stream_offset = 0; |
| 2562 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 2552 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 2563 socket_data.AddWrite( | 2553 socket_data.AddWrite( |
| 2564 ConstructInitialSettingsPacket(1, &header_stream_offset)); | 2554 ConstructInitialSettingsPacket(1, &header_stream_offset)); |
| 2565 socket_data.AddWrite(ConstructGetRequestPacket( | 2555 socket_data.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, |
| 2566 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); | 2556 true, &header_stream_offset)); |
| 2567 socket_data.AddSocketDataToFactory(&socket_factory_); | 2557 socket_data.AddSocketDataToFactory(&socket_factory_); |
| 2568 | 2558 |
| 2569 // Create request and QuicHttpStream. | 2559 // Create request and QuicHttpStream. |
| 2570 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 2560 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 2571 EXPECT_EQ(ERR_IO_PENDING, | 2561 EXPECT_EQ(ERR_IO_PENDING, |
| 2572 request.Request(host_port_pair_, privacy_mode_, | 2562 request.Request(host_port_pair_, privacy_mode_, |
| 2573 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2563 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2574 callback_.callback())); | 2564 callback_.callback())); |
| 2575 EXPECT_THAT(callback_.WaitForResult(), IsOk()); | 2565 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2576 std::unique_ptr<HttpStream> stream = request.CreateStream(); | 2566 std::unique_ptr<HttpStream> stream = request.CreateStream(); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 2590 | 2580 |
| 2591 // Send GET request on stream. | 2581 // Send GET request on stream. |
| 2592 HttpResponseInfo response; | 2582 HttpResponseInfo response; |
| 2593 HttpRequestHeaders request_headers; | 2583 HttpRequestHeaders request_headers; |
| 2594 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response, | 2584 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response, |
| 2595 callback_.callback())); | 2585 callback_.callback())); |
| 2596 | 2586 |
| 2597 MockQuicData socket_data1; | 2587 MockQuicData socket_data1; |
| 2598 socket_data1.AddWrite( | 2588 socket_data1.AddWrite( |
| 2599 client_maker_.MakePingPacket(3, /*include_version=*/true)); | 2589 client_maker_.MakePingPacket(3, /*include_version=*/true)); |
| 2600 socket_data1.AddRead(ConstructOkResponsePacket( | 2590 socket_data1.AddRead( |
| 2601 1, GetNthClientInitiatedStreamId(0), false, false)); | 2591 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); |
| 2602 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 2592 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 2603 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( | 2593 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( |
| 2604 4, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1, | 2594 4, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); |
| 2605 1, true)); | |
| 2606 socket_data1.AddSocketDataToFactory(&socket_factory_); | 2595 socket_data1.AddSocketDataToFactory(&socket_factory_); |
| 2607 | 2596 |
| 2608 // Trigger early connection migration. This should cause a PING frame | 2597 // Trigger early connection migration. This should cause a PING frame |
| 2609 // to be emitted. | 2598 // to be emitted. |
| 2610 session->OnPathDegrading(); | 2599 session->OnPathDegrading(); |
| 2611 | 2600 |
| 2612 // Run the message loop so that data queued in the new socket is read by the | 2601 // Run the message loop so that data queued in the new socket is read by the |
| 2613 // packet reader. | 2602 // packet reader. |
| 2614 base::RunLoop().RunUntilIdle(); | 2603 base::RunLoop().RunUntilIdle(); |
| 2615 | 2604 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2680 {kDefaultNetworkForTests, kNewNetworkForTests}); | 2669 {kDefaultNetworkForTests, kNewNetworkForTests}); |
| 2681 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 2670 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 2682 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 2671 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 2683 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 2672 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 2684 | 2673 |
| 2685 MockQuicData socket_data; | 2674 MockQuicData socket_data; |
| 2686 QuicStreamOffset header_stream_offset = 0; | 2675 QuicStreamOffset header_stream_offset = 0; |
| 2687 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 2676 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 2688 socket_data.AddWrite( | 2677 socket_data.AddWrite( |
| 2689 ConstructInitialSettingsPacket(1, &header_stream_offset)); | 2678 ConstructInitialSettingsPacket(1, &header_stream_offset)); |
| 2690 socket_data.AddWrite(ConstructGetRequestPacket( | 2679 socket_data.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, |
| 2691 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); | 2680 true, &header_stream_offset)); |
| 2692 socket_data.AddSocketDataToFactory(&socket_factory_); | 2681 socket_data.AddSocketDataToFactory(&socket_factory_); |
| 2693 | 2682 |
| 2694 // Create request and QuicHttpStream. | 2683 // Create request and QuicHttpStream. |
| 2695 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 2684 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 2696 EXPECT_EQ(ERR_IO_PENDING, | 2685 EXPECT_EQ(ERR_IO_PENDING, |
| 2697 request.Request(host_port_pair_, privacy_mode_, | 2686 request.Request(host_port_pair_, privacy_mode_, |
| 2698 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2687 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2699 callback_.callback())); | 2688 callback_.callback())); |
| 2700 EXPECT_THAT(callback_.WaitForResult(), IsOk()); | 2689 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2701 std::unique_ptr<HttpStream> stream = request.CreateStream(); | 2690 std::unique_ptr<HttpStream> stream = request.CreateStream(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 2717 HttpResponseInfo response; | 2706 HttpResponseInfo response; |
| 2718 HttpRequestHeaders request_headers; | 2707 HttpRequestHeaders request_headers; |
| 2719 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response, | 2708 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response, |
| 2720 callback_.callback())); | 2709 callback_.callback())); |
| 2721 | 2710 |
| 2722 // Set up second socket data provider that is used after migration. | 2711 // Set up second socket data provider that is used after migration. |
| 2723 // The response to the earlier request is read on this new socket. | 2712 // The response to the earlier request is read on this new socket. |
| 2724 MockQuicData socket_data1; | 2713 MockQuicData socket_data1; |
| 2725 socket_data1.AddWrite( | 2714 socket_data1.AddWrite( |
| 2726 client_maker_.MakePingPacket(3, /*include_version=*/true)); | 2715 client_maker_.MakePingPacket(3, /*include_version=*/true)); |
| 2727 socket_data1.AddRead(ConstructOkResponsePacket( | 2716 socket_data1.AddRead( |
| 2728 1, GetNthClientInitiatedStreamId(0), false, false)); | 2717 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); |
| 2729 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 2718 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 2730 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( | 2719 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( |
| 2731 4, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1, | 2720 4, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); |
| 2732 1, true)); | |
| 2733 socket_data1.AddSocketDataToFactory(&socket_factory_); | 2721 socket_data1.AddSocketDataToFactory(&socket_factory_); |
| 2734 | 2722 |
| 2735 // Trigger early connection migration. This should cause a PING frame | 2723 // Trigger early connection migration. This should cause a PING frame |
| 2736 // to be emitted. | 2724 // to be emitted. |
| 2737 session->OnPathDegrading(); | 2725 session->OnPathDegrading(); |
| 2738 | 2726 |
| 2739 // Run the message loop so that data queued in the new socket is read by the | 2727 // Run the message loop so that data queued in the new socket is read by the |
| 2740 // packet reader. | 2728 // packet reader. |
| 2741 base::RunLoop().RunUntilIdle(); | 2729 base::RunLoop().RunUntilIdle(); |
| 2742 | 2730 |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2800 | 2788 |
| 2801 TEST_P(QuicStreamFactoryTest, MigrateSessionEarlyNoNewNetwork) { | 2789 TEST_P(QuicStreamFactoryTest, MigrateSessionEarlyNoNewNetwork) { |
| 2802 InitializeConnectionMigrationTest({kDefaultNetworkForTests}); | 2790 InitializeConnectionMigrationTest({kDefaultNetworkForTests}); |
| 2803 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 2791 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 2804 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 2792 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 2805 | 2793 |
| 2806 MockQuicData socket_data; | 2794 MockQuicData socket_data; |
| 2807 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 2795 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 2808 socket_data.AddWrite(ConstructInitialSettingsPacket()); | 2796 socket_data.AddWrite(ConstructInitialSettingsPacket()); |
| 2809 socket_data.AddWrite(client_maker_.MakeRstPacket( | 2797 socket_data.AddWrite(client_maker_.MakeRstPacket( |
| 2810 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); | 2798 2, true, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); |
| 2811 socket_data.AddSocketDataToFactory(&socket_factory_); | 2799 socket_data.AddSocketDataToFactory(&socket_factory_); |
| 2812 | 2800 |
| 2813 // Create request and QuicHttpStream. | 2801 // Create request and QuicHttpStream. |
| 2814 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 2802 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 2815 EXPECT_EQ(ERR_IO_PENDING, | 2803 EXPECT_EQ(ERR_IO_PENDING, |
| 2816 request.Request(host_port_pair_, privacy_mode_, | 2804 request.Request(host_port_pair_, privacy_mode_, |
| 2817 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2805 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2818 callback_.callback())); | 2806 callback_.callback())); |
| 2819 EXPECT_THAT(callback_.WaitForResult(), IsOk()); | 2807 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2820 std::unique_ptr<HttpStream> stream = request.CreateStream(); | 2808 std::unique_ptr<HttpStream> stream = request.CreateStream(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2852 TEST_P(QuicStreamFactoryTest, MigrateSessionEarlyNonMigratableStream) { | 2840 TEST_P(QuicStreamFactoryTest, MigrateSessionEarlyNonMigratableStream) { |
| 2853 InitializeConnectionMigrationTest( | 2841 InitializeConnectionMigrationTest( |
| 2854 {kDefaultNetworkForTests, kNewNetworkForTests}); | 2842 {kDefaultNetworkForTests, kNewNetworkForTests}); |
| 2855 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 2843 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 2856 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 2844 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 2857 | 2845 |
| 2858 MockQuicData socket_data; | 2846 MockQuicData socket_data; |
| 2859 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 2847 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 2860 socket_data.AddWrite(ConstructInitialSettingsPacket()); | 2848 socket_data.AddWrite(ConstructInitialSettingsPacket()); |
| 2861 socket_data.AddWrite(client_maker_.MakeRstPacket( | 2849 socket_data.AddWrite(client_maker_.MakeRstPacket( |
| 2862 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); | 2850 2, true, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); |
| 2863 socket_data.AddSocketDataToFactory(&socket_factory_); | 2851 socket_data.AddSocketDataToFactory(&socket_factory_); |
| 2864 | 2852 |
| 2865 // Create request and QuicHttpStream. | 2853 // Create request and QuicHttpStream. |
| 2866 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 2854 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 2867 EXPECT_EQ(ERR_IO_PENDING, | 2855 EXPECT_EQ(ERR_IO_PENDING, |
| 2868 request.Request(host_port_pair_, privacy_mode_, | 2856 request.Request(host_port_pair_, privacy_mode_, |
| 2869 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2857 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2870 callback_.callback())); | 2858 callback_.callback())); |
| 2871 EXPECT_THAT(callback_.WaitForResult(), IsOk()); | 2859 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2872 std::unique_ptr<HttpStream> stream = request.CreateStream(); | 2860 std::unique_ptr<HttpStream> stream = request.CreateStream(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2904 TEST_P(QuicStreamFactoryTest, MigrateSessionEarlyConnectionMigrationDisabled) { | 2892 TEST_P(QuicStreamFactoryTest, MigrateSessionEarlyConnectionMigrationDisabled) { |
| 2905 InitializeConnectionMigrationTest( | 2893 InitializeConnectionMigrationTest( |
| 2906 {kDefaultNetworkForTests, kNewNetworkForTests}); | 2894 {kDefaultNetworkForTests, kNewNetworkForTests}); |
| 2907 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 2895 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 2908 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 2896 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 2909 | 2897 |
| 2910 MockQuicData socket_data; | 2898 MockQuicData socket_data; |
| 2911 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 2899 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 2912 socket_data.AddWrite(ConstructInitialSettingsPacket()); | 2900 socket_data.AddWrite(ConstructInitialSettingsPacket()); |
| 2913 socket_data.AddWrite(client_maker_.MakeRstPacket( | 2901 socket_data.AddWrite(client_maker_.MakeRstPacket( |
| 2914 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); | 2902 2, true, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); |
| 2915 socket_data.AddSocketDataToFactory(&socket_factory_); | 2903 socket_data.AddSocketDataToFactory(&socket_factory_); |
| 2916 | 2904 |
| 2917 // Create request and QuicHttpStream. | 2905 // Create request and QuicHttpStream. |
| 2918 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 2906 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 2919 EXPECT_EQ(ERR_IO_PENDING, | 2907 EXPECT_EQ(ERR_IO_PENDING, |
| 2920 request.Request(host_port_pair_, privacy_mode_, | 2908 request.Request(host_port_pair_, privacy_mode_, |
| 2921 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2909 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2922 callback_.callback())); | 2910 callback_.callback())); |
| 2923 EXPECT_THAT(callback_.WaitForResult(), IsOk()); | 2911 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 2924 std::unique_ptr<HttpStream> stream = request.CreateStream(); | 2912 std::unique_ptr<HttpStream> stream = request.CreateStream(); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2991 | 2979 |
| 2992 // Ensure that session is alive and active. | 2980 // Ensure that session is alive and active. |
| 2993 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 2981 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| 2994 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 2982 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
| 2995 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 2983 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
| 2996 | 2984 |
| 2997 // Set up second socket data provider that is used after | 2985 // Set up second socket data provider that is used after |
| 2998 // migration. The request is rewritten to this new socket, and the | 2986 // migration. The request is rewritten to this new socket, and the |
| 2999 // response to the request is read on this new socket. | 2987 // response to the request is read on this new socket. |
| 3000 MockQuicData socket_data1; | 2988 MockQuicData socket_data1; |
| 3001 socket_data1.AddWrite(ConstructGetRequestPacket( | 2989 socket_data1.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, |
| 3002 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); | 2990 true, &header_stream_offset)); |
| 3003 socket_data1.AddRead(ConstructOkResponsePacket( | 2991 socket_data1.AddRead( |
| 3004 1, GetNthClientInitiatedStreamId(0), false, false)); | 2992 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); |
| 3005 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 2993 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 3006 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( | 2994 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( |
| 3007 3, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1, | 2995 3, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); |
| 3008 1, true)); | |
| 3009 socket_data1.AddSocketDataToFactory(&socket_factory_); | 2996 socket_data1.AddSocketDataToFactory(&socket_factory_); |
| 3010 | 2997 |
| 3011 // Send GET request on stream. This should cause a write error, which triggers | 2998 // Send GET request on stream. This should cause a write error, which triggers |
| 3012 // a connection migration attempt. | 2999 // a connection migration attempt. |
| 3013 HttpResponseInfo response; | 3000 HttpResponseInfo response; |
| 3014 HttpRequestHeaders request_headers; | 3001 HttpRequestHeaders request_headers; |
| 3015 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response, | 3002 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response, |
| 3016 callback_.callback())); | 3003 callback_.callback())); |
| 3017 | 3004 |
| 3018 // Run the message loop so that the migration attempt is executed and | 3005 // Run the message loop so that the migration attempt is executed and |
| (...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3392 | 3379 |
| 3393 // Ensure that session is alive and active. | 3380 // Ensure that session is alive and active. |
| 3394 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 3381 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| 3395 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 3382 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
| 3396 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 3383 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
| 3397 | 3384 |
| 3398 // Set up second socket data provider that is used after | 3385 // Set up second socket data provider that is used after |
| 3399 // migration. The request is rewritten to this new socket, and the | 3386 // migration. The request is rewritten to this new socket, and the |
| 3400 // response to the request is read on this new socket. | 3387 // response to the request is read on this new socket. |
| 3401 MockQuicData socket_data1; | 3388 MockQuicData socket_data1; |
| 3402 socket_data1.AddWrite(ConstructGetRequestPacket( | 3389 socket_data1.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, |
| 3403 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); | 3390 true, &header_stream_offset)); |
| 3404 socket_data1.AddRead(ConstructOkResponsePacket( | 3391 socket_data1.AddRead( |
| 3405 1, GetNthClientInitiatedStreamId(0), false, false)); | 3392 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); |
| 3406 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 3393 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 3407 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( | 3394 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( |
| 3408 3, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1, | 3395 3, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); |
| 3409 1, true)); | |
| 3410 socket_data1.AddSocketDataToFactory(&socket_factory_); | 3396 socket_data1.AddSocketDataToFactory(&socket_factory_); |
| 3411 | 3397 |
| 3412 // First queue a network change notification in the message loop. | 3398 // First queue a network change notification in the message loop. |
| 3413 if (disconnected) { | 3399 if (disconnected) { |
| 3414 scoped_mock_network_change_notifier_->mock_network_change_notifier() | 3400 scoped_mock_network_change_notifier_->mock_network_change_notifier() |
| 3415 ->QueueNetworkDisconnected(kDefaultNetworkForTests); | 3401 ->QueueNetworkDisconnected(kDefaultNetworkForTests); |
| 3416 } else { | 3402 } else { |
| 3417 scoped_mock_network_change_notifier_->mock_network_change_notifier() | 3403 scoped_mock_network_change_notifier_->mock_network_change_notifier() |
| 3418 ->QueueNetworkMadeDefault(kNewNetworkForTests); | 3404 ->QueueNetworkMadeDefault(kNewNetworkForTests); |
| 3419 } | 3405 } |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3490 | 3476 |
| 3491 // Ensure that session is alive and active. | 3477 // Ensure that session is alive and active. |
| 3492 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 3478 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| 3493 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 3479 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
| 3494 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 3480 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
| 3495 | 3481 |
| 3496 // Set up second socket data provider that is used after | 3482 // Set up second socket data provider that is used after |
| 3497 // migration. The request is rewritten to this new socket, and the | 3483 // migration. The request is rewritten to this new socket, and the |
| 3498 // response to the request is read on this new socket. | 3484 // response to the request is read on this new socket. |
| 3499 MockQuicData socket_data1; | 3485 MockQuicData socket_data1; |
| 3500 socket_data1.AddWrite(ConstructGetRequestPacket( | 3486 socket_data1.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, |
| 3501 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); | 3487 true, &header_stream_offset)); |
| 3502 socket_data1.AddRead(ConstructOkResponsePacket( | 3488 socket_data1.AddRead( |
| 3503 1, GetNthClientInitiatedStreamId(0), false, false)); | 3489 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); |
| 3504 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 3490 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 3505 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( | 3491 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( |
| 3506 3, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1, | 3492 3, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); |
| 3507 1, true)); | |
| 3508 socket_data1.AddSocketDataToFactory(&socket_factory_); | 3493 socket_data1.AddSocketDataToFactory(&socket_factory_); |
| 3509 | 3494 |
| 3510 // Send GET request on stream. This should cause a write error, | 3495 // Send GET request on stream. This should cause a write error, |
| 3511 // which triggers a connection migration attempt. This will queue a | 3496 // which triggers a connection migration attempt. This will queue a |
| 3512 // migration attempt in the message loop. | 3497 // migration attempt in the message loop. |
| 3513 HttpResponseInfo response; | 3498 HttpResponseInfo response; |
| 3514 HttpRequestHeaders request_headers; | 3499 HttpRequestHeaders request_headers; |
| 3515 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response, | 3500 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response, |
| 3516 callback_.callback())); | 3501 callback_.callback())); |
| 3517 | 3502 |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3611 EXPECT_EQ(ERR_IO_PENDING, stream->ReadResponseHeaders(callback_.callback())); | 3596 EXPECT_EQ(ERR_IO_PENDING, stream->ReadResponseHeaders(callback_.callback())); |
| 3612 | 3597 |
| 3613 // On a DISCONNECTED notification, nothing happens. | 3598 // On a DISCONNECTED notification, nothing happens. |
| 3614 scoped_mock_network_change_notifier_->mock_network_change_notifier() | 3599 scoped_mock_network_change_notifier_->mock_network_change_notifier() |
| 3615 ->NotifyNetworkDisconnected(kDefaultNetworkForTests); | 3600 ->NotifyNetworkDisconnected(kDefaultNetworkForTests); |
| 3616 | 3601 |
| 3617 // Set up second socket data provider that is used after | 3602 // Set up second socket data provider that is used after |
| 3618 // migration. The request is rewritten to this new socket, and the | 3603 // migration. The request is rewritten to this new socket, and the |
| 3619 // response to the request is read on this new socket. | 3604 // response to the request is read on this new socket. |
| 3620 MockQuicData socket_data1; | 3605 MockQuicData socket_data1; |
| 3621 socket_data1.AddWrite(ConstructGetRequestPacket( | 3606 socket_data1.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, |
| 3622 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); | 3607 true, &header_stream_offset)); |
| 3623 socket_data1.AddRead(ConstructOkResponsePacket( | 3608 socket_data1.AddRead( |
| 3624 1, GetNthClientInitiatedStreamId(0), false, false)); | 3609 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); |
| 3625 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 3610 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 3626 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( | 3611 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( |
| 3627 3, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1, | 3612 3, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); |
| 3628 1, true)); | |
| 3629 socket_data1.AddSocketDataToFactory(&socket_factory_); | 3613 socket_data1.AddSocketDataToFactory(&socket_factory_); |
| 3630 | 3614 |
| 3631 scoped_mock_network_change_notifier_->mock_network_change_notifier() | 3615 scoped_mock_network_change_notifier_->mock_network_change_notifier() |
| 3632 ->SetConnectedNetworksList({kNewNetworkForTests}); | 3616 ->SetConnectedNetworksList({kNewNetworkForTests}); |
| 3633 scoped_mock_network_change_notifier_->mock_network_change_notifier() | 3617 scoped_mock_network_change_notifier_->mock_network_change_notifier() |
| 3634 ->NotifyNetworkConnected(kNewNetworkForTests); | 3618 ->NotifyNetworkConnected(kNewNetworkForTests); |
| 3635 | 3619 |
| 3636 // The session should now be marked as going away. Ensure that | 3620 // The session should now be marked as going away. Ensure that |
| 3637 // while it is still alive, it is no longer active. | 3621 // while it is still alive, it is no longer active. |
| 3638 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 3622 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3740 // as going away and the session will still be alive. | 3724 // as going away and the session will still be alive. |
| 3741 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 3725 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
| 3742 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 3726 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
| 3743 EXPECT_EQ(1u, session->GetNumActiveStreams()); | 3727 EXPECT_EQ(1u, session->GetNumActiveStreams()); |
| 3744 EXPECT_EQ(ERR_IO_PENDING, stream->ReadResponseHeaders(callback_.callback())); | 3728 EXPECT_EQ(ERR_IO_PENDING, stream->ReadResponseHeaders(callback_.callback())); |
| 3745 | 3729 |
| 3746 // Set up second socket data provider that is used after | 3730 // Set up second socket data provider that is used after |
| 3747 // migration. The request is rewritten to this new socket, and the | 3731 // migration. The request is rewritten to this new socket, and the |
| 3748 // response to the request is read on this new socket. | 3732 // response to the request is read on this new socket. |
| 3749 MockQuicData socket_data1; | 3733 MockQuicData socket_data1; |
| 3750 socket_data1.AddWrite(ConstructGetRequestPacket( | 3734 socket_data1.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, |
| 3751 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); | 3735 true, &header_stream_offset)); |
| 3752 socket_data1.AddRead(ConstructOkResponsePacket( | 3736 socket_data1.AddRead( |
| 3753 1, GetNthClientInitiatedStreamId(0), false, false)); | 3737 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); |
| 3754 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 3738 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 3755 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( | 3739 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( |
| 3756 3, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1, | 3740 3, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); |
| 3757 1, true)); | |
| 3758 socket_data1.AddSocketDataToFactory(&socket_factory_); | 3741 socket_data1.AddSocketDataToFactory(&socket_factory_); |
| 3759 | 3742 |
| 3760 scoped_mock_network_change_notifier_->mock_network_change_notifier() | 3743 scoped_mock_network_change_notifier_->mock_network_change_notifier() |
| 3761 ->SetConnectedNetworksList( | 3744 ->SetConnectedNetworksList( |
| 3762 {kDefaultNetworkForTests, kNewNetworkForTests}); | 3745 {kDefaultNetworkForTests, kNewNetworkForTests}); |
| 3763 | 3746 |
| 3764 // A notification triggers and completes migration. | 3747 // A notification triggers and completes migration. |
| 3765 if (disconnected) { | 3748 if (disconnected) { |
| 3766 scoped_mock_network_change_notifier_->mock_network_change_notifier() | 3749 scoped_mock_network_change_notifier_->mock_network_change_notifier() |
| 3767 ->NotifyNetworkDisconnected(kDefaultNetworkForTests); | 3750 ->NotifyNetworkDisconnected(kDefaultNetworkForTests); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3846 {kDefaultNetworkForTests, kNewNetworkForTests}); | 3829 {kDefaultNetworkForTests, kNewNetworkForTests}); |
| 3847 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 3830 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 3848 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 3831 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 3849 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 3832 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 3850 | 3833 |
| 3851 MockQuicData socket_data; | 3834 MockQuicData socket_data; |
| 3852 QuicStreamOffset header_stream_offset = 0; | 3835 QuicStreamOffset header_stream_offset = 0; |
| 3853 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 3836 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 3854 socket_data.AddWrite( | 3837 socket_data.AddWrite( |
| 3855 ConstructInitialSettingsPacket(1, &header_stream_offset)); | 3838 ConstructInitialSettingsPacket(1, &header_stream_offset)); |
| 3856 socket_data.AddWrite(ConstructGetRequestPacket( | 3839 socket_data.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, |
| 3857 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); | 3840 true, &header_stream_offset)); |
| 3858 socket_data.AddSocketDataToFactory(&socket_factory_); | 3841 socket_data.AddSocketDataToFactory(&socket_factory_); |
| 3859 | 3842 |
| 3860 // Create request and QuicHttpStream. | 3843 // Create request and QuicHttpStream. |
| 3861 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 3844 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 3862 EXPECT_EQ(ERR_IO_PENDING, | 3845 EXPECT_EQ(ERR_IO_PENDING, |
| 3863 request.Request(host_port_pair_, privacy_mode_, | 3846 request.Request(host_port_pair_, privacy_mode_, |
| 3864 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 3847 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 3865 callback_.callback())); | 3848 callback_.callback())); |
| 3866 EXPECT_THAT(callback_.WaitForResult(), IsOk()); | 3849 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 3867 std::unique_ptr<HttpStream> stream = request.CreateStream(); | 3850 std::unique_ptr<HttpStream> stream = request.CreateStream(); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3909 | 3892 |
| 3910 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 3893 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 3911 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 3894 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 3912 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 3895 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 3913 | 3896 |
| 3914 MockQuicData socket_data1; | 3897 MockQuicData socket_data1; |
| 3915 QuicStreamOffset header_stream_offset = 0; | 3898 QuicStreamOffset header_stream_offset = 0; |
| 3916 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 3899 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 3917 socket_data1.AddWrite( | 3900 socket_data1.AddWrite( |
| 3918 ConstructInitialSettingsPacket(1, &header_stream_offset)); | 3901 ConstructInitialSettingsPacket(1, &header_stream_offset)); |
| 3919 socket_data1.AddWrite(ConstructGetRequestPacket( | 3902 socket_data1.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, |
| 3920 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset)); | 3903 true, &header_stream_offset)); |
| 3921 socket_data1.AddSocketDataToFactory(&socket_factory_); | 3904 socket_data1.AddSocketDataToFactory(&socket_factory_); |
| 3922 | 3905 |
| 3923 // Create request and QuicHttpStream. | 3906 // Create request and QuicHttpStream. |
| 3924 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 3907 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 3925 EXPECT_EQ(ERR_IO_PENDING, | 3908 EXPECT_EQ(ERR_IO_PENDING, |
| 3926 request.Request(host_port_pair_, privacy_mode_, | 3909 request.Request(host_port_pair_, privacy_mode_, |
| 3927 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 3910 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 3928 callback_.callback())); | 3911 callback_.callback())); |
| 3929 EXPECT_EQ(OK, callback_.WaitForResult()); | 3912 EXPECT_EQ(OK, callback_.WaitForResult()); |
| 3930 std::unique_ptr<HttpStream> stream = request.CreateStream(); | 3913 std::unique_ptr<HttpStream> stream = request.CreateStream(); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 3952 session->GetDefaultSocket()->GetPeerAddress(&ip); | 3935 session->GetDefaultSocket()->GetPeerAddress(&ip); |
| 3953 DVLOG(1) << "Socket connected to: " << ip.address().ToString() << " " | 3936 DVLOG(1) << "Socket connected to: " << ip.address().ToString() << " " |
| 3954 << ip.port(); | 3937 << ip.port(); |
| 3955 | 3938 |
| 3956 // Set up second socket data provider that is used after | 3939 // Set up second socket data provider that is used after |
| 3957 // migration. The request is rewritten to this new socket, and the | 3940 // migration. The request is rewritten to this new socket, and the |
| 3958 // response to the request is read on this new socket. | 3941 // response to the request is read on this new socket. |
| 3959 MockQuicData socket_data2; | 3942 MockQuicData socket_data2; |
| 3960 socket_data2.AddWrite( | 3943 socket_data2.AddWrite( |
| 3961 client_maker_.MakePingPacket(3, /*include_version=*/true)); | 3944 client_maker_.MakePingPacket(3, /*include_version=*/true)); |
| 3962 socket_data2.AddRead(ConstructOkResponsePacket( | 3945 socket_data2.AddRead( |
| 3963 1, GetNthClientInitiatedStreamId(0), false, false)); | 3946 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); |
| 3964 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 3947 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 3965 socket_data2.AddWrite(client_maker_.MakeAckAndRstPacket( | 3948 socket_data2.AddWrite(client_maker_.MakeAckAndRstPacket( |
| 3966 4, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1, | 3949 4, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); |
| 3967 1, true)); | |
| 3968 socket_data2.AddSocketDataToFactory(&socket_factory_); | 3950 socket_data2.AddSocketDataToFactory(&socket_factory_); |
| 3969 | 3951 |
| 3970 const uint8_t kTestIpAddress[] = {1, 2, 3, 4}; | 3952 const uint8_t kTestIpAddress[] = {1, 2, 3, 4}; |
| 3971 const uint16_t kTestPort = 123; | 3953 const uint16_t kTestPort = 123; |
| 3972 factory_->MigrateSessionToNewPeerAddress( | 3954 factory_->MigrateSessionToNewPeerAddress( |
| 3973 session, IPEndPoint(IPAddress(kTestIpAddress), kTestPort), net_log_); | 3955 session, IPEndPoint(IPAddress(kTestIpAddress), kTestPort), net_log_); |
| 3974 | 3956 |
| 3975 session->GetDefaultSocket()->GetPeerAddress(&ip); | 3957 session->GetDefaultSocket()->GetPeerAddress(&ip); |
| 3976 DVLOG(1) << "Socket migrated to: " << ip.address().ToString() << " " | 3958 DVLOG(1) << "Socket migrated to: " << ip.address().ToString() << " " |
| 3977 << ip.port(); | 3959 << ip.port(); |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4052 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 4034 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 4053 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 4035 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 4054 | 4036 |
| 4055 crypto_client_stream_factory_.SetConfig(config); | 4037 crypto_client_stream_factory_.SetConfig(config); |
| 4056 | 4038 |
| 4057 // Set up only socket data provider. | 4039 // Set up only socket data provider. |
| 4058 MockQuicData socket_data1; | 4040 MockQuicData socket_data1; |
| 4059 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 4041 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 4060 socket_data1.AddWrite(ConstructInitialSettingsPacket()); | 4042 socket_data1.AddWrite(ConstructInitialSettingsPacket()); |
| 4061 socket_data1.AddWrite(client_maker_.MakeRstPacket( | 4043 socket_data1.AddWrite(client_maker_.MakeRstPacket( |
| 4062 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); | 4044 2, true, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); |
| 4063 socket_data1.AddSocketDataToFactory(&socket_factory_); | 4045 socket_data1.AddSocketDataToFactory(&socket_factory_); |
| 4064 | 4046 |
| 4065 // Create request and QuicHttpStream. | 4047 // Create request and QuicHttpStream. |
| 4066 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 4048 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 4067 EXPECT_EQ(ERR_IO_PENDING, | 4049 EXPECT_EQ(ERR_IO_PENDING, |
| 4068 request.Request(host_port_pair_, privacy_mode_, | 4050 request.Request(host_port_pair_, privacy_mode_, |
| 4069 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 4051 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 4070 callback_.callback())); | 4052 callback_.callback())); |
| 4071 EXPECT_EQ(OK, callback_.WaitForResult()); | 4053 EXPECT_EQ(OK, callback_.WaitForResult()); |
| 4072 std::unique_ptr<HttpStream> stream = request.CreateStream(); | 4054 std::unique_ptr<HttpStream> stream = request.CreateStream(); |
| (...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4578 EXPECT_THAT(callback_.WaitForResult(), IsOk()); | 4560 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 4579 std::unique_ptr<HttpStream> stream = request.CreateStream(); | 4561 std::unique_ptr<HttpStream> stream = request.CreateStream(); |
| 4580 EXPECT_TRUE(stream.get()); | 4562 EXPECT_TRUE(stream.get()); |
| 4581 | 4563 |
| 4582 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); | 4564 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); |
| 4583 | 4565 |
| 4584 string url = "https://www.example.org/"; | 4566 string url = "https://www.example.org/"; |
| 4585 | 4567 |
| 4586 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 4568 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| 4587 | 4569 |
| 4588 QuicClientPromisedInfo promised(session, GetNthServerInitiatedStreamId(0), | 4570 QuicClientPromisedInfo promised(session, kServerDataStreamId1, kDefaultUrl); |
| 4589 kDefaultUrl); | |
| 4590 (*QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get()) | 4571 (*QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get()) |
| 4591 ->promised_by_url())[kDefaultUrl] = &promised; | 4572 ->promised_by_url())[kDefaultUrl] = &promised; |
| 4592 | 4573 |
| 4593 QuicStreamRequest request2(factory_.get(), &http_server_properties_); | 4574 QuicStreamRequest request2(factory_.get(), &http_server_properties_); |
| 4594 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_, | 4575 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_, |
| 4595 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 4576 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 4596 callback_.callback())); | 4577 callback_.callback())); |
| 4597 | 4578 |
| 4598 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); | 4579 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); |
| 4599 } | 4580 } |
| 4600 | 4581 |
| 4601 TEST_P(QuicStreamFactoryTest, ServerPushPrivacyModeMismatch) { | 4582 TEST_P(QuicStreamFactoryTest, ServerPushPrivacyModeMismatch) { |
| 4602 Initialize(); | 4583 Initialize(); |
| 4603 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 4584 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 4604 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 4585 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 4605 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 4586 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 4606 | 4587 |
| 4607 MockQuicData socket_data1; | 4588 MockQuicData socket_data1; |
| 4608 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 4589 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 4609 socket_data1.AddWrite(ConstructInitialSettingsPacket()); | 4590 socket_data1.AddWrite(ConstructInitialSettingsPacket()); |
| 4610 socket_data1.AddWrite(client_maker_.MakeRstPacket( | 4591 socket_data1.AddWrite(client_maker_.MakeRstPacket( |
| 4611 2, true, GetNthServerInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); | 4592 2, true, kServerDataStreamId1, QUIC_STREAM_CANCELLED)); |
| 4612 socket_data1.AddSocketDataToFactory(&socket_factory_); | 4593 socket_data1.AddSocketDataToFactory(&socket_factory_); |
| 4613 | 4594 |
| 4614 MockQuicData socket_data2; | 4595 MockQuicData socket_data2; |
| 4615 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); | 4596 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); |
| 4616 socket_data2.AddWrite(ConstructInitialSettingsPacket()); | 4597 socket_data2.AddWrite(ConstructInitialSettingsPacket()); |
| 4617 socket_data2.AddSocketDataToFactory(&socket_factory_); | 4598 socket_data2.AddSocketDataToFactory(&socket_factory_); |
| 4618 | 4599 |
| 4619 QuicStreamRequest request(factory_.get(), &http_server_properties_); | 4600 QuicStreamRequest request(factory_.get(), &http_server_properties_); |
| 4620 EXPECT_EQ(ERR_IO_PENDING, | 4601 EXPECT_EQ(ERR_IO_PENDING, |
| 4621 request.Request(host_port_pair_, privacy_mode_, | 4602 request.Request(host_port_pair_, privacy_mode_, |
| 4622 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 4603 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 4623 callback_.callback())); | 4604 callback_.callback())); |
| 4624 | 4605 |
| 4625 EXPECT_THAT(callback_.WaitForResult(), IsOk()); | 4606 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
| 4626 std::unique_ptr<HttpStream> stream = request.CreateStream(); | 4607 std::unique_ptr<HttpStream> stream = request.CreateStream(); |
| 4627 EXPECT_TRUE(stream.get()); | 4608 EXPECT_TRUE(stream.get()); |
| 4628 | 4609 |
| 4629 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); | 4610 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); |
| 4630 | 4611 |
| 4631 string url = "https://www.example.org/"; | 4612 string url = "https://www.example.org/"; |
| 4632 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 4613 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
| 4633 | 4614 |
| 4634 QuicClientPromisedInfo promised(session, GetNthServerInitiatedStreamId(0), | 4615 QuicClientPromisedInfo promised(session, kServerDataStreamId1, kDefaultUrl); |
| 4635 kDefaultUrl); | |
| 4636 | 4616 |
| 4637 QuicClientPushPromiseIndex* index = | 4617 QuicClientPushPromiseIndex* index = |
| 4638 QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get()); | 4618 QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get()); |
| 4639 | 4619 |
| 4640 (*index->promised_by_url())[kDefaultUrl] = &promised; | 4620 (*index->promised_by_url())[kDefaultUrl] = &promised; |
| 4641 EXPECT_EQ(index->GetPromised(kDefaultUrl), &promised); | 4621 EXPECT_EQ(index->GetPromised(kDefaultUrl), &promised); |
| 4642 | 4622 |
| 4643 // Doing the request should not use the push stream, but rather | 4623 // Doing the request should not use the push stream, but rather |
| 4644 // cancel it because the privacy modes do not match. | 4624 // cancel it because the privacy modes do not match. |
| 4645 QuicStreamRequest request2(factory_.get(), &http_server_properties_); | 4625 QuicStreamRequest request2(factory_.get(), &http_server_properties_); |
| (...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5091 // Clear all cached states. | 5071 // Clear all cached states. |
| 5092 factory_->ClearCachedStatesInCryptoConfig( | 5072 factory_->ClearCachedStatesInCryptoConfig( |
| 5093 base::Callback<bool(const GURL&)>()); | 5073 base::Callback<bool(const GURL&)>()); |
| 5094 EXPECT_TRUE(test_cases[0].state->certs().empty()); | 5074 EXPECT_TRUE(test_cases[0].state->certs().empty()); |
| 5095 EXPECT_TRUE(test_cases[1].state->certs().empty()); | 5075 EXPECT_TRUE(test_cases[1].state->certs().empty()); |
| 5096 EXPECT_TRUE(test_cases[2].state->certs().empty()); | 5076 EXPECT_TRUE(test_cases[2].state->certs().empty()); |
| 5097 } | 5077 } |
| 5098 | 5078 |
| 5099 } // namespace test | 5079 } // namespace test |
| 5100 } // namespace net | 5080 } // namespace net |
| OLD | NEW |