| 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/http/http_stream_factory_impl.h" | 5 #include "net/http/http_stream_factory_impl.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 1521 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1532 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( | 1532 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( |
| 1533 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 1533 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 1534 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); | 1534 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); |
| 1535 } | 1535 } |
| 1536 | 1536 |
| 1537 class HttpStreamFactoryBidirectionalQuicTest | 1537 class HttpStreamFactoryBidirectionalQuicTest |
| 1538 : public ::testing::Test, | 1538 : public ::testing::Test, |
| 1539 public ::testing::WithParamInterface<QuicVersion> { | 1539 public ::testing::WithParamInterface<QuicVersion> { |
| 1540 protected: | 1540 protected: |
| 1541 HttpStreamFactoryBidirectionalQuicTest() | 1541 HttpStreamFactoryBidirectionalQuicTest() |
| 1542 : clock_(new MockClock), | 1542 : default_url_(kDefaultUrl), |
| 1543 clock_(new MockClock), |
| 1543 client_packet_maker_(GetParam(), | 1544 client_packet_maker_(GetParam(), |
| 1544 0, | 1545 0, |
| 1545 clock_, | 1546 clock_, |
| 1546 "www.example.org", | 1547 "www.example.org", |
| 1547 Perspective::IS_CLIENT), | 1548 Perspective::IS_CLIENT), |
| 1548 server_packet_maker_(GetParam(), | 1549 server_packet_maker_(GetParam(), |
| 1549 0, | 1550 0, |
| 1550 clock_, | 1551 clock_, |
| 1551 "www.example.org", | 1552 "www.example.org", |
| 1552 Perspective::IS_SERVER), | 1553 Perspective::IS_SERVER), |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1593 session_.reset(new HttpNetworkSession(params_)); | 1594 session_.reset(new HttpNetworkSession(params_)); |
| 1594 session_->quic_stream_factory()->set_require_confirmation(false); | 1595 session_->quic_stream_factory()->set_require_confirmation(false); |
| 1595 } | 1596 } |
| 1596 | 1597 |
| 1597 void AddQuicAlternativeService() { | 1598 void AddQuicAlternativeService() { |
| 1598 const AlternativeService alternative_service(QUIC, "www.example.org", 443); | 1599 const AlternativeService alternative_service(QUIC, "www.example.org", 443); |
| 1599 AlternativeServiceInfoVector alternative_service_info_vector; | 1600 AlternativeServiceInfoVector alternative_service_info_vector; |
| 1600 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 1601 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 1601 alternative_service_info_vector.push_back( | 1602 alternative_service_info_vector.push_back( |
| 1602 AlternativeServiceInfo(alternative_service, expiration)); | 1603 AlternativeServiceInfo(alternative_service, expiration)); |
| 1603 url::SchemeHostPort server("https", "www.example.org", 443); | |
| 1604 http_server_properties_.SetAlternativeServices( | 1604 http_server_properties_.SetAlternativeServices( |
| 1605 server, alternative_service_info_vector); | 1605 url::SchemeHostPort(default_url_), alternative_service_info_vector); |
| 1606 }; | 1606 }; |
| 1607 | 1607 |
| 1608 test::QuicTestPacketMaker& client_packet_maker() { | 1608 test::QuicTestPacketMaker& client_packet_maker() { |
| 1609 return client_packet_maker_; | 1609 return client_packet_maker_; |
| 1610 } | 1610 } |
| 1611 test::QuicTestPacketMaker& server_packet_maker() { | 1611 test::QuicTestPacketMaker& server_packet_maker() { |
| 1612 return server_packet_maker_; | 1612 return server_packet_maker_; |
| 1613 } | 1613 } |
| 1614 | 1614 |
| 1615 MockClientSocketFactory& socket_factory() { return socket_factory_; } | 1615 MockClientSocketFactory& socket_factory() { return socket_factory_; } |
| 1616 | 1616 |
| 1617 HttpNetworkSession* session() { return session_.get(); } | 1617 HttpNetworkSession* session() { return session_.get(); } |
| 1618 | 1618 |
| 1619 const GURL default_url_; |
| 1620 |
| 1619 private: | 1621 private: |
| 1620 MockClock* clock_; // Owned by QuicStreamFactory | 1622 MockClock* clock_; // Owned by QuicStreamFactory |
| 1621 test::QuicTestPacketMaker client_packet_maker_; | 1623 test::QuicTestPacketMaker client_packet_maker_; |
| 1622 test::QuicTestPacketMaker server_packet_maker_; | 1624 test::QuicTestPacketMaker server_packet_maker_; |
| 1623 MockClientSocketFactory socket_factory_; | 1625 MockClientSocketFactory socket_factory_; |
| 1624 std::unique_ptr<HttpNetworkSession> session_; | 1626 std::unique_ptr<HttpNetworkSession> session_; |
| 1625 test::MockRandom random_generator_; | 1627 test::MockRandom random_generator_; |
| 1626 MockCertVerifier cert_verifier_; | 1628 MockCertVerifier cert_verifier_; |
| 1627 ProofVerifyDetailsChromium verify_details_; | 1629 ProofVerifyDetailsChromium verify_details_; |
| 1628 MockCryptoClientStreamFactory crypto_client_stream_factory_; | 1630 MockCryptoClientStreamFactory crypto_client_stream_factory_; |
| 1629 HttpServerPropertiesImpl http_server_properties_; | 1631 HttpServerPropertiesImpl http_server_properties_; |
| 1630 TransportSecurityState transport_security_state_; | 1632 TransportSecurityState transport_security_state_; |
| 1631 MultiLogCTVerifier ct_verifier_; | 1633 MultiLogCTVerifier ct_verifier_; |
| 1632 CTPolicyEnforcer ct_policy_enforcer_; | 1634 CTPolicyEnforcer ct_policy_enforcer_; |
| 1633 MockHostResolver host_resolver_; | 1635 MockHostResolver host_resolver_; |
| 1634 std::unique_ptr<ProxyService> proxy_service_; | 1636 std::unique_ptr<ProxyService> proxy_service_; |
| 1635 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_; | 1637 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_; |
| 1636 HttpNetworkSession::Params params_; | 1638 HttpNetworkSession::Params params_; |
| 1637 }; | 1639 }; |
| 1638 | 1640 |
| 1639 INSTANTIATE_TEST_CASE_P(Version, | 1641 INSTANTIATE_TEST_CASE_P(Version, |
| 1640 HttpStreamFactoryBidirectionalQuicTest, | 1642 HttpStreamFactoryBidirectionalQuicTest, |
| 1641 ::testing::ValuesIn(QuicSupportedVersions())); | 1643 ::testing::ValuesIn(QuicSupportedVersions())); |
| 1642 | 1644 |
| 1643 TEST_P(HttpStreamFactoryBidirectionalQuicTest, | 1645 TEST_P(HttpStreamFactoryBidirectionalQuicTest, |
| 1644 RequestBidirectionalStreamImplQuicAlternative) { | 1646 RequestBidirectionalStreamImplQuicAlternative) { |
| 1645 GURL url = GURL("https://www.example.org"); | |
| 1646 | |
| 1647 MockQuicData mock_quic_data; | 1647 MockQuicData mock_quic_data; |
| 1648 SpdyPriority priority = | 1648 SpdyPriority priority = |
| 1649 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); | 1649 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); |
| 1650 size_t spdy_headers_frame_length; | 1650 size_t spdy_headers_frame_length; |
| 1651 mock_quic_data.AddWrite(client_packet_maker().MakeRequestHeadersPacket( | 1651 mock_quic_data.AddWrite(client_packet_maker().MakeRequestHeadersPacket( |
| 1652 1, test::kClientDataStreamId1, /*should_include_version=*/true, | 1652 1, test::kClientDataStreamId1, /*should_include_version=*/true, |
| 1653 /*fin=*/true, priority, | 1653 /*fin=*/true, priority, |
| 1654 client_packet_maker().GetRequestHeaders("GET", "https", "/"), | 1654 client_packet_maker().GetRequestHeaders("GET", "https", "/"), |
| 1655 &spdy_headers_frame_length)); | 1655 &spdy_headers_frame_length)); |
| 1656 size_t spdy_response_headers_frame_length; | 1656 size_t spdy_response_headers_frame_length; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1671 socket_factory().AddSSLSocketDataProvider(&ssl_data); | 1671 socket_factory().AddSSLSocketDataProvider(&ssl_data); |
| 1672 | 1672 |
| 1673 // Set up QUIC as alternative_service. | 1673 // Set up QUIC as alternative_service. |
| 1674 AddQuicAlternativeService(); | 1674 AddQuicAlternativeService(); |
| 1675 Initialize(); | 1675 Initialize(); |
| 1676 | 1676 |
| 1677 // Now request a stream. | 1677 // Now request a stream. |
| 1678 SSLConfig ssl_config; | 1678 SSLConfig ssl_config; |
| 1679 HttpRequestInfo request_info; | 1679 HttpRequestInfo request_info; |
| 1680 request_info.method = "GET"; | 1680 request_info.method = "GET"; |
| 1681 request_info.url = GURL("https://www.example.org"); | 1681 request_info.url = default_url_; |
| 1682 request_info.load_flags = 0; | 1682 request_info.load_flags = 0; |
| 1683 | 1683 |
| 1684 StreamRequestWaiter waiter; | 1684 StreamRequestWaiter waiter; |
| 1685 std::unique_ptr<HttpStreamRequest> request( | 1685 std::unique_ptr<HttpStreamRequest> request( |
| 1686 session()->http_stream_factory()->RequestBidirectionalStreamImpl( | 1686 session()->http_stream_factory()->RequestBidirectionalStreamImpl( |
| 1687 request_info, DEFAULT_PRIORITY, ssl_config, ssl_config, &waiter, | 1687 request_info, DEFAULT_PRIORITY, ssl_config, ssl_config, &waiter, |
| 1688 BoundNetLog())); | 1688 BoundNetLog())); |
| 1689 | 1689 |
| 1690 waiter.WaitForStream(); | 1690 waiter.WaitForStream(); |
| 1691 EXPECT_TRUE(waiter.stream_done()); | 1691 EXPECT_TRUE(waiter.stream_done()); |
| 1692 EXPECT_FALSE(waiter.websocket_stream()); | 1692 EXPECT_FALSE(waiter.websocket_stream()); |
| 1693 ASSERT_FALSE(waiter.stream()); | 1693 ASSERT_FALSE(waiter.stream()); |
| 1694 ASSERT_TRUE(waiter.bidirectional_stream_impl()); | 1694 ASSERT_TRUE(waiter.bidirectional_stream_impl()); |
| 1695 BidirectionalStreamImpl* stream_impl = waiter.bidirectional_stream_impl(); | 1695 BidirectionalStreamImpl* stream_impl = waiter.bidirectional_stream_impl(); |
| 1696 | 1696 |
| 1697 BidirectionalStreamRequestInfo bidi_request_info; | 1697 BidirectionalStreamRequestInfo bidi_request_info; |
| 1698 bidi_request_info.method = "GET"; | 1698 bidi_request_info.method = "GET"; |
| 1699 bidi_request_info.url = GURL("https://www.example.org/"); | 1699 bidi_request_info.url = default_url_; |
| 1700 bidi_request_info.end_stream_on_headers = true; | 1700 bidi_request_info.end_stream_on_headers = true; |
| 1701 bidi_request_info.priority = LOWEST; | 1701 bidi_request_info.priority = LOWEST; |
| 1702 | 1702 |
| 1703 TestBidirectionalDelegate delegate; | 1703 TestBidirectionalDelegate delegate; |
| 1704 stream_impl->Start(&bidi_request_info, BoundNetLog(), | 1704 stream_impl->Start(&bidi_request_info, BoundNetLog(), |
| 1705 /*send_request_headers_automatically=*/true, &delegate, | 1705 /*send_request_headers_automatically=*/true, &delegate, |
| 1706 nullptr); | 1706 nullptr); |
| 1707 delegate.WaitUntilDone(); | 1707 delegate.WaitUntilDone(); |
| 1708 | 1708 |
| 1709 scoped_refptr<IOBuffer> buffer = new net::IOBuffer(1); | 1709 scoped_refptr<IOBuffer> buffer = new net::IOBuffer(1); |
| 1710 EXPECT_EQ(OK, stream_impl->ReadData(buffer.get(), 1)); | 1710 EXPECT_EQ(OK, stream_impl->ReadData(buffer.get(), 1)); |
| 1711 EXPECT_EQ(kProtoQUIC1SPDY3, stream_impl->GetProtocol()); | 1711 EXPECT_EQ(kProtoQUIC1SPDY3, stream_impl->GetProtocol()); |
| 1712 EXPECT_EQ("200", delegate.response_headers().find(":status")->second); | 1712 EXPECT_EQ("200", delegate.response_headers().find(":status")->second); |
| 1713 EXPECT_EQ(0, GetSocketPoolGroupCount(session()->GetTransportSocketPool( | 1713 EXPECT_EQ(0, GetSocketPoolGroupCount(session()->GetTransportSocketPool( |
| 1714 HttpNetworkSession::NORMAL_SOCKET_POOL))); | 1714 HttpNetworkSession::NORMAL_SOCKET_POOL))); |
| 1715 EXPECT_EQ(0, GetSocketPoolGroupCount(session()->GetSSLSocketPool( | 1715 EXPECT_EQ(0, GetSocketPoolGroupCount(session()->GetSSLSocketPool( |
| 1716 HttpNetworkSession::NORMAL_SOCKET_POOL))); | 1716 HttpNetworkSession::NORMAL_SOCKET_POOL))); |
| 1717 EXPECT_EQ(0, GetSocketPoolGroupCount(session()->GetTransportSocketPool( | 1717 EXPECT_EQ(0, GetSocketPoolGroupCount(session()->GetTransportSocketPool( |
| 1718 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 1718 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 1719 EXPECT_EQ(0, GetSocketPoolGroupCount(session()->GetSSLSocketPool( | 1719 EXPECT_EQ(0, GetSocketPoolGroupCount(session()->GetSSLSocketPool( |
| 1720 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 1720 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 1721 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); | 1721 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); |
| 1722 } | 1722 } |
| 1723 | 1723 |
| 1724 // Tests that when QUIC is not enabled for bidirectional streaming, HTTP/2 is | 1724 // Tests that when QUIC is not enabled for bidirectional streaming, HTTP/2 is |
| 1725 // used instead. | 1725 // used instead. |
| 1726 TEST_P(HttpStreamFactoryBidirectionalQuicTest, | 1726 TEST_P(HttpStreamFactoryBidirectionalQuicTest, |
| 1727 RequestBidirectionalStreamImplQuicNotEnabled) { | 1727 RequestBidirectionalStreamImplQuicNotEnabled) { |
| 1728 GURL url = GURL("https://www.example.org"); | |
| 1729 | |
| 1730 // Make the http job fail. | 1728 // Make the http job fail. |
| 1731 std::unique_ptr<StaticSocketDataProvider> http_job_data; | 1729 std::unique_ptr<StaticSocketDataProvider> http_job_data; |
| 1732 http_job_data.reset(new StaticSocketDataProvider()); | 1730 http_job_data.reset(new StaticSocketDataProvider()); |
| 1733 MockConnect failed_connect(ASYNC, ERR_CONNECTION_REFUSED); | 1731 MockConnect failed_connect(ASYNC, ERR_CONNECTION_REFUSED); |
| 1734 http_job_data->set_connect_data(failed_connect); | 1732 http_job_data->set_connect_data(failed_connect); |
| 1735 socket_factory().AddSocketDataProvider(http_job_data.get()); | 1733 socket_factory().AddSocketDataProvider(http_job_data.get()); |
| 1736 SSLSocketDataProvider ssl_data(ASYNC, OK); | 1734 SSLSocketDataProvider ssl_data(ASYNC, OK); |
| 1737 socket_factory().AddSSLSocketDataProvider(&ssl_data); | 1735 socket_factory().AddSSLSocketDataProvider(&ssl_data); |
| 1738 | 1736 |
| 1739 // Set up QUIC as alternative_service. | 1737 // Set up QUIC as alternative_service. |
| 1740 AddQuicAlternativeService(); | 1738 AddQuicAlternativeService(); |
| 1741 DisableQuicBidirectionalStream(); | 1739 DisableQuicBidirectionalStream(); |
| 1742 Initialize(); | 1740 Initialize(); |
| 1743 | 1741 |
| 1744 // Now request a stream. | 1742 // Now request a stream. |
| 1745 SSLConfig ssl_config; | 1743 SSLConfig ssl_config; |
| 1746 HttpRequestInfo request_info; | 1744 HttpRequestInfo request_info; |
| 1747 request_info.method = "GET"; | 1745 request_info.method = "GET"; |
| 1748 request_info.url = GURL("https://www.example.org"); | 1746 request_info.url = default_url_; |
| 1749 request_info.load_flags = 0; | 1747 request_info.load_flags = 0; |
| 1750 | 1748 |
| 1751 StreamRequestWaiter waiter; | 1749 StreamRequestWaiter waiter; |
| 1752 std::unique_ptr<HttpStreamRequest> request( | 1750 std::unique_ptr<HttpStreamRequest> request( |
| 1753 session()->http_stream_factory()->RequestBidirectionalStreamImpl( | 1751 session()->http_stream_factory()->RequestBidirectionalStreamImpl( |
| 1754 request_info, DEFAULT_PRIORITY, ssl_config, ssl_config, &waiter, | 1752 request_info, DEFAULT_PRIORITY, ssl_config, ssl_config, &waiter, |
| 1755 BoundNetLog())); | 1753 BoundNetLog())); |
| 1756 | 1754 |
| 1757 waiter.WaitForStream(); | 1755 waiter.WaitForStream(); |
| 1758 EXPECT_TRUE(waiter.stream_done()); | 1756 EXPECT_TRUE(waiter.stream_done()); |
| 1759 EXPECT_FALSE(waiter.websocket_stream()); | 1757 EXPECT_FALSE(waiter.websocket_stream()); |
| 1760 ASSERT_FALSE(waiter.stream()); | 1758 ASSERT_FALSE(waiter.stream()); |
| 1761 ASSERT_FALSE(waiter.bidirectional_stream_impl()); | 1759 ASSERT_FALSE(waiter.bidirectional_stream_impl()); |
| 1762 // Since the alternative service job is not started, we will get the error | 1760 // Since the alternative service job is not started, we will get the error |
| 1763 // from the http job. | 1761 // from the http job. |
| 1764 ASSERT_EQ(ERR_CONNECTION_REFUSED, waiter.error_status()); | 1762 ASSERT_EQ(ERR_CONNECTION_REFUSED, waiter.error_status()); |
| 1765 } | 1763 } |
| 1766 | 1764 |
| 1767 // Tests that if Http job fails, but Quic job succeeds, we return | 1765 // Tests that if Http job fails, but Quic job succeeds, we return |
| 1768 // BidirectionalStreamQuicImpl. | 1766 // BidirectionalStreamQuicImpl. |
| 1769 TEST_P(HttpStreamFactoryBidirectionalQuicTest, | 1767 TEST_P(HttpStreamFactoryBidirectionalQuicTest, |
| 1770 RequestBidirectionalStreamImplHttpJobFailsQuicJobSucceeds) { | 1768 RequestBidirectionalStreamImplHttpJobFailsQuicJobSucceeds) { |
| 1771 GURL url = GURL("https://www.example.org"); | |
| 1772 | |
| 1773 // Set up Quic data. | 1769 // Set up Quic data. |
| 1774 MockQuicData mock_quic_data; | 1770 MockQuicData mock_quic_data; |
| 1775 SpdyPriority priority = | 1771 SpdyPriority priority = |
| 1776 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); | 1772 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); |
| 1777 size_t spdy_headers_frame_length; | 1773 size_t spdy_headers_frame_length; |
| 1778 mock_quic_data.AddWrite(client_packet_maker().MakeRequestHeadersPacket( | 1774 mock_quic_data.AddWrite(client_packet_maker().MakeRequestHeadersPacket( |
| 1779 1, test::kClientDataStreamId1, /*should_include_version=*/true, | 1775 1, test::kClientDataStreamId1, /*should_include_version=*/true, |
| 1780 /*fin=*/true, priority, | 1776 /*fin=*/true, priority, |
| 1781 client_packet_maker().GetRequestHeaders("GET", "https", "/"), | 1777 client_packet_maker().GetRequestHeaders("GET", "https", "/"), |
| 1782 &spdy_headers_frame_length)); | 1778 &spdy_headers_frame_length)); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1798 socket_factory().AddSSLSocketDataProvider(&ssl_data); | 1794 socket_factory().AddSSLSocketDataProvider(&ssl_data); |
| 1799 | 1795 |
| 1800 // Set up QUIC as alternative_service. | 1796 // Set up QUIC as alternative_service. |
| 1801 AddQuicAlternativeService(); | 1797 AddQuicAlternativeService(); |
| 1802 Initialize(); | 1798 Initialize(); |
| 1803 | 1799 |
| 1804 // Now request a stream. | 1800 // Now request a stream. |
| 1805 SSLConfig ssl_config; | 1801 SSLConfig ssl_config; |
| 1806 HttpRequestInfo request_info; | 1802 HttpRequestInfo request_info; |
| 1807 request_info.method = "GET"; | 1803 request_info.method = "GET"; |
| 1808 request_info.url = GURL("https://www.example.org"); | 1804 request_info.url = default_url_; |
| 1809 request_info.load_flags = 0; | 1805 request_info.load_flags = 0; |
| 1810 | 1806 |
| 1811 StreamRequestWaiter waiter; | 1807 StreamRequestWaiter waiter; |
| 1812 std::unique_ptr<HttpStreamRequest> request( | 1808 std::unique_ptr<HttpStreamRequest> request( |
| 1813 session()->http_stream_factory()->RequestBidirectionalStreamImpl( | 1809 session()->http_stream_factory()->RequestBidirectionalStreamImpl( |
| 1814 request_info, DEFAULT_PRIORITY, ssl_config, ssl_config, &waiter, | 1810 request_info, DEFAULT_PRIORITY, ssl_config, ssl_config, &waiter, |
| 1815 BoundNetLog())); | 1811 BoundNetLog())); |
| 1816 | 1812 |
| 1817 waiter.WaitForStream(); | 1813 waiter.WaitForStream(); |
| 1818 EXPECT_TRUE(waiter.stream_done()); | 1814 EXPECT_TRUE(waiter.stream_done()); |
| 1819 EXPECT_FALSE(waiter.websocket_stream()); | 1815 EXPECT_FALSE(waiter.websocket_stream()); |
| 1820 ASSERT_FALSE(waiter.stream()); | 1816 ASSERT_FALSE(waiter.stream()); |
| 1821 ASSERT_TRUE(waiter.bidirectional_stream_impl()); | 1817 ASSERT_TRUE(waiter.bidirectional_stream_impl()); |
| 1822 BidirectionalStreamImpl* stream_impl = waiter.bidirectional_stream_impl(); | 1818 BidirectionalStreamImpl* stream_impl = waiter.bidirectional_stream_impl(); |
| 1823 | 1819 |
| 1824 BidirectionalStreamRequestInfo bidi_request_info; | 1820 BidirectionalStreamRequestInfo bidi_request_info; |
| 1825 bidi_request_info.method = "GET"; | 1821 bidi_request_info.method = "GET"; |
| 1826 bidi_request_info.url = GURL("https://www.example.org/"); | 1822 bidi_request_info.url = default_url_; |
| 1827 bidi_request_info.end_stream_on_headers = true; | 1823 bidi_request_info.end_stream_on_headers = true; |
| 1828 bidi_request_info.priority = LOWEST; | 1824 bidi_request_info.priority = LOWEST; |
| 1829 | 1825 |
| 1830 TestBidirectionalDelegate delegate; | 1826 TestBidirectionalDelegate delegate; |
| 1831 stream_impl->Start(&bidi_request_info, BoundNetLog(), | 1827 stream_impl->Start(&bidi_request_info, BoundNetLog(), |
| 1832 /*send_request_headers_automatically=*/true, &delegate, | 1828 /*send_request_headers_automatically=*/true, &delegate, |
| 1833 nullptr); | 1829 nullptr); |
| 1834 delegate.WaitUntilDone(); | 1830 delegate.WaitUntilDone(); |
| 1835 | 1831 |
| 1836 // Make sure the BidirectionalStream negotiated goes through QUIC. | 1832 // Make sure the BidirectionalStream negotiated goes through QUIC. |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2075 session->GetTransportSocketPool( | 2071 session->GetTransportSocketPool( |
| 2076 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 2072 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 2077 EXPECT_EQ(1, GetSocketPoolGroupCount( | 2073 EXPECT_EQ(1, GetSocketPoolGroupCount( |
| 2078 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 2074 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 2079 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); | 2075 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); |
| 2080 } | 2076 } |
| 2081 | 2077 |
| 2082 } // namespace | 2078 } // namespace |
| 2083 | 2079 |
| 2084 } // namespace net | 2080 } // namespace net |
| OLD | NEW |