OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_network_transaction.h" | 5 #include "net/http/http_network_transaction.h" |
6 | 6 |
7 #include <math.h> // ceil | 7 #include <math.h> // ceil |
8 #include <stdarg.h> | 8 #include <stdarg.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | |
11 #include <limits> | 10 #include <limits> |
12 #include <string> | 11 #include <string> |
| 12 #include <utility> |
13 #include <vector> | 13 #include <vector> |
14 | 14 |
15 #include "base/compiler_specific.h" | 15 #include "base/compiler_specific.h" |
16 #include "base/files/file_path.h" | 16 #include "base/files/file_path.h" |
17 #include "base/files/file_util.h" | 17 #include "base/files/file_util.h" |
18 #include "base/json/json_writer.h" | 18 #include "base/json/json_writer.h" |
19 #include "base/logging.h" | 19 #include "base/logging.h" |
20 #include "base/macros.h" | 20 #include "base/macros.h" |
21 #include "base/memory/scoped_ptr.h" | 21 #include "base/memory/scoped_ptr.h" |
22 #include "base/memory/weak_ptr.h" | 22 #include "base/memory/weak_ptr.h" |
(...skipping 3489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3512 session_deps_.proxy_service = | 3512 session_deps_.proxy_service = |
3513 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"); | 3513 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"); |
3514 | 3514 |
3515 scoped_ptr<HttpAuthHandlerMock::Factory> auth_handler_factory( | 3515 scoped_ptr<HttpAuthHandlerMock::Factory> auth_handler_factory( |
3516 new HttpAuthHandlerMock::Factory()); | 3516 new HttpAuthHandlerMock::Factory()); |
3517 auth_handler_factory->set_do_init_from_challenge(true); | 3517 auth_handler_factory->set_do_init_from_challenge(true); |
3518 scoped_ptr<HttpAuthHandlerMock> mock_handler(new HttpAuthHandlerMock()); | 3518 scoped_ptr<HttpAuthHandlerMock> mock_handler(new HttpAuthHandlerMock()); |
3519 mock_handler->set_allows_default_credentials(true); | 3519 mock_handler->set_allows_default_credentials(true); |
3520 auth_handler_factory->AddMockHandler(mock_handler.release(), | 3520 auth_handler_factory->AddMockHandler(mock_handler.release(), |
3521 HttpAuth::AUTH_PROXY); | 3521 HttpAuth::AUTH_PROXY); |
3522 session_deps_.http_auth_handler_factory = auth_handler_factory.Pass(); | 3522 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); |
3523 | 3523 |
3524 // Add NetLog just so can verify load timing information gets a NetLog ID. | 3524 // Add NetLog just so can verify load timing information gets a NetLog ID. |
3525 NetLog net_log; | 3525 NetLog net_log; |
3526 session_deps_.net_log = &net_log; | 3526 session_deps_.net_log = &net_log; |
3527 scoped_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); | 3527 scoped_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
3528 | 3528 |
3529 // Since we have proxy, should try to establish tunnel. | 3529 // Since we have proxy, should try to establish tunnel. |
3530 MockWrite data_writes1[] = { | 3530 MockWrite data_writes1[] = { |
3531 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n" | 3531 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n" |
3532 "Host: www.example.org:443\r\n" | 3532 "Host: www.example.org:443\r\n" |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3629 session_deps_.proxy_service = | 3629 session_deps_.proxy_service = |
3630 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"); | 3630 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"); |
3631 | 3631 |
3632 scoped_ptr<HttpAuthHandlerMock::Factory> auth_handler_factory( | 3632 scoped_ptr<HttpAuthHandlerMock::Factory> auth_handler_factory( |
3633 new HttpAuthHandlerMock::Factory()); | 3633 new HttpAuthHandlerMock::Factory()); |
3634 auth_handler_factory->set_do_init_from_challenge(true); | 3634 auth_handler_factory->set_do_init_from_challenge(true); |
3635 scoped_ptr<HttpAuthHandlerMock> mock_handler(new HttpAuthHandlerMock()); | 3635 scoped_ptr<HttpAuthHandlerMock> mock_handler(new HttpAuthHandlerMock()); |
3636 mock_handler->set_allows_default_credentials(true); | 3636 mock_handler->set_allows_default_credentials(true); |
3637 auth_handler_factory->AddMockHandler(mock_handler.release(), | 3637 auth_handler_factory->AddMockHandler(mock_handler.release(), |
3638 HttpAuth::AUTH_PROXY); | 3638 HttpAuth::AUTH_PROXY); |
3639 session_deps_.http_auth_handler_factory = auth_handler_factory.Pass(); | 3639 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); |
3640 | 3640 |
3641 // Add NetLog just so can verify load timing information gets a NetLog ID. | 3641 // Add NetLog just so can verify load timing information gets a NetLog ID. |
3642 NetLog net_log; | 3642 NetLog net_log; |
3643 session_deps_.net_log = &net_log; | 3643 session_deps_.net_log = &net_log; |
3644 scoped_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); | 3644 scoped_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
3645 | 3645 |
3646 // Should try to establish tunnel. | 3646 // Should try to establish tunnel. |
3647 MockWrite data_writes1[] = { | 3647 MockWrite data_writes1[] = { |
3648 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n" | 3648 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n" |
3649 "Host: www.example.org:443\r\n" | 3649 "Host: www.example.org:443\r\n" |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3751 session_deps_.proxy_service = | 3751 session_deps_.proxy_service = |
3752 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"); | 3752 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"); |
3753 | 3753 |
3754 scoped_ptr<HttpAuthHandlerMock::Factory> auth_handler_factory( | 3754 scoped_ptr<HttpAuthHandlerMock::Factory> auth_handler_factory( |
3755 new HttpAuthHandlerMock::Factory()); | 3755 new HttpAuthHandlerMock::Factory()); |
3756 auth_handler_factory->set_do_init_from_challenge(true); | 3756 auth_handler_factory->set_do_init_from_challenge(true); |
3757 scoped_ptr<HttpAuthHandlerMock> mock_handler(new HttpAuthHandlerMock()); | 3757 scoped_ptr<HttpAuthHandlerMock> mock_handler(new HttpAuthHandlerMock()); |
3758 mock_handler->set_allows_default_credentials(true); | 3758 mock_handler->set_allows_default_credentials(true); |
3759 auth_handler_factory->AddMockHandler(mock_handler.release(), | 3759 auth_handler_factory->AddMockHandler(mock_handler.release(), |
3760 HttpAuth::AUTH_PROXY); | 3760 HttpAuth::AUTH_PROXY); |
3761 session_deps_.http_auth_handler_factory = auth_handler_factory.Pass(); | 3761 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); |
3762 | 3762 |
3763 // Add NetLog just so can verify load timing information gets a NetLog ID. | 3763 // Add NetLog just so can verify load timing information gets a NetLog ID. |
3764 NetLog net_log; | 3764 NetLog net_log; |
3765 session_deps_.net_log = &net_log; | 3765 session_deps_.net_log = &net_log; |
3766 scoped_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); | 3766 scoped_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
3767 | 3767 |
3768 // Should try to establish tunnel. | 3768 // Should try to establish tunnel. |
3769 MockWrite data_writes1[] = { | 3769 MockWrite data_writes1[] = { |
3770 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n" | 3770 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n" |
3771 "Host: www.example.org:443\r\n" | 3771 "Host: www.example.org:443\r\n" |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3855 scoped_ptr<HttpAuthHandlerMock> mock_handler(new HttpAuthHandlerMock()); | 3855 scoped_ptr<HttpAuthHandlerMock> mock_handler(new HttpAuthHandlerMock()); |
3856 mock_handler->set_allows_default_credentials(true); | 3856 mock_handler->set_allows_default_credentials(true); |
3857 auth_handler_factory->AddMockHandler(mock_handler.release(), | 3857 auth_handler_factory->AddMockHandler(mock_handler.release(), |
3858 HttpAuth::AUTH_PROXY); | 3858 HttpAuth::AUTH_PROXY); |
3859 // Add another handler for the second challenge. It supports default | 3859 // Add another handler for the second challenge. It supports default |
3860 // credentials, but they shouldn't be used, since they were already tried. | 3860 // credentials, but they shouldn't be used, since they were already tried. |
3861 mock_handler.reset(new HttpAuthHandlerMock()); | 3861 mock_handler.reset(new HttpAuthHandlerMock()); |
3862 mock_handler->set_allows_default_credentials(true); | 3862 mock_handler->set_allows_default_credentials(true); |
3863 auth_handler_factory->AddMockHandler(mock_handler.release(), | 3863 auth_handler_factory->AddMockHandler(mock_handler.release(), |
3864 HttpAuth::AUTH_PROXY); | 3864 HttpAuth::AUTH_PROXY); |
3865 session_deps_.http_auth_handler_factory = auth_handler_factory.Pass(); | 3865 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); |
3866 | 3866 |
3867 // Add NetLog just so can verify load timing information gets a NetLog ID. | 3867 // Add NetLog just so can verify load timing information gets a NetLog ID. |
3868 NetLog net_log; | 3868 NetLog net_log; |
3869 session_deps_.net_log = &net_log; | 3869 session_deps_.net_log = &net_log; |
3870 scoped_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); | 3870 scoped_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
3871 | 3871 |
3872 // Should try to establish tunnel. | 3872 // Should try to establish tunnel. |
3873 MockWrite data_writes1[] = { | 3873 MockWrite data_writes1[] = { |
3874 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n" | 3874 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n" |
3875 "Host: www.example.org:443\r\n" | 3875 "Host: www.example.org:443\r\n" |
(...skipping 4905 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8781 | 8781 |
8782 HttpNetworkSessionPeer peer(session.get()); | 8782 HttpNetworkSessionPeer peer(session.get()); |
8783 CaptureGroupNameTransportSocketPool* transport_conn_pool = | 8783 CaptureGroupNameTransportSocketPool* transport_conn_pool = |
8784 new CaptureGroupNameTransportSocketPool(NULL, NULL); | 8784 new CaptureGroupNameTransportSocketPool(NULL, NULL); |
8785 CaptureGroupNameSSLSocketPool* ssl_conn_pool = | 8785 CaptureGroupNameSSLSocketPool* ssl_conn_pool = |
8786 new CaptureGroupNameSSLSocketPool(NULL, NULL); | 8786 new CaptureGroupNameSSLSocketPool(NULL, NULL); |
8787 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( | 8787 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( |
8788 new MockClientSocketPoolManager); | 8788 new MockClientSocketPoolManager); |
8789 mock_pool_manager->SetTransportSocketPool(transport_conn_pool); | 8789 mock_pool_manager->SetTransportSocketPool(transport_conn_pool); |
8790 mock_pool_manager->SetSSLSocketPool(ssl_conn_pool); | 8790 mock_pool_manager->SetSSLSocketPool(ssl_conn_pool); |
8791 peer.SetClientSocketPoolManager(mock_pool_manager.Pass()); | 8791 peer.SetClientSocketPoolManager(std::move(mock_pool_manager)); |
8792 | 8792 |
8793 EXPECT_EQ(ERR_IO_PENDING, | 8793 EXPECT_EQ(ERR_IO_PENDING, |
8794 GroupNameTransactionHelper(tests[i].url, session.get())); | 8794 GroupNameTransactionHelper(tests[i].url, session.get())); |
8795 if (tests[i].ssl) | 8795 if (tests[i].ssl) |
8796 EXPECT_EQ(tests[i].expected_group_name, | 8796 EXPECT_EQ(tests[i].expected_group_name, |
8797 ssl_conn_pool->last_group_name_received()); | 8797 ssl_conn_pool->last_group_name_received()); |
8798 else | 8798 else |
8799 EXPECT_EQ(tests[i].expected_group_name, | 8799 EXPECT_EQ(tests[i].expected_group_name, |
8800 transport_conn_pool->last_group_name_received()); | 8800 transport_conn_pool->last_group_name_received()); |
8801 } | 8801 } |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8846 HostPortPair proxy_host("http_proxy", 80); | 8846 HostPortPair proxy_host("http_proxy", 80); |
8847 CaptureGroupNameHttpProxySocketPool* http_proxy_pool = | 8847 CaptureGroupNameHttpProxySocketPool* http_proxy_pool = |
8848 new CaptureGroupNameHttpProxySocketPool(NULL, NULL); | 8848 new CaptureGroupNameHttpProxySocketPool(NULL, NULL); |
8849 CaptureGroupNameSSLSocketPool* ssl_conn_pool = | 8849 CaptureGroupNameSSLSocketPool* ssl_conn_pool = |
8850 new CaptureGroupNameSSLSocketPool(NULL, NULL); | 8850 new CaptureGroupNameSSLSocketPool(NULL, NULL); |
8851 | 8851 |
8852 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( | 8852 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( |
8853 new MockClientSocketPoolManager); | 8853 new MockClientSocketPoolManager); |
8854 mock_pool_manager->SetSocketPoolForHTTPProxy(proxy_host, http_proxy_pool); | 8854 mock_pool_manager->SetSocketPoolForHTTPProxy(proxy_host, http_proxy_pool); |
8855 mock_pool_manager->SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool); | 8855 mock_pool_manager->SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool); |
8856 peer.SetClientSocketPoolManager(mock_pool_manager.Pass()); | 8856 peer.SetClientSocketPoolManager(std::move(mock_pool_manager)); |
8857 | 8857 |
8858 EXPECT_EQ(ERR_IO_PENDING, | 8858 EXPECT_EQ(ERR_IO_PENDING, |
8859 GroupNameTransactionHelper(tests[i].url, session.get())); | 8859 GroupNameTransactionHelper(tests[i].url, session.get())); |
8860 if (tests[i].ssl) | 8860 if (tests[i].ssl) |
8861 EXPECT_EQ(tests[i].expected_group_name, | 8861 EXPECT_EQ(tests[i].expected_group_name, |
8862 ssl_conn_pool->last_group_name_received()); | 8862 ssl_conn_pool->last_group_name_received()); |
8863 else | 8863 else |
8864 EXPECT_EQ(tests[i].expected_group_name, | 8864 EXPECT_EQ(tests[i].expected_group_name, |
8865 http_proxy_pool->last_group_name_received()); | 8865 http_proxy_pool->last_group_name_received()); |
8866 } | 8866 } |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8916 HostPortPair proxy_host("socks_proxy", 1080); | 8916 HostPortPair proxy_host("socks_proxy", 1080); |
8917 CaptureGroupNameSOCKSSocketPool* socks_conn_pool = | 8917 CaptureGroupNameSOCKSSocketPool* socks_conn_pool = |
8918 new CaptureGroupNameSOCKSSocketPool(NULL, NULL); | 8918 new CaptureGroupNameSOCKSSocketPool(NULL, NULL); |
8919 CaptureGroupNameSSLSocketPool* ssl_conn_pool = | 8919 CaptureGroupNameSSLSocketPool* ssl_conn_pool = |
8920 new CaptureGroupNameSSLSocketPool(NULL, NULL); | 8920 new CaptureGroupNameSSLSocketPool(NULL, NULL); |
8921 | 8921 |
8922 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( | 8922 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( |
8923 new MockClientSocketPoolManager); | 8923 new MockClientSocketPoolManager); |
8924 mock_pool_manager->SetSocketPoolForSOCKSProxy(proxy_host, socks_conn_pool); | 8924 mock_pool_manager->SetSocketPoolForSOCKSProxy(proxy_host, socks_conn_pool); |
8925 mock_pool_manager->SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool); | 8925 mock_pool_manager->SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool); |
8926 peer.SetClientSocketPoolManager(mock_pool_manager.Pass()); | 8926 peer.SetClientSocketPoolManager(std::move(mock_pool_manager)); |
8927 | 8927 |
8928 scoped_ptr<HttpTransaction> trans( | 8928 scoped_ptr<HttpTransaction> trans( |
8929 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 8929 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
8930 | 8930 |
8931 EXPECT_EQ(ERR_IO_PENDING, | 8931 EXPECT_EQ(ERR_IO_PENDING, |
8932 GroupNameTransactionHelper(tests[i].url, session.get())); | 8932 GroupNameTransactionHelper(tests[i].url, session.get())); |
8933 if (tests[i].ssl) | 8933 if (tests[i].ssl) |
8934 EXPECT_EQ(tests[i].expected_group_name, | 8934 EXPECT_EQ(tests[i].expected_group_name, |
8935 ssl_conn_pool->last_group_name_received()); | 8935 ssl_conn_pool->last_group_name_received()); |
8936 else | 8936 else |
(...skipping 2619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11556 HttpNetworkSessionPeer session_peer(session.get()); | 11556 HttpNetworkSessionPeer session_peer(session.get()); |
11557 TransportClientSocketPool* transport_pool = new TransportClientSocketPool( | 11557 TransportClientSocketPool* transport_pool = new TransportClientSocketPool( |
11558 50, // Max sockets for pool | 11558 50, // Max sockets for pool |
11559 1, // Max sockets per group | 11559 1, // Max sockets per group |
11560 session_deps_.host_resolver.get(), | 11560 session_deps_.host_resolver.get(), |
11561 session_deps_.socket_factory.get(), | 11561 session_deps_.socket_factory.get(), |
11562 session_deps_.net_log); | 11562 session_deps_.net_log); |
11563 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( | 11563 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( |
11564 new MockClientSocketPoolManager); | 11564 new MockClientSocketPoolManager); |
11565 mock_pool_manager->SetTransportSocketPool(transport_pool); | 11565 mock_pool_manager->SetTransportSocketPool(transport_pool); |
11566 session_peer.SetClientSocketPoolManager(mock_pool_manager.Pass()); | 11566 session_peer.SetClientSocketPoolManager(std::move(mock_pool_manager)); |
11567 | 11567 |
11568 scoped_ptr<HttpTransaction> trans( | 11568 scoped_ptr<HttpTransaction> trans( |
11569 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 11569 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
11570 TestCompletionCallback callback; | 11570 TestCompletionCallback callback; |
11571 | 11571 |
11572 const MockWrite kGet( | 11572 const MockWrite kGet( |
11573 "GET / HTTP/1.1\r\n" | 11573 "GET / HTTP/1.1\r\n" |
11574 "Host: www.example.com\r\n" | 11574 "Host: www.example.com\r\n" |
11575 "Connection: keep-alive\r\n\r\n"); | 11575 "Connection: keep-alive\r\n\r\n"); |
11576 const MockWrite kGetAuth( | 11576 const MockWrite kGetAuth( |
(...skipping 3097 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14674 }; | 14674 }; |
14675 | 14675 |
14676 // TODO(yhirano): Split this class out into a net/websockets file, if it is | 14676 // TODO(yhirano): Split this class out into a net/websockets file, if it is |
14677 // worth doing. | 14677 // worth doing. |
14678 class FakeWebSocketStreamCreateHelper : | 14678 class FakeWebSocketStreamCreateHelper : |
14679 public WebSocketHandshakeStreamBase::CreateHelper { | 14679 public WebSocketHandshakeStreamBase::CreateHelper { |
14680 public: | 14680 public: |
14681 WebSocketHandshakeStreamBase* CreateBasicStream( | 14681 WebSocketHandshakeStreamBase* CreateBasicStream( |
14682 scoped_ptr<ClientSocketHandle> connection, | 14682 scoped_ptr<ClientSocketHandle> connection, |
14683 bool using_proxy) override { | 14683 bool using_proxy) override { |
14684 return new FakeWebSocketBasicHandshakeStream(connection.Pass(), | 14684 return new FakeWebSocketBasicHandshakeStream(std::move(connection), |
14685 using_proxy); | 14685 using_proxy); |
14686 } | 14686 } |
14687 | 14687 |
14688 WebSocketHandshakeStreamBase* CreateSpdyStream( | 14688 WebSocketHandshakeStreamBase* CreateSpdyStream( |
14689 const base::WeakPtr<SpdySession>& session, | 14689 const base::WeakPtr<SpdySession>& session, |
14690 bool use_relative_url) override { | 14690 bool use_relative_url) override { |
14691 NOTREACHED(); | 14691 NOTREACHED(); |
14692 return NULL; | 14692 return NULL; |
14693 }; | 14693 }; |
14694 | 14694 |
(...skipping 1101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15796 | 15796 |
15797 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 15797 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
15798 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 15798 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
15799 | 15799 |
15800 EXPECT_THAT(trans.server_ssl_config_.alpn_protos, | 15800 EXPECT_THAT(trans.server_ssl_config_.alpn_protos, |
15801 testing::ElementsAre(kProtoHTTP2, kProtoSPDY31, kProtoHTTP11)); | 15801 testing::ElementsAre(kProtoHTTP2, kProtoSPDY31, kProtoHTTP11)); |
15802 EXPECT_TRUE(trans.server_ssl_config_.npn_protos.empty()); | 15802 EXPECT_TRUE(trans.server_ssl_config_.npn_protos.empty()); |
15803 } | 15803 } |
15804 | 15804 |
15805 } // namespace net | 15805 } // namespace net |
OLD | NEW |