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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 virtual ~MockWebSocketHandshakeStream() {} | 55 virtual ~MockWebSocketHandshakeStream() {} |
56 | 56 |
57 StreamType type() const { | 57 StreamType type() const { |
58 return type_; | 58 return type_; |
59 } | 59 } |
60 | 60 |
61 // HttpStreamBase methods | 61 // HttpStreamBase methods |
62 virtual int InitializeStream(const HttpRequestInfo* request_info, | 62 virtual int InitializeStream(const HttpRequestInfo* request_info, |
63 RequestPriority priority, | 63 RequestPriority priority, |
64 const BoundNetLog& net_log, | 64 const BoundNetLog& net_log, |
65 const CompletionCallback& callback) OVERRIDE { | 65 const CompletionCallback& callback) override { |
66 return ERR_IO_PENDING; | 66 return ERR_IO_PENDING; |
67 } | 67 } |
68 virtual int SendRequest(const HttpRequestHeaders& request_headers, | 68 virtual int SendRequest(const HttpRequestHeaders& request_headers, |
69 HttpResponseInfo* response, | 69 HttpResponseInfo* response, |
70 const CompletionCallback& callback) OVERRIDE { | 70 const CompletionCallback& callback) override { |
71 return ERR_IO_PENDING; | 71 return ERR_IO_PENDING; |
72 } | 72 } |
73 virtual int ReadResponseHeaders(const CompletionCallback& callback) OVERRIDE { | 73 virtual int ReadResponseHeaders(const CompletionCallback& callback) override { |
74 return ERR_IO_PENDING; | 74 return ERR_IO_PENDING; |
75 } | 75 } |
76 virtual int ReadResponseBody(IOBuffer* buf, | 76 virtual int ReadResponseBody(IOBuffer* buf, |
77 int buf_len, | 77 int buf_len, |
78 const CompletionCallback& callback) OVERRIDE { | 78 const CompletionCallback& callback) override { |
79 return ERR_IO_PENDING; | 79 return ERR_IO_PENDING; |
80 } | 80 } |
81 virtual void Close(bool not_reusable) OVERRIDE {} | 81 virtual void Close(bool not_reusable) override {} |
82 virtual bool IsResponseBodyComplete() const OVERRIDE { return false; } | 82 virtual bool IsResponseBodyComplete() const override { return false; } |
83 virtual bool CanFindEndOfResponse() const OVERRIDE { return false; } | 83 virtual bool CanFindEndOfResponse() const override { return false; } |
84 virtual bool IsConnectionReused() const OVERRIDE { return false; } | 84 virtual bool IsConnectionReused() const override { return false; } |
85 virtual void SetConnectionReused() OVERRIDE {} | 85 virtual void SetConnectionReused() override {} |
86 virtual bool IsConnectionReusable() const OVERRIDE { return false; } | 86 virtual bool IsConnectionReusable() const override { return false; } |
87 virtual int64 GetTotalReceivedBytes() const OVERRIDE { return 0; } | 87 virtual int64 GetTotalReceivedBytes() const override { return 0; } |
88 virtual bool GetLoadTimingInfo(LoadTimingInfo* load_timing_info) const | 88 virtual bool GetLoadTimingInfo(LoadTimingInfo* load_timing_info) const |
89 OVERRIDE { | 89 override { |
90 return false; | 90 return false; |
91 } | 91 } |
92 virtual void GetSSLInfo(SSLInfo* ssl_info) OVERRIDE {} | 92 virtual void GetSSLInfo(SSLInfo* ssl_info) override {} |
93 virtual void GetSSLCertRequestInfo( | 93 virtual void GetSSLCertRequestInfo( |
94 SSLCertRequestInfo* cert_request_info) OVERRIDE {} | 94 SSLCertRequestInfo* cert_request_info) override {} |
95 virtual bool IsSpdyHttpStream() const OVERRIDE { return false; } | 95 virtual bool IsSpdyHttpStream() const override { return false; } |
96 virtual void Drain(HttpNetworkSession* session) OVERRIDE {} | 96 virtual void Drain(HttpNetworkSession* session) override {} |
97 virtual void SetPriority(RequestPriority priority) OVERRIDE {} | 97 virtual void SetPriority(RequestPriority priority) override {} |
98 | 98 |
99 virtual scoped_ptr<WebSocketStream> Upgrade() OVERRIDE { | 99 virtual scoped_ptr<WebSocketStream> Upgrade() override { |
100 return scoped_ptr<WebSocketStream>(); | 100 return scoped_ptr<WebSocketStream>(); |
101 } | 101 } |
102 | 102 |
103 private: | 103 private: |
104 const StreamType type_; | 104 const StreamType type_; |
105 }; | 105 }; |
106 | 106 |
107 // HttpStreamFactoryImpl subclass that can wait until a preconnect is complete. | 107 // HttpStreamFactoryImpl subclass that can wait until a preconnect is complete. |
108 class MockHttpStreamFactoryImplForPreconnect : public HttpStreamFactoryImpl { | 108 class MockHttpStreamFactoryImplForPreconnect : public HttpStreamFactoryImpl { |
109 public: | 109 public: |
110 MockHttpStreamFactoryImplForPreconnect(HttpNetworkSession* session, | 110 MockHttpStreamFactoryImplForPreconnect(HttpNetworkSession* session, |
111 bool for_websockets) | 111 bool for_websockets) |
112 : HttpStreamFactoryImpl(session, for_websockets), | 112 : HttpStreamFactoryImpl(session, for_websockets), |
113 preconnect_done_(false), | 113 preconnect_done_(false), |
114 waiting_for_preconnect_(false) {} | 114 waiting_for_preconnect_(false) {} |
115 | 115 |
116 | 116 |
117 void WaitForPreconnects() { | 117 void WaitForPreconnects() { |
118 while (!preconnect_done_) { | 118 while (!preconnect_done_) { |
119 waiting_for_preconnect_ = true; | 119 waiting_for_preconnect_ = true; |
120 base::MessageLoop::current()->Run(); | 120 base::MessageLoop::current()->Run(); |
121 waiting_for_preconnect_ = false; | 121 waiting_for_preconnect_ = false; |
122 } | 122 } |
123 } | 123 } |
124 | 124 |
125 private: | 125 private: |
126 // HttpStreamFactoryImpl methods. | 126 // HttpStreamFactoryImpl methods. |
127 virtual void OnPreconnectsCompleteInternal() OVERRIDE { | 127 virtual void OnPreconnectsCompleteInternal() override { |
128 preconnect_done_ = true; | 128 preconnect_done_ = true; |
129 if (waiting_for_preconnect_) | 129 if (waiting_for_preconnect_) |
130 base::MessageLoop::current()->Quit(); | 130 base::MessageLoop::current()->Quit(); |
131 } | 131 } |
132 | 132 |
133 bool preconnect_done_; | 133 bool preconnect_done_; |
134 bool waiting_for_preconnect_; | 134 bool waiting_for_preconnect_; |
135 }; | 135 }; |
136 | 136 |
137 class StreamRequestWaiter : public HttpStreamRequest::Delegate { | 137 class StreamRequestWaiter : public HttpStreamRequest::Delegate { |
138 public: | 138 public: |
139 StreamRequestWaiter() | 139 StreamRequestWaiter() |
140 : waiting_for_stream_(false), | 140 : waiting_for_stream_(false), |
141 stream_done_(false) {} | 141 stream_done_(false) {} |
142 | 142 |
143 // HttpStreamRequest::Delegate | 143 // HttpStreamRequest::Delegate |
144 | 144 |
145 virtual void OnStreamReady( | 145 virtual void OnStreamReady( |
146 const SSLConfig& used_ssl_config, | 146 const SSLConfig& used_ssl_config, |
147 const ProxyInfo& used_proxy_info, | 147 const ProxyInfo& used_proxy_info, |
148 HttpStreamBase* stream) OVERRIDE { | 148 HttpStreamBase* stream) override { |
149 stream_done_ = true; | 149 stream_done_ = true; |
150 if (waiting_for_stream_) | 150 if (waiting_for_stream_) |
151 base::MessageLoop::current()->Quit(); | 151 base::MessageLoop::current()->Quit(); |
152 stream_.reset(stream); | 152 stream_.reset(stream); |
153 used_ssl_config_ = used_ssl_config; | 153 used_ssl_config_ = used_ssl_config; |
154 used_proxy_info_ = used_proxy_info; | 154 used_proxy_info_ = used_proxy_info; |
155 } | 155 } |
156 | 156 |
157 virtual void OnWebSocketHandshakeStreamReady( | 157 virtual void OnWebSocketHandshakeStreamReady( |
158 const SSLConfig& used_ssl_config, | 158 const SSLConfig& used_ssl_config, |
159 const ProxyInfo& used_proxy_info, | 159 const ProxyInfo& used_proxy_info, |
160 WebSocketHandshakeStreamBase* stream) OVERRIDE { | 160 WebSocketHandshakeStreamBase* stream) override { |
161 stream_done_ = true; | 161 stream_done_ = true; |
162 if (waiting_for_stream_) | 162 if (waiting_for_stream_) |
163 base::MessageLoop::current()->Quit(); | 163 base::MessageLoop::current()->Quit(); |
164 websocket_stream_.reset(stream); | 164 websocket_stream_.reset(stream); |
165 used_ssl_config_ = used_ssl_config; | 165 used_ssl_config_ = used_ssl_config; |
166 used_proxy_info_ = used_proxy_info; | 166 used_proxy_info_ = used_proxy_info; |
167 } | 167 } |
168 | 168 |
169 virtual void OnStreamFailed( | 169 virtual void OnStreamFailed( |
170 int status, | 170 int status, |
171 const SSLConfig& used_ssl_config) OVERRIDE {} | 171 const SSLConfig& used_ssl_config) override {} |
172 | 172 |
173 virtual void OnCertificateError( | 173 virtual void OnCertificateError( |
174 int status, | 174 int status, |
175 const SSLConfig& used_ssl_config, | 175 const SSLConfig& used_ssl_config, |
176 const SSLInfo& ssl_info) OVERRIDE {} | 176 const SSLInfo& ssl_info) override {} |
177 | 177 |
178 virtual void OnNeedsProxyAuth(const HttpResponseInfo& proxy_response, | 178 virtual void OnNeedsProxyAuth(const HttpResponseInfo& proxy_response, |
179 const SSLConfig& used_ssl_config, | 179 const SSLConfig& used_ssl_config, |
180 const ProxyInfo& used_proxy_info, | 180 const ProxyInfo& used_proxy_info, |
181 HttpAuthController* auth_controller) OVERRIDE {} | 181 HttpAuthController* auth_controller) override {} |
182 | 182 |
183 virtual void OnNeedsClientAuth(const SSLConfig& used_ssl_config, | 183 virtual void OnNeedsClientAuth(const SSLConfig& used_ssl_config, |
184 SSLCertRequestInfo* cert_info) OVERRIDE {} | 184 SSLCertRequestInfo* cert_info) override {} |
185 | 185 |
186 virtual void OnHttpsProxyTunnelResponse(const HttpResponseInfo& response_info, | 186 virtual void OnHttpsProxyTunnelResponse(const HttpResponseInfo& response_info, |
187 const SSLConfig& used_ssl_config, | 187 const SSLConfig& used_ssl_config, |
188 const ProxyInfo& used_proxy_info, | 188 const ProxyInfo& used_proxy_info, |
189 HttpStreamBase* stream) OVERRIDE {} | 189 HttpStreamBase* stream) override {} |
190 | 190 |
191 void WaitForStream() { | 191 void WaitForStream() { |
192 while (!stream_done_) { | 192 while (!stream_done_) { |
193 waiting_for_stream_ = true; | 193 waiting_for_stream_ = true; |
194 base::MessageLoop::current()->Run(); | 194 base::MessageLoop::current()->Run(); |
195 waiting_for_stream_ = false; | 195 waiting_for_stream_ = false; |
196 } | 196 } |
197 } | 197 } |
198 | 198 |
199 const SSLConfig& used_ssl_config() const { | 199 const SSLConfig& used_ssl_config() const { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 scoped_ptr<ClientSocketHandle> connection_; | 257 scoped_ptr<ClientSocketHandle> connection_; |
258 }; | 258 }; |
259 | 259 |
260 class WebSocketStreamCreateHelper | 260 class WebSocketStreamCreateHelper |
261 : public WebSocketHandshakeStreamBase::CreateHelper { | 261 : public WebSocketHandshakeStreamBase::CreateHelper { |
262 public: | 262 public: |
263 virtual ~WebSocketStreamCreateHelper() {} | 263 virtual ~WebSocketStreamCreateHelper() {} |
264 | 264 |
265 virtual WebSocketHandshakeStreamBase* CreateBasicStream( | 265 virtual WebSocketHandshakeStreamBase* CreateBasicStream( |
266 scoped_ptr<ClientSocketHandle> connection, | 266 scoped_ptr<ClientSocketHandle> connection, |
267 bool using_proxy) OVERRIDE { | 267 bool using_proxy) override { |
268 return new WebSocketBasicHandshakeStream(connection.Pass()); | 268 return new WebSocketBasicHandshakeStream(connection.Pass()); |
269 } | 269 } |
270 | 270 |
271 virtual WebSocketHandshakeStreamBase* CreateSpdyStream( | 271 virtual WebSocketHandshakeStreamBase* CreateSpdyStream( |
272 const base::WeakPtr<SpdySession>& spdy_session, | 272 const base::WeakPtr<SpdySession>& spdy_session, |
273 bool use_relative_url) OVERRIDE { | 273 bool use_relative_url) override { |
274 return new WebSocketSpdyHandshakeStream(spdy_session); | 274 return new WebSocketSpdyHandshakeStream(spdy_session); |
275 } | 275 } |
276 }; | 276 }; |
277 | 277 |
278 struct TestCase { | 278 struct TestCase { |
279 int num_streams; | 279 int num_streams; |
280 bool ssl; | 280 bool ssl; |
281 }; | 281 }; |
282 | 282 |
283 TestCase kTests[] = { | 283 TestCase kTests[] = { |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 | 322 |
323 int last_num_streams() const { | 323 int last_num_streams() const { |
324 return last_num_streams_; | 324 return last_num_streams_; |
325 } | 325 } |
326 | 326 |
327 virtual int RequestSocket(const std::string& group_name, | 327 virtual int RequestSocket(const std::string& group_name, |
328 const void* socket_params, | 328 const void* socket_params, |
329 RequestPriority priority, | 329 RequestPriority priority, |
330 ClientSocketHandle* handle, | 330 ClientSocketHandle* handle, |
331 const CompletionCallback& callback, | 331 const CompletionCallback& callback, |
332 const BoundNetLog& net_log) OVERRIDE { | 332 const BoundNetLog& net_log) override { |
333 ADD_FAILURE(); | 333 ADD_FAILURE(); |
334 return ERR_UNEXPECTED; | 334 return ERR_UNEXPECTED; |
335 } | 335 } |
336 | 336 |
337 virtual void RequestSockets(const std::string& group_name, | 337 virtual void RequestSockets(const std::string& group_name, |
338 const void* socket_params, | 338 const void* socket_params, |
339 int num_sockets, | 339 int num_sockets, |
340 const BoundNetLog& net_log) OVERRIDE { | 340 const BoundNetLog& net_log) override { |
341 last_num_streams_ = num_sockets; | 341 last_num_streams_ = num_sockets; |
342 } | 342 } |
343 | 343 |
344 virtual void CancelRequest(const std::string& group_name, | 344 virtual void CancelRequest(const std::string& group_name, |
345 ClientSocketHandle* handle) OVERRIDE { | 345 ClientSocketHandle* handle) override { |
346 ADD_FAILURE(); | 346 ADD_FAILURE(); |
347 } | 347 } |
348 virtual void ReleaseSocket(const std::string& group_name, | 348 virtual void ReleaseSocket(const std::string& group_name, |
349 scoped_ptr<StreamSocket> socket, | 349 scoped_ptr<StreamSocket> socket, |
350 int id) OVERRIDE { | 350 int id) override { |
351 ADD_FAILURE(); | 351 ADD_FAILURE(); |
352 } | 352 } |
353 virtual void CloseIdleSockets() OVERRIDE { | 353 virtual void CloseIdleSockets() override { |
354 ADD_FAILURE(); | 354 ADD_FAILURE(); |
355 } | 355 } |
356 virtual int IdleSocketCount() const OVERRIDE { | 356 virtual int IdleSocketCount() const override { |
357 ADD_FAILURE(); | 357 ADD_FAILURE(); |
358 return 0; | 358 return 0; |
359 } | 359 } |
360 virtual int IdleSocketCountInGroup( | 360 virtual int IdleSocketCountInGroup( |
361 const std::string& group_name) const OVERRIDE { | 361 const std::string& group_name) const override { |
362 ADD_FAILURE(); | 362 ADD_FAILURE(); |
363 return 0; | 363 return 0; |
364 } | 364 } |
365 virtual LoadState GetLoadState( | 365 virtual LoadState GetLoadState( |
366 const std::string& group_name, | 366 const std::string& group_name, |
367 const ClientSocketHandle* handle) const OVERRIDE { | 367 const ClientSocketHandle* handle) const override { |
368 ADD_FAILURE(); | 368 ADD_FAILURE(); |
369 return LOAD_STATE_IDLE; | 369 return LOAD_STATE_IDLE; |
370 } | 370 } |
371 virtual base::TimeDelta ConnectionTimeout() const OVERRIDE { | 371 virtual base::TimeDelta ConnectionTimeout() const override { |
372 return base::TimeDelta(); | 372 return base::TimeDelta(); |
373 } | 373 } |
374 | 374 |
375 private: | 375 private: |
376 int last_num_streams_; | 376 int last_num_streams_; |
377 }; | 377 }; |
378 | 378 |
379 typedef CapturePreconnectsSocketPool<TransportClientSocketPool> | 379 typedef CapturePreconnectsSocketPool<TransportClientSocketPool> |
380 CapturePreconnectsTransportSocketPool; | 380 CapturePreconnectsTransportSocketPool; |
381 typedef CapturePreconnectsSocketPool<HttpProxyClientSocketPool> | 381 typedef CapturePreconnectsSocketPool<HttpProxyClientSocketPool> |
(...skipping 926 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1308 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); | 1308 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); |
1309 | 1309 |
1310 // Make sure there is no orphaned job. it is already canceled. | 1310 // Make sure there is no orphaned job. it is already canceled. |
1311 ASSERT_EQ(0u, static_cast<HttpStreamFactoryImpl*>( | 1311 ASSERT_EQ(0u, static_cast<HttpStreamFactoryImpl*>( |
1312 session->http_stream_factory_for_websocket())->num_orphaned_jobs()); | 1312 session->http_stream_factory_for_websocket())->num_orphaned_jobs()); |
1313 } | 1313 } |
1314 | 1314 |
1315 } // namespace | 1315 } // namespace |
1316 | 1316 |
1317 } // namespace net | 1317 } // namespace net |
OLD | NEW |