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