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