| 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 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 1578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1589 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( | 1589 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( |
| 1590 HttpNetworkSession::NORMAL_SOCKET_POOL))); | 1590 HttpNetworkSession::NORMAL_SOCKET_POOL))); |
| 1591 EXPECT_EQ(0, GetSocketPoolGroupCount( | 1591 EXPECT_EQ(0, GetSocketPoolGroupCount( |
| 1592 session->GetTransportSocketPool( | 1592 session->GetTransportSocketPool( |
| 1593 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 1593 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 1594 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( | 1594 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( |
| 1595 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 1595 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 1596 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); | 1596 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); |
| 1597 } | 1597 } |
| 1598 | 1598 |
| 1599 // Test the race of SetPriority versus stream completion where SetPriority |
| 1600 // may be called on an HttpStreamFactoryImpl::Job after the stream |
| 1601 // has been created by the job. |
| 1602 TEST_F(HttpStreamFactoryTest, ReprioritizeAfterStreamReceived) { |
| 1603 SpdySessionDependencies session_deps(ProxyService::CreateDirect()); |
| 1604 |
| 1605 MockRead mock_read(SYNCHRONOUS, ERR_IO_PENDING); |
| 1606 StaticSocketDataProvider socket_data(&mock_read, 1, nullptr, 0); |
| 1607 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
| 1608 session_deps.socket_factory->AddSocketDataProvider(&socket_data); |
| 1609 |
| 1610 SSLSocketDataProvider ssl_socket_data(SYNCHRONOUS, OK); |
| 1611 ssl_socket_data.next_proto = kProtoHTTP2; |
| 1612 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data); |
| 1613 |
| 1614 std::unique_ptr<HttpNetworkSession> session( |
| 1615 SpdySessionDependencies::SpdyCreateSession(&session_deps)); |
| 1616 |
| 1617 // Now request a stream. |
| 1618 HttpRequestInfo request_info; |
| 1619 request_info.method = "GET"; |
| 1620 request_info.url = GURL("https://www.google.com"); |
| 1621 request_info.load_flags = 0; |
| 1622 |
| 1623 SSLConfig ssl_config; |
| 1624 StreamRequestWaiter waiter; |
| 1625 EXPECT_EQ(0, GetSpdySessionCount(session.get())); |
| 1626 std::unique_ptr<HttpStreamRequest> request( |
| 1627 session->http_stream_factory()->RequestStream( |
| 1628 request_info, LOWEST, ssl_config, ssl_config, &waiter, |
| 1629 NetLogWithSource())); |
| 1630 EXPECT_FALSE(waiter.stream_done()); |
| 1631 |
| 1632 // Confirm a stream has been created by asserting that a new session |
| 1633 // has been created. (The stream is only created at the SPDY level on |
| 1634 // first write, which happens after the request has returned a stream). |
| 1635 ASSERT_EQ(1, GetSpdySessionCount(session.get())); |
| 1636 |
| 1637 // Test to confirm that a SetPriority received after the stream is created |
| 1638 // but before the request returns it does not crash. |
| 1639 request->SetPriority(HIGHEST); |
| 1640 |
| 1641 waiter.WaitForStream(); |
| 1642 EXPECT_TRUE(waiter.stream_done()); |
| 1643 ASSERT_TRUE(waiter.stream()); |
| 1644 EXPECT_FALSE(waiter.websocket_stream()); |
| 1645 } |
| 1646 |
| 1599 TEST_F(HttpStreamFactoryTest, RequestHttpStreamOverSSL) { | 1647 TEST_F(HttpStreamFactoryTest, RequestHttpStreamOverSSL) { |
| 1600 SpdySessionDependencies session_deps(ProxyService::CreateDirect()); | 1648 SpdySessionDependencies session_deps(ProxyService::CreateDirect()); |
| 1601 | 1649 |
| 1602 MockRead mock_read(ASYNC, OK); | 1650 MockRead mock_read(ASYNC, OK); |
| 1603 StaticSocketDataProvider socket_data(&mock_read, 1, nullptr, 0); | 1651 StaticSocketDataProvider socket_data(&mock_read, 1, nullptr, 0); |
| 1604 socket_data.set_connect_data(MockConnect(ASYNC, OK)); | 1652 socket_data.set_connect_data(MockConnect(ASYNC, OK)); |
| 1605 session_deps.socket_factory->AddSocketDataProvider(&socket_data); | 1653 session_deps.socket_factory->AddSocketDataProvider(&socket_data); |
| 1606 | 1654 |
| 1607 SSLSocketDataProvider ssl_socket_data(ASYNC, OK); | 1655 SSLSocketDataProvider ssl_socket_data(ASYNC, OK); |
| 1608 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data); | 1656 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data); |
| (...skipping 982 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2591 session->GetTransportSocketPool( | 2639 session->GetTransportSocketPool( |
| 2592 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 2640 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 2593 EXPECT_EQ(1, GetSocketPoolGroupCount( | 2641 EXPECT_EQ(1, GetSocketPoolGroupCount( |
| 2594 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 2642 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 2595 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); | 2643 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); |
| 2596 } | 2644 } |
| 2597 | 2645 |
| 2598 } // namespace | 2646 } // namespace |
| 2599 | 2647 |
| 2600 } // namespace net | 2648 } // namespace net |
| OLD | NEW |