| 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 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 510 SendRequestAndExpectQuicResponseMaybeFromProxy(expected, true, port); | 506 SendRequestAndExpectQuicResponseMaybeFromProxy(expected, true, port); |
| 511 } | 507 } |
| 512 | 508 |
| 513 void AddQuicAlternateProtocolMapping( | 509 void AddQuicAlternateProtocolMapping( |
| 514 MockCryptoClientStream::HandshakeMode handshake_mode) { | 510 MockCryptoClientStream::HandshakeMode handshake_mode) { |
| 515 crypto_client_stream_factory_.set_handshake_mode(handshake_mode); | 511 crypto_client_stream_factory_.set_handshake_mode(handshake_mode); |
| 516 HostPortPair host_port_pair = HostPortPair::FromURL(request_.url); | 512 HostPortPair host_port_pair = HostPortPair::FromURL(request_.url); |
| 517 AlternativeService alternative_service(QUIC, host_port_pair.host(), 443); | 513 AlternativeService alternative_service(QUIC, host_port_pair.host(), 443); |
| 518 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 514 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 519 http_server_properties_.SetAlternativeService( | 515 http_server_properties_.SetAlternativeService( |
| 520 host_port_pair, alternative_service, 1.0, expiration); | 516 host_port_pair, alternative_service, expiration); |
| 521 } | 517 } |
| 522 | 518 |
| 523 void AddQuicRemoteAlternativeServiceMapping( | 519 void AddQuicRemoteAlternativeServiceMapping( |
| 524 MockCryptoClientStream::HandshakeMode handshake_mode, | 520 MockCryptoClientStream::HandshakeMode handshake_mode, |
| 525 const HostPortPair& alternative) { | 521 const HostPortPair& alternative) { |
| 526 crypto_client_stream_factory_.set_handshake_mode(handshake_mode); | 522 crypto_client_stream_factory_.set_handshake_mode(handshake_mode); |
| 527 HostPortPair host_port_pair = HostPortPair::FromURL(request_.url); | 523 HostPortPair host_port_pair = HostPortPair::FromURL(request_.url); |
| 528 AlternativeService alternative_service(QUIC, alternative.host(), | 524 AlternativeService alternative_service(QUIC, alternative.host(), |
| 529 alternative.port()); | 525 alternative.port()); |
| 530 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 526 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 531 http_server_properties_.SetAlternativeService( | 527 http_server_properties_.SetAlternativeService( |
| 532 host_port_pair, alternative_service, 1.0, expiration); | 528 host_port_pair, alternative_service, expiration); |
| 533 } | 529 } |
| 534 | 530 |
| 535 void ExpectBrokenAlternateProtocolMapping() { | 531 void ExpectBrokenAlternateProtocolMapping() { |
| 536 const HostPortPair origin = HostPortPair::FromURL(request_.url); | 532 const HostPortPair origin = HostPortPair::FromURL(request_.url); |
| 537 const AlternativeServiceVector alternative_service_vector = | 533 const AlternativeServiceVector alternative_service_vector = |
| 538 http_server_properties_.GetAlternativeServices(origin); | 534 http_server_properties_.GetAlternativeServices(origin); |
| 539 EXPECT_EQ(1u, alternative_service_vector.size()); | 535 EXPECT_EQ(1u, alternative_service_vector.size()); |
| 540 EXPECT_TRUE(http_server_properties_.IsAlternativeServiceBroken( | 536 EXPECT_TRUE(http_server_properties_.IsAlternativeServiceBroken( |
| 541 alternative_service_vector[0])); | 537 alternative_service_vector[0])); |
| 542 } | 538 } |
| (...skipping 802 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1345 | 1341 |
| 1346 SendRequestAndExpectHttpResponse("hello world"); | 1342 SendRequestAndExpectHttpResponse("hello world"); |
| 1347 SendRequestAndExpectQuicResponse("hello!"); | 1343 SendRequestAndExpectQuicResponse("hello!"); |
| 1348 | 1344 |
| 1349 mock_quic_data.Resume(); | 1345 mock_quic_data.Resume(); |
| 1350 | 1346 |
| 1351 EXPECT_FALSE(http_server_properties_.WasAlternativeServiceRecentlyBroken( | 1347 EXPECT_FALSE(http_server_properties_.WasAlternativeServiceRecentlyBroken( |
| 1352 alternative_service)); | 1348 alternative_service)); |
| 1353 } | 1349 } |
| 1354 | 1350 |
| 1355 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceProbabilityForQuic) { | |
| 1356 MockRead http_reads[] = { | |
| 1357 MockRead("HTTP/1.1 200 OK\r\n"), | |
| 1358 MockRead(kQuicAlternativeService50pctHeader), MockRead("hello world"), | |
| 1359 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | |
| 1360 MockRead(ASYNC, OK)}; | |
| 1361 | |
| 1362 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | |
| 1363 0); | |
| 1364 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1365 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1366 | |
| 1367 MockQuicData mock_quic_data; | |
| 1368 mock_quic_data.AddWrite( | |
| 1369 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, | |
| 1370 GetRequestHeaders("GET", "https", "/"))); | |
| 1371 mock_quic_data.AddRead(ConstructResponseHeadersPacket( | |
| 1372 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); | |
| 1373 mock_quic_data.AddRead( | |
| 1374 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); | |
| 1375 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); | |
| 1376 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read | |
| 1377 mock_quic_data.AddRead(ASYNC, 0); // EOF | |
| 1378 | |
| 1379 mock_quic_data.AddSocketDataToFactory(&socket_factory_); | |
| 1380 | |
| 1381 AddHangingNonAlternateProtocolSocketData(); | |
| 1382 params_.alternative_service_probability_threshold = 0.25; | |
| 1383 CreateSession(); | |
| 1384 | |
| 1385 SendRequestAndExpectHttpResponse("hello world"); | |
| 1386 SendRequestAndExpectQuicResponse("hello!"); | |
| 1387 } | |
| 1388 | |
| 1389 TEST_P(QuicNetworkTransactionTest, | |
| 1390 DontUseAlternativeServiceProbabilityForQuic) { | |
| 1391 MockRead http_reads[] = { | |
| 1392 MockRead("HTTP/1.1 200 OK\r\n"), | |
| 1393 MockRead(kQuicAlternativeService50pctHeader), MockRead("hello world"), | |
| 1394 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | |
| 1395 MockRead(ASYNC, OK)}; | |
| 1396 | |
| 1397 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | |
| 1398 0); | |
| 1399 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1400 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1401 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1402 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1403 | |
| 1404 params_.alternative_service_probability_threshold = 0.75; | |
| 1405 CreateSession(); | |
| 1406 | |
| 1407 SendRequestAndExpectHttpResponse("hello world"); | |
| 1408 SendRequestAndExpectHttpResponse("hello world"); | |
| 1409 } | |
| 1410 | |
| 1411 TEST_P(QuicNetworkTransactionTest, | |
| 1412 DontUseAlternativeServiceWithBadProbabilityForQuic) { | |
| 1413 MockRead http_reads[] = { | |
| 1414 MockRead("HTTP/1.1 200 OK\r\n"), | |
| 1415 MockRead("Alt-Svc: quic=\":443\";p=2\r\n\r\n"), MockRead("hello world"), | |
| 1416 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | |
| 1417 MockRead(ASYNC, OK)}; | |
| 1418 | |
| 1419 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | |
| 1420 0); | |
| 1421 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1422 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1423 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1424 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1425 | |
| 1426 params_.alternative_service_probability_threshold = 0.75; | |
| 1427 CreateSession(); | |
| 1428 | |
| 1429 SendRequestAndExpectHttpResponse("hello world"); | |
| 1430 SendRequestAndExpectHttpResponse("hello world"); | |
| 1431 } | |
| 1432 | |
| 1433 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceForQuicForHttps) { | 1351 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceForQuicForHttps) { |
| 1434 MockRead http_reads[] = { | 1352 MockRead http_reads[] = { |
| 1435 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternativeServiceHeader), | 1353 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternativeServiceHeader), |
| 1436 MockRead("hello world"), | 1354 MockRead("hello world"), |
| 1437 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 1355 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
| 1438 MockRead(ASYNC, OK)}; | 1356 MockRead(ASYNC, OK)}; |
| 1439 | 1357 |
| 1440 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | 1358 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, |
| 1441 0); | 1359 0); |
| 1442 socket_factory_.AddSocketDataProvider(&http_data); | 1360 socket_factory_.AddSocketDataProvider(&http_data); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1580 | 1498 |
| 1581 SendRequestAndExpectHttpResponse("hello world"); | 1499 SendRequestAndExpectHttpResponse("hello world"); |
| 1582 SendRequestAndExpectQuicResponse("hello!"); | 1500 SendRequestAndExpectQuicResponse("hello!"); |
| 1583 | 1501 |
| 1584 mock_quic_data.Resume(); | 1502 mock_quic_data.Resume(); |
| 1585 | 1503 |
| 1586 EXPECT_FALSE(http_server_properties_.WasAlternativeServiceRecentlyBroken( | 1504 EXPECT_FALSE(http_server_properties_.WasAlternativeServiceRecentlyBroken( |
| 1587 alternative_service)); | 1505 alternative_service)); |
| 1588 } | 1506 } |
| 1589 | 1507 |
| 1590 TEST_P(QuicNetworkTransactionTest, UseAlternateProtocolProbabilityForQuic) { | |
| 1591 params_.parse_alternative_services = false; | |
| 1592 MockRead http_reads[] = { | |
| 1593 MockRead("HTTP/1.1 200 OK\r\n"), | |
| 1594 MockRead(kQuicAlternateProtocol50pctHeader), MockRead("hello world"), | |
| 1595 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | |
| 1596 MockRead(ASYNC, OK)}; | |
| 1597 | |
| 1598 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | |
| 1599 0); | |
| 1600 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1601 | |
| 1602 MockQuicData mock_quic_data; | |
| 1603 mock_quic_data.AddWrite( | |
| 1604 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, | |
| 1605 GetRequestHeaders("GET", "https", "/"))); | |
| 1606 mock_quic_data.AddRead(ConstructResponseHeadersPacket( | |
| 1607 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); | |
| 1608 mock_quic_data.AddRead( | |
| 1609 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); | |
| 1610 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); | |
| 1611 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read | |
| 1612 mock_quic_data.AddRead(ASYNC, 0); // EOF | |
| 1613 | |
| 1614 mock_quic_data.AddSocketDataToFactory(&socket_factory_); | |
| 1615 | |
| 1616 // The non-alternate protocol job needs to hang in order to guarantee that | |
| 1617 // the alternate-protocol job will "win". | |
| 1618 AddHangingNonAlternateProtocolSocketData(); | |
| 1619 | |
| 1620 params_.alternative_service_probability_threshold = .25; | |
| 1621 params_.parse_alternative_services = false; | |
| 1622 CreateSession(); | |
| 1623 | |
| 1624 SendRequestAndExpectHttpResponse("hello world"); | |
| 1625 SendRequestAndExpectQuicResponse("hello!"); | |
| 1626 } | |
| 1627 | |
| 1628 TEST_P(QuicNetworkTransactionTest, DontUseAlternateProtocolProbabilityForQuic) { | |
| 1629 params_.parse_alternative_services = false; | |
| 1630 MockRead http_reads[] = { | |
| 1631 MockRead("HTTP/1.1 200 OK\r\n"), | |
| 1632 MockRead(kQuicAlternateProtocol50pctHeader), MockRead("hello world"), | |
| 1633 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | |
| 1634 MockRead(ASYNC, OK)}; | |
| 1635 | |
| 1636 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | |
| 1637 0); | |
| 1638 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1639 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1640 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1641 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1642 | |
| 1643 params_.alternative_service_probability_threshold = .75; | |
| 1644 CreateSession(); | |
| 1645 | |
| 1646 SendRequestAndExpectHttpResponse("hello world"); | |
| 1647 SendRequestAndExpectHttpResponse("hello world"); | |
| 1648 } | |
| 1649 | |
| 1650 TEST_P(QuicNetworkTransactionTest, | |
| 1651 DontUseAlternateProtocolWithBadProbabilityForQuic) { | |
| 1652 params_.parse_alternative_services = false; | |
| 1653 MockRead http_reads[] = { | |
| 1654 MockRead("HTTP/1.1 200 OK\r\n"), | |
| 1655 MockRead("Alternate-Protocol: 443:quic,p=2\r\n\r\n"), | |
| 1656 MockRead("hello world"), | |
| 1657 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | |
| 1658 MockRead(ASYNC, OK)}; | |
| 1659 | |
| 1660 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | |
| 1661 0); | |
| 1662 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1663 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1664 socket_factory_.AddSocketDataProvider(&http_data); | |
| 1665 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | |
| 1666 | |
| 1667 params_.alternative_service_probability_threshold = .75; | |
| 1668 CreateSession(); | |
| 1669 | |
| 1670 SendRequestAndExpectHttpResponse("hello world"); | |
| 1671 SendRequestAndExpectHttpResponse("hello world"); | |
| 1672 } | |
| 1673 | |
| 1674 TEST_P(QuicNetworkTransactionTest, UseAlternateProtocolForQuicForHttps) { | 1508 TEST_P(QuicNetworkTransactionTest, UseAlternateProtocolForQuicForHttps) { |
| 1675 params_.parse_alternative_services = false; | 1509 params_.parse_alternative_services = false; |
| 1676 MockRead http_reads[] = { | 1510 MockRead http_reads[] = { |
| 1677 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternateProtocolHeader), | 1511 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternateProtocolHeader), |
| 1678 MockRead("hello world"), | 1512 MockRead("hello world"), |
| 1679 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 1513 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
| 1680 MockRead(ASYNC, OK)}; | 1514 MockRead(ASYNC, OK)}; |
| 1681 | 1515 |
| 1682 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | 1516 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, |
| 1683 0); | 1517 0); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1750 // connection to |alternate| only. | 1584 // connection to |alternate| only. |
| 1751 MockConnect refused_connect(ASYNC, ERR_CONNECTION_REFUSED); | 1585 MockConnect refused_connect(ASYNC, ERR_CONNECTION_REFUSED); |
| 1752 StaticSocketDataProvider refused_data; | 1586 StaticSocketDataProvider refused_data; |
| 1753 refused_data.set_connect_data(refused_connect); | 1587 refused_data.set_connect_data(refused_connect); |
| 1754 socket_factory_.AddSocketDataProvider(&refused_data); | 1588 socket_factory_.AddSocketDataProvider(&refused_data); |
| 1755 | 1589 |
| 1756 CreateSession(); | 1590 CreateSession(); |
| 1757 AlternativeService alternative_service(QUIC, alternative); | 1591 AlternativeService alternative_service(QUIC, alternative); |
| 1758 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 1592 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 1759 session_->http_server_properties()->SetAlternativeService( | 1593 session_->http_server_properties()->SetAlternativeService( |
| 1760 origin, alternative_service, 1.0, expiration); | 1594 origin, alternative_service, expiration); |
| 1761 scoped_ptr<HttpNetworkTransaction> trans( | 1595 scoped_ptr<HttpNetworkTransaction> trans( |
| 1762 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); | 1596 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); |
| 1763 TestCompletionCallback callback; | 1597 TestCompletionCallback callback; |
| 1764 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); | 1598 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); |
| 1765 EXPECT_EQ(ERR_IO_PENDING, rv); | 1599 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 1766 rv = callback.WaitForResult(); | 1600 rv = callback.WaitForResult(); |
| 1767 if (valid) { | 1601 if (valid) { |
| 1768 EXPECT_EQ(OK, rv); | 1602 EXPECT_EQ(OK, rv); |
| 1769 CheckWasQuicResponse(trans); | 1603 CheckWasQuicResponse(trans); |
| 1770 CheckResponsePort(trans, 443); | 1604 CheckResponsePort(trans, 443); |
| (...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2347 scoped_ptr<HttpNetworkTransaction> trans( | 2181 scoped_ptr<HttpNetworkTransaction> trans( |
| 2348 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); | 2182 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); |
| 2349 TestCompletionCallback callback; | 2183 TestCompletionCallback callback; |
| 2350 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); | 2184 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); |
| 2351 EXPECT_EQ(ERR_IO_PENDING, rv); | 2185 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 2352 EXPECT_NE(OK, callback.WaitForResult()); | 2186 EXPECT_NE(OK, callback.WaitForResult()); |
| 2353 } | 2187 } |
| 2354 | 2188 |
| 2355 } // namespace test | 2189 } // namespace test |
| 2356 } // namespace net | 2190 } // namespace net |
| OLD | NEW |