Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(651)

Side by Side Diff: net/http/http_stream_factory_impl_unittest.cc

Issue 18546008: [SPDY] Use WeakPtr<SpdySession> everywhere but SpdySessionPool (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix test, other minor formatting/comment changes Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 scoped_ptr<HttpStreamBase> stream_; 194 scoped_ptr<HttpStreamBase> stream_;
195 scoped_ptr<WebSocketStreamBase> websocket_stream_; 195 scoped_ptr<WebSocketStreamBase> websocket_stream_;
196 SSLConfig used_ssl_config_; 196 SSLConfig used_ssl_config_;
197 ProxyInfo used_proxy_info_; 197 ProxyInfo used_proxy_info_;
198 198
199 DISALLOW_COPY_AND_ASSIGN(StreamRequestWaiter); 199 DISALLOW_COPY_AND_ASSIGN(StreamRequestWaiter);
200 }; 200 };
201 201
202 class WebSocketSpdyStream : public MockWebSocketStream { 202 class WebSocketSpdyStream : public MockWebSocketStream {
203 public: 203 public:
204 explicit WebSocketSpdyStream(SpdySession* spdy_session) 204 explicit WebSocketSpdyStream(const base::WeakPtr<SpdySession>& spdy_session)
205 : MockWebSocketStream(kStreamTypeSpdy), spdy_session_(spdy_session) {} 205 : MockWebSocketStream(kStreamTypeSpdy), spdy_session_(spdy_session) {}
206 206
207 virtual ~WebSocketSpdyStream() {} 207 virtual ~WebSocketSpdyStream() {}
208 208
209 SpdySession* spdy_session() { return spdy_session_.get(); } 209 SpdySession* spdy_session() { return spdy_session_.get(); }
210 210
211 private: 211 private:
212 scoped_refptr<SpdySession> spdy_session_; 212 base::WeakPtr<SpdySession> spdy_session_;
213 }; 213 };
214 214
215 class WebSocketBasicStream : public MockWebSocketStream { 215 class WebSocketBasicStream : public MockWebSocketStream {
216 public: 216 public:
217 explicit WebSocketBasicStream(ClientSocketHandle* connection) 217 explicit WebSocketBasicStream(ClientSocketHandle* connection)
218 : MockWebSocketStream(kStreamTypeBasic), connection_(connection) {} 218 : MockWebSocketStream(kStreamTypeBasic), connection_(connection) {}
219 219
220 virtual ~WebSocketBasicStream() { 220 virtual ~WebSocketBasicStream() {
221 connection_->socket()->Disconnect(); 221 connection_->socket()->Disconnect();
222 } 222 }
223 223
224 ClientSocketHandle* connection() { return connection_.get(); } 224 ClientSocketHandle* connection() { return connection_.get(); }
225 225
226 private: 226 private:
227 scoped_ptr<ClientSocketHandle> connection_; 227 scoped_ptr<ClientSocketHandle> connection_;
228 }; 228 };
229 229
230 class WebSocketStreamFactory : public WebSocketStreamBase::Factory { 230 class WebSocketStreamFactory : public WebSocketStreamBase::Factory {
231 public: 231 public:
232 virtual ~WebSocketStreamFactory() {} 232 virtual ~WebSocketStreamFactory() {}
233 233
234 virtual WebSocketStreamBase* CreateBasicStream(ClientSocketHandle* connection, 234 virtual WebSocketStreamBase* CreateBasicStream(ClientSocketHandle* connection,
235 bool using_proxy) OVERRIDE { 235 bool using_proxy) OVERRIDE {
236 return new WebSocketBasicStream(connection); 236 return new WebSocketBasicStream(connection);
237 } 237 }
238 238
239 virtual WebSocketStreamBase* CreateSpdyStream( 239 virtual WebSocketStreamBase* CreateSpdyStream(
240 SpdySession* spdy_session, 240 const base::WeakPtr<SpdySession>& spdy_session,
241 bool use_relative_url) OVERRIDE { 241 bool use_relative_url) OVERRIDE {
242 return new WebSocketSpdyStream(spdy_session); 242 return new WebSocketSpdyStream(spdy_session);
243 } 243 }
244 }; 244 };
245 245
246 struct TestCase { 246 struct TestCase {
247 int num_streams; 247 int num_streams;
248 bool ssl; 248 bool ssl;
249 }; 249 };
250 250
(...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after
1015 HttpNetworkSession::WEBSOCKET_SOCKET_POOL, 1015 HttpNetworkSession::WEBSOCKET_SOCKET_POOL,
1016 HostPortPair("myproxy", 8888)))); 1016 HostPortPair("myproxy", 8888))));
1017 EXPECT_FALSE(waiter.used_proxy_info().is_direct()); 1017 EXPECT_FALSE(waiter.used_proxy_info().is_direct());
1018 } 1018 }
1019 1019
1020 TEST_P(HttpStreamFactoryTest, RequestSpdyHttpStream) { 1020 TEST_P(HttpStreamFactoryTest, RequestSpdyHttpStream) {
1021 SpdySessionDependencies session_deps(GetParam(), 1021 SpdySessionDependencies session_deps(GetParam(),
1022 ProxyService::CreateDirect()); 1022 ProxyService::CreateDirect());
1023 1023
1024 MockRead mock_read(ASYNC, OK); 1024 MockRead mock_read(ASYNC, OK);
1025 StaticSocketDataProvider socket_data(&mock_read, 1, NULL, 0); 1025 DeterministicSocketData socket_data(&mock_read, 1, NULL, 0);
1026 socket_data.set_connect_data(MockConnect(ASYNC, OK)); 1026 socket_data.set_connect_data(MockConnect(ASYNC, OK));
1027 session_deps.socket_factory->AddSocketDataProvider(&socket_data); 1027 session_deps.deterministic_socket_factory->AddSocketDataProvider(
1028 &socket_data);
1028 1029
1029 SSLSocketDataProvider ssl_socket_data(ASYNC, OK); 1030 SSLSocketDataProvider ssl_socket_data(ASYNC, OK);
1030 ssl_socket_data.SetNextProto(GetParam()); 1031 ssl_socket_data.SetNextProto(GetParam());
1031 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data); 1032 session_deps.deterministic_socket_factory->AddSSLSocketDataProvider(
1033 &ssl_socket_data);
1032 1034
1033 HostPortPair host_port_pair("www.google.com", 443); 1035 HostPortPair host_port_pair("www.google.com", 443);
1034 scoped_refptr<HttpNetworkSession> 1036 scoped_refptr<HttpNetworkSession>
1035 session(SpdySessionDependencies::SpdyCreateSession(&session_deps)); 1037 session(SpdySessionDependencies::SpdyCreateSessionDeterministic(
1038 &session_deps));
1036 1039
1037 // Now request a stream. 1040 // Now request a stream.
1038 HttpRequestInfo request_info; 1041 HttpRequestInfo request_info;
1039 request_info.method = "GET"; 1042 request_info.method = "GET";
1040 request_info.url = GURL("https://www.google.com"); 1043 request_info.url = GURL("https://www.google.com");
1041 request_info.load_flags = 0; 1044 request_info.load_flags = 0;
1042 1045
1043 SSLConfig ssl_config; 1046 SSLConfig ssl_config;
1044 StreamRequestWaiter waiter; 1047 StreamRequestWaiter waiter;
1045 scoped_ptr<HttpStreamRequest> request( 1048 scoped_ptr<HttpStreamRequest> request(
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
1142 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 1145 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
1143 EXPECT_TRUE(waiter1.used_proxy_info().is_direct()); 1146 EXPECT_TRUE(waiter1.used_proxy_info().is_direct());
1144 } 1147 }
1145 1148
1146 TEST_P(HttpStreamFactoryTest, OrphanedWebSocketStream) { 1149 TEST_P(HttpStreamFactoryTest, OrphanedWebSocketStream) {
1147 UseAlternateProtocolsScopedSetter use_alternate_protocols(true); 1150 UseAlternateProtocolsScopedSetter use_alternate_protocols(true);
1148 SpdySessionDependencies session_deps(GetParam(), 1151 SpdySessionDependencies session_deps(GetParam(),
1149 ProxyService::CreateDirect()); 1152 ProxyService::CreateDirect());
1150 1153
1151 MockRead mock_read(ASYNC, OK); 1154 MockRead mock_read(ASYNC, OK);
1152 StaticSocketDataProvider socket_data(&mock_read, 1, NULL, 0); 1155 DeterministicSocketData socket_data(&mock_read, 1, NULL, 0);
1153 socket_data.set_connect_data(MockConnect(ASYNC, OK)); 1156 socket_data.set_connect_data(MockConnect(ASYNC, OK));
1154 session_deps.socket_factory->AddSocketDataProvider(&socket_data); 1157 session_deps.deterministic_socket_factory->AddSocketDataProvider(
1158 &socket_data);
1155 1159
1156 MockRead mock_read2(ASYNC, OK); 1160 MockRead mock_read2(ASYNC, OK);
1157 StaticSocketDataProvider socket_data2(&mock_read2, 1, NULL, 0); 1161 DeterministicSocketData socket_data2(&mock_read2, 1, NULL, 0);
1158 socket_data2.set_connect_data(MockConnect(ASYNC, ERR_IO_PENDING)); 1162 socket_data2.set_connect_data(MockConnect(ASYNC, ERR_IO_PENDING));
1159 session_deps.socket_factory->AddSocketDataProvider(&socket_data2); 1163 session_deps.deterministic_socket_factory->AddSocketDataProvider(
1164 &socket_data2);
1160 1165
1161 SSLSocketDataProvider ssl_socket_data(ASYNC, OK); 1166 SSLSocketDataProvider ssl_socket_data(ASYNC, OK);
1162 ssl_socket_data.SetNextProto(GetParam()); 1167 ssl_socket_data.SetNextProto(GetParam());
1163 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data); 1168 session_deps.deterministic_socket_factory->AddSSLSocketDataProvider(
1169 &ssl_socket_data);
1164 1170
1165 scoped_refptr<HttpNetworkSession> 1171 scoped_refptr<HttpNetworkSession>
1166 session(SpdySessionDependencies::SpdyCreateSession(&session_deps)); 1172 session(SpdySessionDependencies::SpdyCreateSessionDeterministic(
1173 &session_deps));
1167 1174
1168 // Now request a stream. 1175 // Now request a stream.
1169 HttpRequestInfo request_info; 1176 HttpRequestInfo request_info;
1170 request_info.method = "GET"; 1177 request_info.method = "GET";
1171 request_info.url = GURL("ws://www.google.com:8888"); 1178 request_info.url = GURL("ws://www.google.com:8888");
1172 request_info.load_flags = 0; 1179 request_info.load_flags = 0;
1173 1180
1174 session->http_server_properties()->SetAlternateProtocol( 1181 session->http_server_properties()->SetAlternateProtocol(
1175 HostPortPair("www.google.com", 8888), 1182 HostPortPair("www.google.com", 8888),
1176 9999, 1183 9999,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1209 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); 1216 EXPECT_TRUE(waiter.used_proxy_info().is_direct());
1210 1217
1211 // Make sure there is no orphaned job. it is already canceled. 1218 // Make sure there is no orphaned job. it is already canceled.
1212 ASSERT_EQ(0u, static_cast<HttpStreamFactoryImpl*>( 1219 ASSERT_EQ(0u, static_cast<HttpStreamFactoryImpl*>(
1213 session->websocket_stream_factory())->num_orphaned_jobs()); 1220 session->websocket_stream_factory())->num_orphaned_jobs());
1214 } 1221 }
1215 1222
1216 } // namespace 1223 } // namespace
1217 1224
1218 } // namespace net 1225 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_stream_factory_impl_request.cc ('k') | net/socket/ssl_client_socket_pool_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698