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 |