| 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
| 8 #include "base/macros.h" | 8 #include "base/macros.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 #include "testing/gtest/include/gtest/gtest.h" | 54 #include "testing/gtest/include/gtest/gtest.h" |
| 55 #include "testing/platform_test.h" | 55 #include "testing/platform_test.h" |
| 56 | 56 |
| 57 namespace net { | 57 namespace net { |
| 58 namespace test { | 58 namespace test { |
| 59 | 59 |
| 60 namespace { | 60 namespace { |
| 61 | 61 |
| 62 static const char kQuicAlternateProtocolHeader[] = | 62 static const char kQuicAlternateProtocolHeader[] = |
| 63 "Alternate-Protocol: 443:quic\r\n\r\n"; | 63 "Alternate-Protocol: 443:quic\r\n\r\n"; |
| 64 static const char kQuicAlternateProtocol50pctHeader[] = | |
| 65 "Alternate-Protocol: 443:quic,p=.5\r\n\r\n"; | |
| 66 static const char kQuicAlternateProtocolDifferentPortHeader[] = | 64 static const char kQuicAlternateProtocolDifferentPortHeader[] = |
| 67 "Alternate-Protocol: 137:quic\r\n\r\n"; | 65 "Alternate-Protocol: 137:quic\r\n\r\n"; |
| 68 static const char kQuicAlternativeServiceHeader[] = | 66 static const char kQuicAlternativeServiceHeader[] = |
| 69 "Alt-Svc: quic=\":443\"\r\n\r\n"; | 67 "Alt-Svc: quic=\":443\"\r\n\r\n"; |
| 70 static const char kQuicAlternativeService50pctHeader[] = | |
| 71 "Alt-Svc: quic=\":443\";p=\".5\"\r\n\r\n"; | |
| 72 static const char kQuicAlternativeServiceDifferentPortHeader[] = | 68 static const char kQuicAlternativeServiceDifferentPortHeader[] = |
| 73 "Alt-Svc: quic=\":137\"\r\n\r\n"; | 69 "Alt-Svc: quic=\":137\"\r\n\r\n"; |
| 74 | 70 |
| 75 const char kDefaultServerHostName[] = "mail.example.org"; | 71 const char kDefaultServerHostName[] = "mail.example.org"; |
| 76 | 72 |
| 77 } // namespace | 73 } // namespace |
| 78 | 74 |
| 79 // Helper class to encapsulate MockReads and MockWrites for QUIC. | 75 // Helper class to encapsulate MockReads and MockWrites for QUIC. |
| 80 // Simplify ownership issues and the interaction with the MockSocketFactory. | 76 // Simplify ownership issues and the interaction with the MockSocketFactory. |
| 81 class MockQuicData { | 77 class MockQuicData { |
| (...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 529 SendRequestAndExpectQuicResponseMaybeFromProxy(expected, true, port); | 525 SendRequestAndExpectQuicResponseMaybeFromProxy(expected, true, port); |
| 530 } | 526 } |
| 531 | 527 |
| 532 void AddQuicAlternateProtocolMapping( | 528 void AddQuicAlternateProtocolMapping( |
| 533 MockCryptoClientStream::HandshakeMode handshake_mode) { | 529 MockCryptoClientStream::HandshakeMode handshake_mode) { |
| 534 crypto_client_stream_factory_.set_handshake_mode(handshake_mode); | 530 crypto_client_stream_factory_.set_handshake_mode(handshake_mode); |
| 535 HostPortPair host_port_pair = HostPortPair::FromURL(request_.url); | 531 HostPortPair host_port_pair = HostPortPair::FromURL(request_.url); |
| 536 AlternativeService alternative_service(QUIC, host_port_pair.host(), 443); | 532 AlternativeService alternative_service(QUIC, host_port_pair.host(), 443); |
| 537 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 533 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 538 http_server_properties_.SetAlternativeService( | 534 http_server_properties_.SetAlternativeService( |
| 539 host_port_pair, alternative_service, 1.0, expiration); | 535 host_port_pair, alternative_service, expiration); |
| 540 } | 536 } |
| 541 | 537 |
| 542 void AddQuicRemoteAlternativeServiceMapping( | 538 void AddQuicRemoteAlternativeServiceMapping( |
| 543 MockCryptoClientStream::HandshakeMode handshake_mode, | 539 MockCryptoClientStream::HandshakeMode handshake_mode, |
| 544 const HostPortPair& alternative) { | 540 const HostPortPair& alternative) { |
| 545 crypto_client_stream_factory_.set_handshake_mode(handshake_mode); | 541 crypto_client_stream_factory_.set_handshake_mode(handshake_mode); |
| 546 HostPortPair host_port_pair = HostPortPair::FromURL(request_.url); | 542 HostPortPair host_port_pair = HostPortPair::FromURL(request_.url); |
| 547 AlternativeService alternative_service(QUIC, alternative.host(), | 543 AlternativeService alternative_service(QUIC, alternative.host(), |
| 548 alternative.port()); | 544 alternative.port()); |
| 549 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 545 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 550 http_server_properties_.SetAlternativeService( | 546 http_server_properties_.SetAlternativeService( |
| 551 host_port_pair, alternative_service, 1.0, expiration); | 547 host_port_pair, alternative_service, expiration); |
| 552 } | 548 } |
| 553 | 549 |
| 554 void ExpectBrokenAlternateProtocolMapping() { | 550 void ExpectBrokenAlternateProtocolMapping() { |
| 555 const HostPortPair origin = HostPortPair::FromURL(request_.url); | 551 const HostPortPair origin = HostPortPair::FromURL(request_.url); |
| 556 const AlternativeServiceVector alternative_service_vector = | 552 const AlternativeServiceVector alternative_service_vector = |
| 557 http_server_properties_.GetAlternativeServices(origin); | 553 http_server_properties_.GetAlternativeServices(origin); |
| 558 EXPECT_EQ(1u, alternative_service_vector.size()); | 554 EXPECT_EQ(1u, alternative_service_vector.size()); |
| 559 EXPECT_TRUE(http_server_properties_.IsAlternativeServiceBroken( | 555 EXPECT_TRUE(http_server_properties_.IsAlternativeServiceBroken( |
| 560 alternative_service_vector[0])); | 556 alternative_service_vector[0])); |
| 561 } | 557 } |
| (...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1425 | 1421 |
| 1426 SendRequestAndExpectHttpResponse("hello world"); | 1422 SendRequestAndExpectHttpResponse("hello world"); |
| 1427 SendRequestAndExpectQuicResponse("hello!"); | 1423 SendRequestAndExpectQuicResponse("hello!"); |
| 1428 | 1424 |
| 1429 mock_quic_data.Resume(); | 1425 mock_quic_data.Resume(); |
| 1430 | 1426 |
| 1431 EXPECT_FALSE(http_server_properties_.WasAlternativeServiceRecentlyBroken( | 1427 EXPECT_FALSE(http_server_properties_.WasAlternativeServiceRecentlyBroken( |
| 1432 alternative_service)); | 1428 alternative_service)); |
| 1433 } | 1429 } |
| 1434 | 1430 |
| 1435 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceProbabilityForQuic) { | |
| 1436 MockRead http_reads[] = { | |
| 1437 MockRead("HTTP/1.1 200 OK\r\n"), | |
| 1438 MockRead(kQuicAlternativeService50pctHeader), MockRead("hello world"), | |
| 1439 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | |
| 1440 MockRead(ASYNC, OK)}; | |
| 1441 | |
| 1442 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | |
| 1443 0); | |
| 1444 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1445 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1446 | |
| 1447 MockQuicData mock_quic_data; | |
| 1448 mock_quic_data.AddWrite( | |
| 1449 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, | |
| 1450 GetRequestHeaders("GET", "https", "/"))); | |
| 1451 mock_quic_data.AddRead(ConstructResponseHeadersPacket( | |
| 1452 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); | |
| 1453 mock_quic_data.AddRead( | |
| 1454 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); | |
| 1455 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); | |
| 1456 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read | |
| 1457 mock_quic_data.AddRead(ASYNC, 0); // EOF | |
| 1458 | |
| 1459 mock_quic_data.AddSocketDataToFactory(&socket_factory_); | |
| 1460 | |
| 1461 AddHangingNonAlternateProtocolSocketData(); | |
| 1462 params_.alternative_service_probability_threshold = 0.25; | |
| 1463 CreateSession(); | |
| 1464 | |
| 1465 SendRequestAndExpectHttpResponse("hello world"); | |
| 1466 SendRequestAndExpectQuicResponse("hello!"); | |
| 1467 } | |
| 1468 | |
| 1469 TEST_P(QuicNetworkTransactionTest, | |
| 1470 DontUseAlternativeServiceProbabilityForQuic) { | |
| 1471 MockRead http_reads[] = { | |
| 1472 MockRead("HTTP/1.1 200 OK\r\n"), | |
| 1473 MockRead(kQuicAlternativeService50pctHeader), MockRead("hello world"), | |
| 1474 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | |
| 1475 MockRead(ASYNC, OK)}; | |
| 1476 | |
| 1477 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | |
| 1478 0); | |
| 1479 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1480 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1481 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1482 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1483 | |
| 1484 params_.alternative_service_probability_threshold = 0.75; | |
| 1485 CreateSession(); | |
| 1486 | |
| 1487 SendRequestAndExpectHttpResponse("hello world"); | |
| 1488 SendRequestAndExpectHttpResponse("hello world"); | |
| 1489 } | |
| 1490 | |
| 1491 TEST_P(QuicNetworkTransactionTest, | |
| 1492 DontUseAlternativeServiceWithBadProbabilityForQuic) { | |
| 1493 MockRead http_reads[] = { | |
| 1494 MockRead("HTTP/1.1 200 OK\r\n"), | |
| 1495 MockRead("Alt-Svc: quic=\":443\";p=2\r\n\r\n"), MockRead("hello world"), | |
| 1496 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | |
| 1497 MockRead(ASYNC, OK)}; | |
| 1498 | |
| 1499 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | |
| 1500 0); | |
| 1501 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1502 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1503 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1504 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1505 | |
| 1506 params_.alternative_service_probability_threshold = 0.75; | |
| 1507 CreateSession(); | |
| 1508 | |
| 1509 SendRequestAndExpectHttpResponse("hello world"); | |
| 1510 SendRequestAndExpectHttpResponse("hello world"); | |
| 1511 } | |
| 1512 | |
| 1513 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceForQuicForHttps) { | 1431 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceForQuicForHttps) { |
| 1514 MockRead http_reads[] = { | 1432 MockRead http_reads[] = { |
| 1515 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternativeServiceHeader), | 1433 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternativeServiceHeader), |
| 1516 MockRead("hello world"), | 1434 MockRead("hello world"), |
| 1517 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 1435 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
| 1518 MockRead(ASYNC, OK)}; | 1436 MockRead(ASYNC, OK)}; |
| 1519 | 1437 |
| 1520 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | 1438 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, |
| 1521 0); | 1439 0); |
| 1522 socket_factory_.AddSocketDataProvider(&http_data); | 1440 socket_factory_.AddSocketDataProvider(&http_data); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1660 | 1578 |
| 1661 SendRequestAndExpectHttpResponse("hello world"); | 1579 SendRequestAndExpectHttpResponse("hello world"); |
| 1662 SendRequestAndExpectQuicResponse("hello!"); | 1580 SendRequestAndExpectQuicResponse("hello!"); |
| 1663 | 1581 |
| 1664 mock_quic_data.Resume(); | 1582 mock_quic_data.Resume(); |
| 1665 | 1583 |
| 1666 EXPECT_FALSE(http_server_properties_.WasAlternativeServiceRecentlyBroken( | 1584 EXPECT_FALSE(http_server_properties_.WasAlternativeServiceRecentlyBroken( |
| 1667 alternative_service)); | 1585 alternative_service)); |
| 1668 } | 1586 } |
| 1669 | 1587 |
| 1670 TEST_P(QuicNetworkTransactionTest, UseAlternateProtocolProbabilityForQuic) { | |
| 1671 params_.parse_alternative_services = false; | |
| 1672 MockRead http_reads[] = { | |
| 1673 MockRead("HTTP/1.1 200 OK\r\n"), | |
| 1674 MockRead(kQuicAlternateProtocol50pctHeader), MockRead("hello world"), | |
| 1675 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | |
| 1676 MockRead(ASYNC, OK)}; | |
| 1677 | |
| 1678 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | |
| 1679 0); | |
| 1680 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1681 | |
| 1682 MockQuicData mock_quic_data; | |
| 1683 mock_quic_data.AddWrite( | |
| 1684 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, | |
| 1685 GetRequestHeaders("GET", "https", "/"))); | |
| 1686 mock_quic_data.AddRead(ConstructResponseHeadersPacket( | |
| 1687 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); | |
| 1688 mock_quic_data.AddRead( | |
| 1689 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); | |
| 1690 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); | |
| 1691 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read | |
| 1692 mock_quic_data.AddRead(ASYNC, 0); // EOF | |
| 1693 | |
| 1694 mock_quic_data.AddSocketDataToFactory(&socket_factory_); | |
| 1695 | |
| 1696 // The non-alternate protocol job needs to hang in order to guarantee that | |
| 1697 // the alternate-protocol job will "win". | |
| 1698 AddHangingNonAlternateProtocolSocketData(); | |
| 1699 | |
| 1700 params_.alternative_service_probability_threshold = .25; | |
| 1701 params_.parse_alternative_services = false; | |
| 1702 CreateSession(); | |
| 1703 | |
| 1704 SendRequestAndExpectHttpResponse("hello world"); | |
| 1705 SendRequestAndExpectQuicResponse("hello!"); | |
| 1706 } | |
| 1707 | |
| 1708 TEST_P(QuicNetworkTransactionTest, DontUseAlternateProtocolProbabilityForQuic) { | |
| 1709 params_.parse_alternative_services = false; | |
| 1710 MockRead http_reads[] = { | |
| 1711 MockRead("HTTP/1.1 200 OK\r\n"), | |
| 1712 MockRead(kQuicAlternateProtocol50pctHeader), MockRead("hello world"), | |
| 1713 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | |
| 1714 MockRead(ASYNC, OK)}; | |
| 1715 | |
| 1716 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | |
| 1717 0); | |
| 1718 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1719 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1720 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1721 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1722 | |
| 1723 params_.alternative_service_probability_threshold = .75; | |
| 1724 CreateSession(); | |
| 1725 | |
| 1726 SendRequestAndExpectHttpResponse("hello world"); | |
| 1727 SendRequestAndExpectHttpResponse("hello world"); | |
| 1728 } | |
| 1729 | |
| 1730 TEST_P(QuicNetworkTransactionTest, | |
| 1731 DontUseAlternateProtocolWithBadProbabilityForQuic) { | |
| 1732 params_.parse_alternative_services = false; | |
| 1733 MockRead http_reads[] = { | |
| 1734 MockRead("HTTP/1.1 200 OK\r\n"), | |
| 1735 MockRead("Alternate-Protocol: 443:quic,p=2\r\n\r\n"), | |
| 1736 MockRead("hello world"), | |
| 1737 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | |
| 1738 MockRead(ASYNC, OK)}; | |
| 1739 | |
| 1740 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | |
| 1741 0); | |
| 1742 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1743 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1744 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1745 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1746 | |
| 1747 params_.alternative_service_probability_threshold = .75; | |
| 1748 CreateSession(); | |
| 1749 | |
| 1750 SendRequestAndExpectHttpResponse("hello world"); | |
| 1751 SendRequestAndExpectHttpResponse("hello world"); | |
| 1752 } | |
| 1753 | |
| 1754 TEST_P(QuicNetworkTransactionTest, UseAlternateProtocolForQuicForHttps) { | 1588 TEST_P(QuicNetworkTransactionTest, UseAlternateProtocolForQuicForHttps) { |
| 1755 params_.parse_alternative_services = false; | 1589 params_.parse_alternative_services = false; |
| 1756 MockRead http_reads[] = { | 1590 MockRead http_reads[] = { |
| 1757 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternateProtocolHeader), | 1591 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternateProtocolHeader), |
| 1758 MockRead("hello world"), | 1592 MockRead("hello world"), |
| 1759 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 1593 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
| 1760 MockRead(ASYNC, OK)}; | 1594 MockRead(ASYNC, OK)}; |
| 1761 | 1595 |
| 1762 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | 1596 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, |
| 1763 0); | 1597 0); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1830 // connection to |alternate| only. | 1664 // connection to |alternate| only. |
| 1831 MockConnect refused_connect(ASYNC, ERR_CONNECTION_REFUSED); | 1665 MockConnect refused_connect(ASYNC, ERR_CONNECTION_REFUSED); |
| 1832 StaticSocketDataProvider refused_data; | 1666 StaticSocketDataProvider refused_data; |
| 1833 refused_data.set_connect_data(refused_connect); | 1667 refused_data.set_connect_data(refused_connect); |
| 1834 socket_factory_.AddSocketDataProvider(&refused_data); | 1668 socket_factory_.AddSocketDataProvider(&refused_data); |
| 1835 | 1669 |
| 1836 CreateSession(); | 1670 CreateSession(); |
| 1837 AlternativeService alternative_service(QUIC, alternative); | 1671 AlternativeService alternative_service(QUIC, alternative); |
| 1838 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 1672 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 1839 session_->http_server_properties()->SetAlternativeService( | 1673 session_->http_server_properties()->SetAlternativeService( |
| 1840 origin, alternative_service, 1.0, expiration); | 1674 origin, alternative_service, expiration); |
| 1841 scoped_ptr<HttpNetworkTransaction> trans( | 1675 scoped_ptr<HttpNetworkTransaction> trans( |
| 1842 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); | 1676 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); |
| 1843 TestCompletionCallback callback; | 1677 TestCompletionCallback callback; |
| 1844 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); | 1678 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); |
| 1845 EXPECT_EQ(ERR_IO_PENDING, rv); | 1679 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 1846 rv = callback.WaitForResult(); | 1680 rv = callback.WaitForResult(); |
| 1847 if (valid) { | 1681 if (valid) { |
| 1848 EXPECT_EQ(OK, rv); | 1682 EXPECT_EQ(OK, rv); |
| 1849 CheckWasQuicResponse(trans); | 1683 CheckWasQuicResponse(trans); |
| 1850 CheckResponsePort(trans, 443); | 1684 CheckResponsePort(trans, 443); |
| (...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2427 scoped_ptr<HttpNetworkTransaction> trans( | 2261 scoped_ptr<HttpNetworkTransaction> trans( |
| 2428 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); | 2262 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); |
| 2429 TestCompletionCallback callback; | 2263 TestCompletionCallback callback; |
| 2430 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); | 2264 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); |
| 2431 EXPECT_EQ(ERR_IO_PENDING, rv); | 2265 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 2432 EXPECT_NE(OK, callback.WaitForResult()); | 2266 EXPECT_NE(OK, callback.WaitForResult()); |
| 2433 } | 2267 } |
| 2434 | 2268 |
| 2435 } // namespace test | 2269 } // namespace test |
| 2436 } // namespace net | 2270 } // namespace net |
| OLD | NEW |