| 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 <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 int ReadResponseHeaders(const CompletionCallback& callback) override { | 74 int ReadResponseHeaders(const CompletionCallback& callback) override { |
| 75 return ERR_IO_PENDING; | 75 return ERR_IO_PENDING; |
| 76 } | 76 } |
| 77 int ReadResponseBody(IOBuffer* buf, | 77 int ReadResponseBody(IOBuffer* buf, |
| 78 int buf_len, | 78 int buf_len, |
| 79 const CompletionCallback& callback) override { | 79 const CompletionCallback& callback) override { |
| 80 return ERR_IO_PENDING; | 80 return ERR_IO_PENDING; |
| 81 } | 81 } |
| 82 void Close(bool not_reusable) override {} | 82 void Close(bool not_reusable) override {} |
| 83 bool IsResponseBodyComplete() const override { return false; } | 83 bool IsResponseBodyComplete() const override { return false; } |
| 84 bool CanFindEndOfResponse() const override { return false; } | |
| 85 bool IsConnectionReused() const override { return false; } | 84 bool IsConnectionReused() const override { return false; } |
| 86 void SetConnectionReused() override {} | 85 void SetConnectionReused() override {} |
| 87 bool IsConnectionReusable() const override { return false; } | 86 bool CanReuseConnection() const override { return false; } |
| 88 int64 GetTotalReceivedBytes() const override { return 0; } | 87 int64 GetTotalReceivedBytes() const override { return 0; } |
| 89 bool GetLoadTimingInfo(LoadTimingInfo* load_timing_info) const override { | 88 bool GetLoadTimingInfo(LoadTimingInfo* load_timing_info) const override { |
| 90 return false; | 89 return false; |
| 91 } | 90 } |
| 92 void GetSSLInfo(SSLInfo* ssl_info) override {} | 91 void GetSSLInfo(SSLInfo* ssl_info) override {} |
| 93 void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info) override {} | 92 void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info) override {} |
| 94 bool IsSpdyHttpStream() const override { return false; } | |
| 95 void Drain(HttpNetworkSession* session) override {} | 93 void Drain(HttpNetworkSession* session) override {} |
| 96 void SetPriority(RequestPriority priority) override {} | 94 void SetPriority(RequestPriority priority) override {} |
| 97 UploadProgress GetUploadProgress() const override { return UploadProgress(); } | 95 UploadProgress GetUploadProgress() const override { return UploadProgress(); } |
| 98 HttpStream* RenewStreamForAuth() override { return nullptr; } | 96 HttpStream* RenewStreamForAuth() override { return nullptr; } |
| 99 | 97 |
| 100 scoped_ptr<WebSocketStream> Upgrade() override { | 98 scoped_ptr<WebSocketStream> Upgrade() override { |
| 101 return scoped_ptr<WebSocketStream>(); | 99 return scoped_ptr<WebSocketStream>(); |
| 102 } | 100 } |
| 103 | 101 |
| 104 private: | 102 private: |
| (...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 771 waiter.WaitForStream(); | 769 waiter.WaitForStream(); |
| 772 | 770 |
| 773 // The stream shouldn't come from spdy as we are using different privacy mode | 771 // The stream shouldn't come from spdy as we are using different privacy mode |
| 774 EXPECT_FALSE(request->using_spdy()); | 772 EXPECT_FALSE(request->using_spdy()); |
| 775 | 773 |
| 776 SSLConfig used_ssl_config = waiter.used_ssl_config(); | 774 SSLConfig used_ssl_config = waiter.used_ssl_config(); |
| 777 EXPECT_EQ(used_ssl_config.channel_id_enabled, ssl_config.channel_id_enabled); | 775 EXPECT_EQ(used_ssl_config.channel_id_enabled, ssl_config.channel_id_enabled); |
| 778 } | 776 } |
| 779 | 777 |
| 780 namespace { | 778 namespace { |
| 779 |
| 781 // Return count of distinct groups in given socket pool. | 780 // Return count of distinct groups in given socket pool. |
| 782 int GetSocketPoolGroupCount(ClientSocketPool* pool) { | 781 int GetSocketPoolGroupCount(ClientSocketPool* pool) { |
| 783 int count = 0; | 782 int count = 0; |
| 784 scoped_ptr<base::DictionaryValue> dict(pool->GetInfoAsValue("", "", false)); | 783 scoped_ptr<base::DictionaryValue> dict(pool->GetInfoAsValue("", "", false)); |
| 785 EXPECT_TRUE(dict != nullptr); | 784 EXPECT_TRUE(dict != nullptr); |
| 786 base::DictionaryValue* groups = nullptr; | 785 base::DictionaryValue* groups = nullptr; |
| 787 if (dict->GetDictionary("groups", &groups) && (groups != nullptr)) { | 786 if (dict->GetDictionary("groups", &groups) && (groups != nullptr)) { |
| 788 count = static_cast<int>(groups->size()); | 787 count = static_cast<int>(groups->size()); |
| 789 } | 788 } |
| 790 return count; | 789 return count; |
| 791 } | 790 } |
| 791 |
| 792 // Return count of distinct spdy sessions. |
| 793 int GetSpdySessionCount(HttpNetworkSession* session) { |
| 794 scoped_ptr<base::Value> value( |
| 795 session->spdy_session_pool()->SpdySessionPoolInfoToValue()); |
| 796 base::ListValue* session_list; |
| 797 if (!value || !value->GetAsList(&session_list)) |
| 798 return -1; |
| 799 return session_list->GetSize(); |
| 800 } |
| 801 |
| 792 } // namespace | 802 } // namespace |
| 793 | 803 |
| 794 TEST_P(HttpStreamFactoryTest, PrivacyModeUsesDifferentSocketPoolGroup) { | 804 TEST_P(HttpStreamFactoryTest, PrivacyModeUsesDifferentSocketPoolGroup) { |
| 795 SpdySessionDependencies session_deps( | 805 SpdySessionDependencies session_deps( |
| 796 GetParam(), ProxyService::CreateDirect()); | 806 GetParam(), ProxyService::CreateDirect()); |
| 797 | 807 |
| 798 StaticSocketDataProvider socket_data; | 808 StaticSocketDataProvider socket_data; |
| 799 socket_data.set_connect_data(MockConnect(ASYNC, OK)); | 809 socket_data.set_connect_data(MockConnect(ASYNC, OK)); |
| 800 session_deps.socket_factory->AddSocketDataProvider(&socket_data); | 810 session_deps.socket_factory->AddSocketDataProvider(&socket_data); |
| 801 | 811 |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 896 request_info, | 906 request_info, |
| 897 DEFAULT_PRIORITY, | 907 DEFAULT_PRIORITY, |
| 898 ssl_config, | 908 ssl_config, |
| 899 ssl_config, | 909 ssl_config, |
| 900 &waiter, | 910 &waiter, |
| 901 BoundNetLog())); | 911 BoundNetLog())); |
| 902 waiter.WaitForStream(); | 912 waiter.WaitForStream(); |
| 903 EXPECT_TRUE(waiter.stream_done()); | 913 EXPECT_TRUE(waiter.stream_done()); |
| 904 ASSERT_TRUE(nullptr != waiter.stream()); | 914 ASSERT_TRUE(nullptr != waiter.stream()); |
| 905 EXPECT_TRUE(nullptr == waiter.websocket_stream()); | 915 EXPECT_TRUE(nullptr == waiter.websocket_stream()); |
| 906 EXPECT_FALSE(waiter.stream()->IsSpdyHttpStream()); | |
| 907 | 916 |
| 917 EXPECT_EQ(0, GetSpdySessionCount(session.get())); |
| 908 EXPECT_EQ(1, GetSocketPoolGroupCount( | 918 EXPECT_EQ(1, GetSocketPoolGroupCount( |
| 909 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); | 919 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); |
| 910 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( | 920 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( |
| 911 HttpNetworkSession::NORMAL_SOCKET_POOL))); | 921 HttpNetworkSession::NORMAL_SOCKET_POOL))); |
| 912 EXPECT_EQ(0, GetSocketPoolGroupCount( | 922 EXPECT_EQ(0, GetSocketPoolGroupCount( |
| 913 session->GetTransportSocketPool( | 923 session->GetTransportSocketPool( |
| 914 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 924 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 915 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( | 925 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( |
| 916 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 926 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 917 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); | 927 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 945 request_info, | 955 request_info, |
| 946 DEFAULT_PRIORITY, | 956 DEFAULT_PRIORITY, |
| 947 ssl_config, | 957 ssl_config, |
| 948 ssl_config, | 958 ssl_config, |
| 949 &waiter, | 959 &waiter, |
| 950 BoundNetLog())); | 960 BoundNetLog())); |
| 951 waiter.WaitForStream(); | 961 waiter.WaitForStream(); |
| 952 EXPECT_TRUE(waiter.stream_done()); | 962 EXPECT_TRUE(waiter.stream_done()); |
| 953 ASSERT_TRUE(nullptr != waiter.stream()); | 963 ASSERT_TRUE(nullptr != waiter.stream()); |
| 954 EXPECT_TRUE(nullptr == waiter.websocket_stream()); | 964 EXPECT_TRUE(nullptr == waiter.websocket_stream()); |
| 955 EXPECT_FALSE(waiter.stream()->IsSpdyHttpStream()); | 965 |
| 966 EXPECT_EQ(0, GetSpdySessionCount(session.get())); |
| 956 EXPECT_EQ(1, GetSocketPoolGroupCount( | 967 EXPECT_EQ(1, GetSocketPoolGroupCount( |
| 957 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); | 968 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); |
| 958 EXPECT_EQ(1, GetSocketPoolGroupCount( | 969 EXPECT_EQ(1, GetSocketPoolGroupCount( |
| 959 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); | 970 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); |
| 960 EXPECT_EQ(0, GetSocketPoolGroupCount( | 971 EXPECT_EQ(0, GetSocketPoolGroupCount( |
| 961 session->GetTransportSocketPool( | 972 session->GetTransportSocketPool( |
| 962 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 973 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 963 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( | 974 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( |
| 964 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 975 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 965 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); | 976 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 990 request_info, | 1001 request_info, |
| 991 DEFAULT_PRIORITY, | 1002 DEFAULT_PRIORITY, |
| 992 ssl_config, | 1003 ssl_config, |
| 993 ssl_config, | 1004 ssl_config, |
| 994 &waiter, | 1005 &waiter, |
| 995 BoundNetLog())); | 1006 BoundNetLog())); |
| 996 waiter.WaitForStream(); | 1007 waiter.WaitForStream(); |
| 997 EXPECT_TRUE(waiter.stream_done()); | 1008 EXPECT_TRUE(waiter.stream_done()); |
| 998 ASSERT_TRUE(nullptr != waiter.stream()); | 1009 ASSERT_TRUE(nullptr != waiter.stream()); |
| 999 EXPECT_TRUE(nullptr == waiter.websocket_stream()); | 1010 EXPECT_TRUE(nullptr == waiter.websocket_stream()); |
| 1000 EXPECT_FALSE(waiter.stream()->IsSpdyHttpStream()); | 1011 |
| 1012 EXPECT_EQ(0, GetSpdySessionCount(session.get())); |
| 1001 EXPECT_EQ(0, GetSocketPoolGroupCount( | 1013 EXPECT_EQ(0, GetSocketPoolGroupCount( |
| 1002 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); | 1014 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); |
| 1003 EXPECT_EQ(0, GetSocketPoolGroupCount( | 1015 EXPECT_EQ(0, GetSocketPoolGroupCount( |
| 1004 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); | 1016 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); |
| 1005 EXPECT_EQ(1, GetSocketPoolGroupCount(session->GetSocketPoolForHTTPProxy( | 1017 EXPECT_EQ(1, GetSocketPoolGroupCount(session->GetSocketPoolForHTTPProxy( |
| 1006 HttpNetworkSession::NORMAL_SOCKET_POOL, | 1018 HttpNetworkSession::NORMAL_SOCKET_POOL, |
| 1007 HostPortPair("myproxy", 8888)))); | 1019 HostPortPair("myproxy", 8888)))); |
| 1008 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy( | 1020 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy( |
| 1009 HttpNetworkSession::NORMAL_SOCKET_POOL, | 1021 HttpNetworkSession::NORMAL_SOCKET_POOL, |
| 1010 HostPortPair("myproxy", 8888)))); | 1022 HostPortPair("myproxy", 8888)))); |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1162 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy( | 1174 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy( |
| 1163 HttpNetworkSession::WEBSOCKET_SOCKET_POOL, | 1175 HttpNetworkSession::WEBSOCKET_SOCKET_POOL, |
| 1164 HostPortPair("myproxy", 8888)))); | 1176 HostPortPair("myproxy", 8888)))); |
| 1165 EXPECT_FALSE(waiter.used_proxy_info().is_direct()); | 1177 EXPECT_FALSE(waiter.used_proxy_info().is_direct()); |
| 1166 } | 1178 } |
| 1167 | 1179 |
| 1168 TEST_P(HttpStreamFactoryTest, RequestSpdyHttpStream) { | 1180 TEST_P(HttpStreamFactoryTest, RequestSpdyHttpStream) { |
| 1169 SpdySessionDependencies session_deps(GetParam(), | 1181 SpdySessionDependencies session_deps(GetParam(), |
| 1170 ProxyService::CreateDirect()); | 1182 ProxyService::CreateDirect()); |
| 1171 | 1183 |
| 1172 MockRead mock_read(ASYNC, OK); | 1184 MockRead mock_read(SYNCHRONOUS, ERR_IO_PENDING); |
| 1173 SequencedSocketData socket_data(&mock_read, 1, nullptr, 0); | 1185 SequencedSocketData socket_data(&mock_read, 1, nullptr, 0); |
| 1174 socket_data.set_connect_data(MockConnect(ASYNC, OK)); | 1186 socket_data.set_connect_data(MockConnect(ASYNC, OK)); |
| 1175 session_deps.socket_factory->AddSocketDataProvider(&socket_data); | 1187 session_deps.socket_factory->AddSocketDataProvider(&socket_data); |
| 1176 | 1188 |
| 1177 SSLSocketDataProvider ssl_socket_data(ASYNC, OK); | 1189 SSLSocketDataProvider ssl_socket_data(ASYNC, OK); |
| 1178 ssl_socket_data.SetNextProto(GetParam()); | 1190 ssl_socket_data.SetNextProto(GetParam()); |
| 1179 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data); | 1191 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data); |
| 1180 | 1192 |
| 1181 HostPortPair host_port_pair("www.google.com", 443); | 1193 HostPortPair host_port_pair("www.google.com", 443); |
| 1182 scoped_refptr<HttpNetworkSession> session( | 1194 scoped_refptr<HttpNetworkSession> session( |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1195 request_info, | 1207 request_info, |
| 1196 DEFAULT_PRIORITY, | 1208 DEFAULT_PRIORITY, |
| 1197 ssl_config, | 1209 ssl_config, |
| 1198 ssl_config, | 1210 ssl_config, |
| 1199 &waiter, | 1211 &waiter, |
| 1200 BoundNetLog())); | 1212 BoundNetLog())); |
| 1201 waiter.WaitForStream(); | 1213 waiter.WaitForStream(); |
| 1202 EXPECT_TRUE(waiter.stream_done()); | 1214 EXPECT_TRUE(waiter.stream_done()); |
| 1203 EXPECT_TRUE(nullptr == waiter.websocket_stream()); | 1215 EXPECT_TRUE(nullptr == waiter.websocket_stream()); |
| 1204 ASSERT_TRUE(nullptr != waiter.stream()); | 1216 ASSERT_TRUE(nullptr != waiter.stream()); |
| 1205 EXPECT_TRUE(waiter.stream()->IsSpdyHttpStream()); | 1217 |
| 1218 EXPECT_EQ(1, GetSpdySessionCount(session.get())); |
| 1206 EXPECT_EQ(1, GetSocketPoolGroupCount( | 1219 EXPECT_EQ(1, GetSocketPoolGroupCount( |
| 1207 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); | 1220 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); |
| 1208 EXPECT_EQ(1, GetSocketPoolGroupCount( | 1221 EXPECT_EQ(1, GetSocketPoolGroupCount( |
| 1209 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); | 1222 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); |
| 1210 EXPECT_EQ(0, GetSocketPoolGroupCount( | 1223 EXPECT_EQ(0, GetSocketPoolGroupCount( |
| 1211 session->GetTransportSocketPool( | 1224 session->GetTransportSocketPool( |
| 1212 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 1225 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 1213 EXPECT_EQ(0, GetSocketPoolGroupCount( | 1226 EXPECT_EQ(0, GetSocketPoolGroupCount( |
| 1214 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); | 1227 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); |
| 1215 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); | 1228 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1412 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); | 1425 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); |
| 1413 | 1426 |
| 1414 // Make sure there is no orphaned job. it is already canceled. | 1427 // Make sure there is no orphaned job. it is already canceled. |
| 1415 ASSERT_EQ(0u, static_cast<HttpStreamFactoryImpl*>( | 1428 ASSERT_EQ(0u, static_cast<HttpStreamFactoryImpl*>( |
| 1416 session->http_stream_factory_for_websocket())->num_orphaned_jobs()); | 1429 session->http_stream_factory_for_websocket())->num_orphaned_jobs()); |
| 1417 } | 1430 } |
| 1418 | 1431 |
| 1419 } // namespace | 1432 } // namespace |
| 1420 | 1433 |
| 1421 } // namespace net | 1434 } // namespace net |
| OLD | NEW |