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_proxy_client_socket_pool.h" | 5 #include "net/http/http_proxy_client_socket_pool.h" |
6 | 6 |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 SSLClientSocketPoolTest() | 80 SSLClientSocketPoolTest() |
81 : transport_security_state_(new TransportSecurityState), | 81 : transport_security_state_(new TransportSecurityState), |
82 proxy_service_(ProxyService::CreateDirect()), | 82 proxy_service_(ProxyService::CreateDirect()), |
83 ssl_config_service_(new SSLConfigServiceDefaults), | 83 ssl_config_service_(new SSLConfigServiceDefaults), |
84 http_auth_handler_factory_( | 84 http_auth_handler_factory_( |
85 HttpAuthHandlerFactory::CreateDefault(&host_resolver_)), | 85 HttpAuthHandlerFactory::CreateDefault(&host_resolver_)), |
86 session_(CreateNetworkSession()), | 86 session_(CreateNetworkSession()), |
87 direct_transport_socket_params_(new TransportSocketParams( | 87 direct_transport_socket_params_(new TransportSocketParams( |
88 HostPortPair("host", 443), | 88 HostPortPair("host", 443), |
89 false, | 89 false, |
90 false, | |
91 OnHostResolutionCallback(), | 90 OnHostResolutionCallback(), |
92 TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT)), | 91 TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT)), |
93 transport_socket_pool_(kMaxSockets, | 92 transport_socket_pool_(kMaxSockets, |
94 kMaxSocketsPerGroup, | 93 kMaxSocketsPerGroup, |
95 &socket_factory_), | 94 &socket_factory_), |
96 proxy_transport_socket_params_(new TransportSocketParams( | 95 proxy_transport_socket_params_(new TransportSocketParams( |
97 HostPortPair("proxy", 443), | 96 HostPortPair("proxy", 443), |
98 false, | 97 false, |
99 false, | |
100 OnHostResolutionCallback(), | 98 OnHostResolutionCallback(), |
101 TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT)), | 99 TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT)), |
102 socks_socket_params_( | 100 socks_socket_params_( |
103 new SOCKSSocketParams(proxy_transport_socket_params_, | 101 new SOCKSSocketParams(proxy_transport_socket_params_, |
104 true, | 102 true, |
105 HostPortPair("sockshost", 443))), | 103 HostPortPair("sockshost", 443))), |
106 socks_socket_pool_(kMaxSockets, | 104 socks_socket_pool_(kMaxSockets, |
107 kMaxSocketsPerGroup, | 105 kMaxSocketsPerGroup, |
108 &transport_socket_pool_), | 106 &transport_socket_pool_), |
109 http_proxy_socket_params_( | 107 http_proxy_socket_params_( |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 TEST_P(SSLClientSocketPoolTest, TCPFail) { | 208 TEST_P(SSLClientSocketPoolTest, TCPFail) { |
211 StaticSocketDataProvider data; | 209 StaticSocketDataProvider data; |
212 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); | 210 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); |
213 socket_factory_.AddSocketDataProvider(&data); | 211 socket_factory_.AddSocketDataProvider(&data); |
214 | 212 |
215 CreatePool(true /* tcp pool */, false, false); | 213 CreatePool(true /* tcp pool */, false, false); |
216 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 214 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
217 false); | 215 false); |
218 | 216 |
219 ClientSocketHandle handle; | 217 ClientSocketHandle handle; |
220 int rv = handle.Init("a", params, MEDIUM, CompletionCallback(), pool_.get(), | 218 int rv = handle.Init("a", params, MEDIUM, false, CompletionCallback(), |
221 BoundNetLog()); | 219 pool_.get(), BoundNetLog()); |
222 EXPECT_EQ(ERR_CONNECTION_FAILED, rv); | 220 EXPECT_EQ(ERR_CONNECTION_FAILED, rv); |
223 EXPECT_FALSE(handle.is_initialized()); | 221 EXPECT_FALSE(handle.is_initialized()); |
224 EXPECT_FALSE(handle.socket()); | 222 EXPECT_FALSE(handle.socket()); |
225 EXPECT_FALSE(handle.is_ssl_error()); | 223 EXPECT_FALSE(handle.is_ssl_error()); |
226 ASSERT_EQ(1u, handle.connection_attempts().size()); | 224 ASSERT_EQ(1u, handle.connection_attempts().size()); |
227 EXPECT_EQ(ERR_CONNECTION_FAILED, handle.connection_attempts()[0].result); | 225 EXPECT_EQ(ERR_CONNECTION_FAILED, handle.connection_attempts()[0].result); |
228 } | 226 } |
229 | 227 |
230 TEST_P(SSLClientSocketPoolTest, TCPFailAsync) { | 228 TEST_P(SSLClientSocketPoolTest, TCPFailAsync) { |
231 StaticSocketDataProvider data; | 229 StaticSocketDataProvider data; |
232 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); | 230 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); |
233 socket_factory_.AddSocketDataProvider(&data); | 231 socket_factory_.AddSocketDataProvider(&data); |
234 | 232 |
235 CreatePool(true /* tcp pool */, false, false); | 233 CreatePool(true /* tcp pool */, false, false); |
236 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 234 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
237 false); | 235 false); |
238 | 236 |
239 ClientSocketHandle handle; | 237 ClientSocketHandle handle; |
240 TestCompletionCallback callback; | 238 TestCompletionCallback callback; |
241 int rv = handle.Init( | 239 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
242 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 240 pool_.get(), BoundNetLog()); |
243 EXPECT_EQ(ERR_IO_PENDING, rv); | 241 EXPECT_EQ(ERR_IO_PENDING, rv); |
244 EXPECT_FALSE(handle.is_initialized()); | 242 EXPECT_FALSE(handle.is_initialized()); |
245 EXPECT_FALSE(handle.socket()); | 243 EXPECT_FALSE(handle.socket()); |
246 | 244 |
247 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult()); | 245 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult()); |
248 EXPECT_FALSE(handle.is_initialized()); | 246 EXPECT_FALSE(handle.is_initialized()); |
249 EXPECT_FALSE(handle.socket()); | 247 EXPECT_FALSE(handle.socket()); |
250 EXPECT_FALSE(handle.is_ssl_error()); | 248 EXPECT_FALSE(handle.is_ssl_error()); |
251 ASSERT_EQ(1u, handle.connection_attempts().size()); | 249 ASSERT_EQ(1u, handle.connection_attempts().size()); |
252 EXPECT_EQ(ERR_CONNECTION_FAILED, handle.connection_attempts()[0].result); | 250 EXPECT_EQ(ERR_CONNECTION_FAILED, handle.connection_attempts()[0].result); |
253 } | 251 } |
254 | 252 |
255 TEST_P(SSLClientSocketPoolTest, BasicDirect) { | 253 TEST_P(SSLClientSocketPoolTest, BasicDirect) { |
256 StaticSocketDataProvider data; | 254 StaticSocketDataProvider data; |
257 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); | 255 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
258 socket_factory_.AddSocketDataProvider(&data); | 256 socket_factory_.AddSocketDataProvider(&data); |
259 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 257 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
260 socket_factory_.AddSSLSocketDataProvider(&ssl); | 258 socket_factory_.AddSSLSocketDataProvider(&ssl); |
261 | 259 |
262 CreatePool(true /* tcp pool */, false, false); | 260 CreatePool(true /* tcp pool */, false, false); |
263 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 261 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
264 false); | 262 false); |
265 | 263 |
266 ClientSocketHandle handle; | 264 ClientSocketHandle handle; |
267 TestCompletionCallback callback; | 265 TestCompletionCallback callback; |
268 int rv = handle.Init( | 266 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
269 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 267 pool_.get(), BoundNetLog()); |
270 EXPECT_EQ(OK, rv); | 268 EXPECT_EQ(OK, rv); |
271 EXPECT_TRUE(handle.is_initialized()); | 269 EXPECT_TRUE(handle.is_initialized()); |
272 EXPECT_TRUE(handle.socket()); | 270 EXPECT_TRUE(handle.socket()); |
273 TestLoadTimingInfo(handle); | 271 TestLoadTimingInfo(handle); |
274 EXPECT_EQ(0u, handle.connection_attempts().size()); | 272 EXPECT_EQ(0u, handle.connection_attempts().size()); |
275 } | 273 } |
276 | 274 |
277 // Make sure that SSLConnectJob passes on its priority to its | 275 // Make sure that SSLConnectJob passes on its priority to its |
278 // socket request on Init (for the DIRECT case). | 276 // socket request on Init (for the DIRECT case). |
279 TEST_P(SSLClientSocketPoolTest, SetSocketRequestPriorityOnInitDirect) { | 277 TEST_P(SSLClientSocketPoolTest, SetSocketRequestPriorityOnInitDirect) { |
280 CreatePool(true /* tcp pool */, false, false); | 278 CreatePool(true /* tcp pool */, false, false); |
281 scoped_refptr<SSLSocketParams> params = | 279 scoped_refptr<SSLSocketParams> params = |
282 SSLParams(ProxyServer::SCHEME_DIRECT, false); | 280 SSLParams(ProxyServer::SCHEME_DIRECT, false); |
283 | 281 |
284 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) { | 282 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) { |
285 RequestPriority priority = static_cast<RequestPriority>(i); | 283 RequestPriority priority = static_cast<RequestPriority>(i); |
286 StaticSocketDataProvider data; | 284 StaticSocketDataProvider data; |
287 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); | 285 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
288 socket_factory_.AddSocketDataProvider(&data); | 286 socket_factory_.AddSocketDataProvider(&data); |
289 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 287 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
290 socket_factory_.AddSSLSocketDataProvider(&ssl); | 288 socket_factory_.AddSSLSocketDataProvider(&ssl); |
291 | 289 |
292 ClientSocketHandle handle; | 290 ClientSocketHandle handle; |
293 TestCompletionCallback callback; | 291 TestCompletionCallback callback; |
294 EXPECT_EQ(OK, handle.Init("a", params, priority, callback.callback(), | 292 EXPECT_EQ(OK, handle.Init("a", params, priority, false, callback.callback(), |
295 pool_.get(), BoundNetLog())); | 293 pool_.get(), BoundNetLog())); |
296 EXPECT_EQ(priority, transport_socket_pool_.last_request_priority()); | 294 EXPECT_EQ(priority, transport_socket_pool_.last_request_priority()); |
297 handle.socket()->Disconnect(); | 295 handle.socket()->Disconnect(); |
298 } | 296 } |
299 } | 297 } |
300 | 298 |
301 TEST_P(SSLClientSocketPoolTest, BasicDirectAsync) { | 299 TEST_P(SSLClientSocketPoolTest, BasicDirectAsync) { |
302 StaticSocketDataProvider data; | 300 StaticSocketDataProvider data; |
303 socket_factory_.AddSocketDataProvider(&data); | 301 socket_factory_.AddSocketDataProvider(&data); |
304 SSLSocketDataProvider ssl(ASYNC, OK); | 302 SSLSocketDataProvider ssl(ASYNC, OK); |
305 socket_factory_.AddSSLSocketDataProvider(&ssl); | 303 socket_factory_.AddSSLSocketDataProvider(&ssl); |
306 | 304 |
307 CreatePool(true /* tcp pool */, false, false); | 305 CreatePool(true /* tcp pool */, false, false); |
308 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 306 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
309 false); | 307 false); |
310 | 308 |
311 ClientSocketHandle handle; | 309 ClientSocketHandle handle; |
312 TestCompletionCallback callback; | 310 TestCompletionCallback callback; |
313 int rv = handle.Init( | 311 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
314 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 312 pool_.get(), BoundNetLog()); |
315 EXPECT_EQ(ERR_IO_PENDING, rv); | 313 EXPECT_EQ(ERR_IO_PENDING, rv); |
316 EXPECT_FALSE(handle.is_initialized()); | 314 EXPECT_FALSE(handle.is_initialized()); |
317 EXPECT_FALSE(handle.socket()); | 315 EXPECT_FALSE(handle.socket()); |
318 | 316 |
319 EXPECT_EQ(OK, callback.WaitForResult()); | 317 EXPECT_EQ(OK, callback.WaitForResult()); |
320 EXPECT_TRUE(handle.is_initialized()); | 318 EXPECT_TRUE(handle.is_initialized()); |
321 EXPECT_TRUE(handle.socket()); | 319 EXPECT_TRUE(handle.socket()); |
322 TestLoadTimingInfo(handle); | 320 TestLoadTimingInfo(handle); |
323 } | 321 } |
324 | 322 |
325 TEST_P(SSLClientSocketPoolTest, DirectCertError) { | 323 TEST_P(SSLClientSocketPoolTest, DirectCertError) { |
326 StaticSocketDataProvider data; | 324 StaticSocketDataProvider data; |
327 socket_factory_.AddSocketDataProvider(&data); | 325 socket_factory_.AddSocketDataProvider(&data); |
328 SSLSocketDataProvider ssl(ASYNC, ERR_CERT_COMMON_NAME_INVALID); | 326 SSLSocketDataProvider ssl(ASYNC, ERR_CERT_COMMON_NAME_INVALID); |
329 socket_factory_.AddSSLSocketDataProvider(&ssl); | 327 socket_factory_.AddSSLSocketDataProvider(&ssl); |
330 | 328 |
331 CreatePool(true /* tcp pool */, false, false); | 329 CreatePool(true /* tcp pool */, false, false); |
332 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 330 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
333 false); | 331 false); |
334 | 332 |
335 ClientSocketHandle handle; | 333 ClientSocketHandle handle; |
336 TestCompletionCallback callback; | 334 TestCompletionCallback callback; |
337 int rv = handle.Init( | 335 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
338 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 336 pool_.get(), BoundNetLog()); |
339 EXPECT_EQ(ERR_IO_PENDING, rv); | 337 EXPECT_EQ(ERR_IO_PENDING, rv); |
340 EXPECT_FALSE(handle.is_initialized()); | 338 EXPECT_FALSE(handle.is_initialized()); |
341 EXPECT_FALSE(handle.socket()); | 339 EXPECT_FALSE(handle.socket()); |
342 | 340 |
343 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, callback.WaitForResult()); | 341 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, callback.WaitForResult()); |
344 EXPECT_TRUE(handle.is_initialized()); | 342 EXPECT_TRUE(handle.is_initialized()); |
345 EXPECT_TRUE(handle.socket()); | 343 EXPECT_TRUE(handle.socket()); |
346 TestLoadTimingInfo(handle); | 344 TestLoadTimingInfo(handle); |
347 } | 345 } |
348 | 346 |
349 TEST_P(SSLClientSocketPoolTest, DirectSSLError) { | 347 TEST_P(SSLClientSocketPoolTest, DirectSSLError) { |
350 StaticSocketDataProvider data; | 348 StaticSocketDataProvider data; |
351 socket_factory_.AddSocketDataProvider(&data); | 349 socket_factory_.AddSocketDataProvider(&data); |
352 SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR); | 350 SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR); |
353 socket_factory_.AddSSLSocketDataProvider(&ssl); | 351 socket_factory_.AddSSLSocketDataProvider(&ssl); |
354 | 352 |
355 CreatePool(true /* tcp pool */, false, false); | 353 CreatePool(true /* tcp pool */, false, false); |
356 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 354 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
357 false); | 355 false); |
358 | 356 |
359 ClientSocketHandle handle; | 357 ClientSocketHandle handle; |
360 TestCompletionCallback callback; | 358 TestCompletionCallback callback; |
361 int rv = handle.Init( | 359 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
362 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 360 pool_.get(), BoundNetLog()); |
363 EXPECT_EQ(ERR_IO_PENDING, rv); | 361 EXPECT_EQ(ERR_IO_PENDING, rv); |
364 EXPECT_FALSE(handle.is_initialized()); | 362 EXPECT_FALSE(handle.is_initialized()); |
365 EXPECT_FALSE(handle.socket()); | 363 EXPECT_FALSE(handle.socket()); |
366 | 364 |
367 EXPECT_EQ(ERR_SSL_PROTOCOL_ERROR, callback.WaitForResult()); | 365 EXPECT_EQ(ERR_SSL_PROTOCOL_ERROR, callback.WaitForResult()); |
368 EXPECT_FALSE(handle.is_initialized()); | 366 EXPECT_FALSE(handle.is_initialized()); |
369 EXPECT_FALSE(handle.socket()); | 367 EXPECT_FALSE(handle.socket()); |
370 EXPECT_TRUE(handle.is_ssl_error()); | 368 EXPECT_TRUE(handle.is_ssl_error()); |
371 } | 369 } |
372 | 370 |
373 TEST_P(SSLClientSocketPoolTest, DirectWithNPN) { | 371 TEST_P(SSLClientSocketPoolTest, DirectWithNPN) { |
374 StaticSocketDataProvider data; | 372 StaticSocketDataProvider data; |
375 socket_factory_.AddSocketDataProvider(&data); | 373 socket_factory_.AddSocketDataProvider(&data); |
376 SSLSocketDataProvider ssl(ASYNC, OK); | 374 SSLSocketDataProvider ssl(ASYNC, OK); |
377 ssl.SetNextProto(kProtoHTTP11); | 375 ssl.SetNextProto(kProtoHTTP11); |
378 socket_factory_.AddSSLSocketDataProvider(&ssl); | 376 socket_factory_.AddSSLSocketDataProvider(&ssl); |
379 | 377 |
380 CreatePool(true /* tcp pool */, false, false); | 378 CreatePool(true /* tcp pool */, false, false); |
381 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 379 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
382 false); | 380 false); |
383 | 381 |
384 ClientSocketHandle handle; | 382 ClientSocketHandle handle; |
385 TestCompletionCallback callback; | 383 TestCompletionCallback callback; |
386 int rv = handle.Init( | 384 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
387 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 385 pool_.get(), BoundNetLog()); |
388 EXPECT_EQ(ERR_IO_PENDING, rv); | 386 EXPECT_EQ(ERR_IO_PENDING, rv); |
389 EXPECT_FALSE(handle.is_initialized()); | 387 EXPECT_FALSE(handle.is_initialized()); |
390 EXPECT_FALSE(handle.socket()); | 388 EXPECT_FALSE(handle.socket()); |
391 | 389 |
392 EXPECT_EQ(OK, callback.WaitForResult()); | 390 EXPECT_EQ(OK, callback.WaitForResult()); |
393 EXPECT_TRUE(handle.is_initialized()); | 391 EXPECT_TRUE(handle.is_initialized()); |
394 EXPECT_TRUE(handle.socket()); | 392 EXPECT_TRUE(handle.socket()); |
395 TestLoadTimingInfo(handle); | 393 TestLoadTimingInfo(handle); |
396 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); | 394 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); |
397 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); | 395 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); |
398 } | 396 } |
399 | 397 |
400 TEST_P(SSLClientSocketPoolTest, DirectNoSPDY) { | 398 TEST_P(SSLClientSocketPoolTest, DirectNoSPDY) { |
401 StaticSocketDataProvider data; | 399 StaticSocketDataProvider data; |
402 socket_factory_.AddSocketDataProvider(&data); | 400 socket_factory_.AddSocketDataProvider(&data); |
403 SSLSocketDataProvider ssl(ASYNC, OK); | 401 SSLSocketDataProvider ssl(ASYNC, OK); |
404 ssl.SetNextProto(kProtoHTTP11); | 402 ssl.SetNextProto(kProtoHTTP11); |
405 socket_factory_.AddSSLSocketDataProvider(&ssl); | 403 socket_factory_.AddSSLSocketDataProvider(&ssl); |
406 | 404 |
407 CreatePool(true /* tcp pool */, false, false); | 405 CreatePool(true /* tcp pool */, false, false); |
408 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 406 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
409 true); | 407 true); |
410 | 408 |
411 ClientSocketHandle handle; | 409 ClientSocketHandle handle; |
412 TestCompletionCallback callback; | 410 TestCompletionCallback callback; |
413 int rv = handle.Init( | 411 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
414 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 412 pool_.get(), BoundNetLog()); |
415 EXPECT_EQ(ERR_IO_PENDING, rv); | 413 EXPECT_EQ(ERR_IO_PENDING, rv); |
416 EXPECT_FALSE(handle.is_initialized()); | 414 EXPECT_FALSE(handle.is_initialized()); |
417 EXPECT_FALSE(handle.socket()); | 415 EXPECT_FALSE(handle.socket()); |
418 | 416 |
419 EXPECT_EQ(ERR_NPN_NEGOTIATION_FAILED, callback.WaitForResult()); | 417 EXPECT_EQ(ERR_NPN_NEGOTIATION_FAILED, callback.WaitForResult()); |
420 EXPECT_FALSE(handle.is_initialized()); | 418 EXPECT_FALSE(handle.is_initialized()); |
421 EXPECT_FALSE(handle.socket()); | 419 EXPECT_FALSE(handle.socket()); |
422 EXPECT_TRUE(handle.is_ssl_error()); | 420 EXPECT_TRUE(handle.is_ssl_error()); |
423 } | 421 } |
424 | 422 |
425 TEST_P(SSLClientSocketPoolTest, DirectGotSPDY) { | 423 TEST_P(SSLClientSocketPoolTest, DirectGotSPDY) { |
426 StaticSocketDataProvider data; | 424 StaticSocketDataProvider data; |
427 socket_factory_.AddSocketDataProvider(&data); | 425 socket_factory_.AddSocketDataProvider(&data); |
428 SSLSocketDataProvider ssl(ASYNC, OK); | 426 SSLSocketDataProvider ssl(ASYNC, OK); |
429 ssl.SetNextProto(GetParam()); | 427 ssl.SetNextProto(GetParam()); |
430 socket_factory_.AddSSLSocketDataProvider(&ssl); | 428 socket_factory_.AddSSLSocketDataProvider(&ssl); |
431 | 429 |
432 CreatePool(true /* tcp pool */, false, false); | 430 CreatePool(true /* tcp pool */, false, false); |
433 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 431 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
434 true); | 432 true); |
435 | 433 |
436 ClientSocketHandle handle; | 434 ClientSocketHandle handle; |
437 TestCompletionCallback callback; | 435 TestCompletionCallback callback; |
438 int rv = handle.Init( | 436 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
439 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 437 pool_.get(), BoundNetLog()); |
440 EXPECT_EQ(ERR_IO_PENDING, rv); | 438 EXPECT_EQ(ERR_IO_PENDING, rv); |
441 EXPECT_FALSE(handle.is_initialized()); | 439 EXPECT_FALSE(handle.is_initialized()); |
442 EXPECT_FALSE(handle.socket()); | 440 EXPECT_FALSE(handle.socket()); |
443 | 441 |
444 EXPECT_EQ(OK, callback.WaitForResult()); | 442 EXPECT_EQ(OK, callback.WaitForResult()); |
445 EXPECT_TRUE(handle.is_initialized()); | 443 EXPECT_TRUE(handle.is_initialized()); |
446 EXPECT_TRUE(handle.socket()); | 444 EXPECT_TRUE(handle.socket()); |
447 TestLoadTimingInfo(handle); | 445 TestLoadTimingInfo(handle); |
448 | 446 |
449 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); | 447 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); |
450 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); | 448 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); |
451 std::string proto; | 449 std::string proto; |
452 ssl_socket->GetNextProto(&proto); | 450 ssl_socket->GetNextProto(&proto); |
453 EXPECT_EQ(GetParam(), SSLClientSocket::NextProtoFromString(proto)); | 451 EXPECT_EQ(GetParam(), SSLClientSocket::NextProtoFromString(proto)); |
454 } | 452 } |
455 | 453 |
456 TEST_P(SSLClientSocketPoolTest, DirectGotBonusSPDY) { | 454 TEST_P(SSLClientSocketPoolTest, DirectGotBonusSPDY) { |
457 StaticSocketDataProvider data; | 455 StaticSocketDataProvider data; |
458 socket_factory_.AddSocketDataProvider(&data); | 456 socket_factory_.AddSocketDataProvider(&data); |
459 SSLSocketDataProvider ssl(ASYNC, OK); | 457 SSLSocketDataProvider ssl(ASYNC, OK); |
460 ssl.SetNextProto(GetParam()); | 458 ssl.SetNextProto(GetParam()); |
461 socket_factory_.AddSSLSocketDataProvider(&ssl); | 459 socket_factory_.AddSSLSocketDataProvider(&ssl); |
462 | 460 |
463 CreatePool(true /* tcp pool */, false, false); | 461 CreatePool(true /* tcp pool */, false, false); |
464 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 462 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
465 true); | 463 true); |
466 | 464 |
467 ClientSocketHandle handle; | 465 ClientSocketHandle handle; |
468 TestCompletionCallback callback; | 466 TestCompletionCallback callback; |
469 int rv = handle.Init( | 467 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
470 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 468 pool_.get(), BoundNetLog()); |
471 EXPECT_EQ(ERR_IO_PENDING, rv); | 469 EXPECT_EQ(ERR_IO_PENDING, rv); |
472 EXPECT_FALSE(handle.is_initialized()); | 470 EXPECT_FALSE(handle.is_initialized()); |
473 EXPECT_FALSE(handle.socket()); | 471 EXPECT_FALSE(handle.socket()); |
474 | 472 |
475 EXPECT_EQ(OK, callback.WaitForResult()); | 473 EXPECT_EQ(OK, callback.WaitForResult()); |
476 EXPECT_TRUE(handle.is_initialized()); | 474 EXPECT_TRUE(handle.is_initialized()); |
477 EXPECT_TRUE(handle.socket()); | 475 EXPECT_TRUE(handle.socket()); |
478 TestLoadTimingInfo(handle); | 476 TestLoadTimingInfo(handle); |
479 | 477 |
480 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); | 478 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); |
481 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); | 479 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); |
482 std::string proto; | 480 std::string proto; |
483 ssl_socket->GetNextProto(&proto); | 481 ssl_socket->GetNextProto(&proto); |
484 EXPECT_EQ(GetParam(), SSLClientSocket::NextProtoFromString(proto)); | 482 EXPECT_EQ(GetParam(), SSLClientSocket::NextProtoFromString(proto)); |
485 } | 483 } |
486 | 484 |
487 TEST_P(SSLClientSocketPoolTest, SOCKSFail) { | 485 TEST_P(SSLClientSocketPoolTest, SOCKSFail) { |
488 StaticSocketDataProvider data; | 486 StaticSocketDataProvider data; |
489 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); | 487 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); |
490 socket_factory_.AddSocketDataProvider(&data); | 488 socket_factory_.AddSocketDataProvider(&data); |
491 | 489 |
492 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 490 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
493 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, | 491 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, |
494 false); | 492 false); |
495 | 493 |
496 ClientSocketHandle handle; | 494 ClientSocketHandle handle; |
497 TestCompletionCallback callback; | 495 TestCompletionCallback callback; |
498 int rv = handle.Init( | 496 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
499 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 497 pool_.get(), BoundNetLog()); |
500 EXPECT_EQ(ERR_CONNECTION_FAILED, rv); | 498 EXPECT_EQ(ERR_CONNECTION_FAILED, rv); |
501 EXPECT_FALSE(handle.is_initialized()); | 499 EXPECT_FALSE(handle.is_initialized()); |
502 EXPECT_FALSE(handle.socket()); | 500 EXPECT_FALSE(handle.socket()); |
503 EXPECT_FALSE(handle.is_ssl_error()); | 501 EXPECT_FALSE(handle.is_ssl_error()); |
504 } | 502 } |
505 | 503 |
506 TEST_P(SSLClientSocketPoolTest, SOCKSFailAsync) { | 504 TEST_P(SSLClientSocketPoolTest, SOCKSFailAsync) { |
507 StaticSocketDataProvider data; | 505 StaticSocketDataProvider data; |
508 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); | 506 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); |
509 socket_factory_.AddSocketDataProvider(&data); | 507 socket_factory_.AddSocketDataProvider(&data); |
510 | 508 |
511 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 509 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
512 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, | 510 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, |
513 false); | 511 false); |
514 | 512 |
515 ClientSocketHandle handle; | 513 ClientSocketHandle handle; |
516 TestCompletionCallback callback; | 514 TestCompletionCallback callback; |
517 int rv = handle.Init( | 515 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
518 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 516 pool_.get(), BoundNetLog()); |
519 EXPECT_EQ(ERR_IO_PENDING, rv); | 517 EXPECT_EQ(ERR_IO_PENDING, rv); |
520 EXPECT_FALSE(handle.is_initialized()); | 518 EXPECT_FALSE(handle.is_initialized()); |
521 EXPECT_FALSE(handle.socket()); | 519 EXPECT_FALSE(handle.socket()); |
522 | 520 |
523 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult()); | 521 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult()); |
524 EXPECT_FALSE(handle.is_initialized()); | 522 EXPECT_FALSE(handle.is_initialized()); |
525 EXPECT_FALSE(handle.socket()); | 523 EXPECT_FALSE(handle.socket()); |
526 EXPECT_FALSE(handle.is_ssl_error()); | 524 EXPECT_FALSE(handle.is_ssl_error()); |
527 } | 525 } |
528 | 526 |
529 TEST_P(SSLClientSocketPoolTest, SOCKSBasic) { | 527 TEST_P(SSLClientSocketPoolTest, SOCKSBasic) { |
530 StaticSocketDataProvider data; | 528 StaticSocketDataProvider data; |
531 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); | 529 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
532 socket_factory_.AddSocketDataProvider(&data); | 530 socket_factory_.AddSocketDataProvider(&data); |
533 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 531 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
534 socket_factory_.AddSSLSocketDataProvider(&ssl); | 532 socket_factory_.AddSSLSocketDataProvider(&ssl); |
535 | 533 |
536 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 534 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
537 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, | 535 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, |
538 false); | 536 false); |
539 | 537 |
540 ClientSocketHandle handle; | 538 ClientSocketHandle handle; |
541 TestCompletionCallback callback; | 539 TestCompletionCallback callback; |
542 int rv = handle.Init( | 540 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
543 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 541 pool_.get(), BoundNetLog()); |
544 EXPECT_EQ(OK, rv); | 542 EXPECT_EQ(OK, rv); |
545 EXPECT_TRUE(handle.is_initialized()); | 543 EXPECT_TRUE(handle.is_initialized()); |
546 EXPECT_TRUE(handle.socket()); | 544 EXPECT_TRUE(handle.socket()); |
547 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here | 545 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here |
548 // don't go through the real logic, unlike in the HTTP proxy tests. | 546 // don't go through the real logic, unlike in the HTTP proxy tests. |
549 TestLoadTimingInfo(handle); | 547 TestLoadTimingInfo(handle); |
550 } | 548 } |
551 | 549 |
552 // Make sure that SSLConnectJob passes on its priority to its | 550 // Make sure that SSLConnectJob passes on its priority to its |
553 // transport socket on Init (for the SOCKS_PROXY case). | 551 // transport socket on Init (for the SOCKS_PROXY case). |
554 TEST_P(SSLClientSocketPoolTest, SetTransportPriorityOnInitSOCKS) { | 552 TEST_P(SSLClientSocketPoolTest, SetTransportPriorityOnInitSOCKS) { |
555 StaticSocketDataProvider data; | 553 StaticSocketDataProvider data; |
556 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); | 554 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
557 socket_factory_.AddSocketDataProvider(&data); | 555 socket_factory_.AddSocketDataProvider(&data); |
558 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 556 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
559 socket_factory_.AddSSLSocketDataProvider(&ssl); | 557 socket_factory_.AddSSLSocketDataProvider(&ssl); |
560 | 558 |
561 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 559 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
562 scoped_refptr<SSLSocketParams> params = | 560 scoped_refptr<SSLSocketParams> params = |
563 SSLParams(ProxyServer::SCHEME_SOCKS5, false); | 561 SSLParams(ProxyServer::SCHEME_SOCKS5, false); |
564 | 562 |
565 ClientSocketHandle handle; | 563 ClientSocketHandle handle; |
566 TestCompletionCallback callback; | 564 TestCompletionCallback callback; |
567 EXPECT_EQ(OK, handle.Init("a", params, HIGHEST, callback.callback(), | 565 EXPECT_EQ(OK, handle.Init("a", params, HIGHEST, false, callback.callback(), |
568 pool_.get(), BoundNetLog())); | 566 pool_.get(), BoundNetLog())); |
569 EXPECT_EQ(HIGHEST, transport_socket_pool_.last_request_priority()); | 567 EXPECT_EQ(HIGHEST, transport_socket_pool_.last_request_priority()); |
570 } | 568 } |
571 | 569 |
572 TEST_P(SSLClientSocketPoolTest, SOCKSBasicAsync) { | 570 TEST_P(SSLClientSocketPoolTest, SOCKSBasicAsync) { |
573 StaticSocketDataProvider data; | 571 StaticSocketDataProvider data; |
574 socket_factory_.AddSocketDataProvider(&data); | 572 socket_factory_.AddSocketDataProvider(&data); |
575 SSLSocketDataProvider ssl(ASYNC, OK); | 573 SSLSocketDataProvider ssl(ASYNC, OK); |
576 socket_factory_.AddSSLSocketDataProvider(&ssl); | 574 socket_factory_.AddSSLSocketDataProvider(&ssl); |
577 | 575 |
578 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 576 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
579 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, | 577 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, |
580 false); | 578 false); |
581 | 579 |
582 ClientSocketHandle handle; | 580 ClientSocketHandle handle; |
583 TestCompletionCallback callback; | 581 TestCompletionCallback callback; |
584 int rv = handle.Init( | 582 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
585 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 583 pool_.get(), BoundNetLog()); |
586 EXPECT_EQ(ERR_IO_PENDING, rv); | 584 EXPECT_EQ(ERR_IO_PENDING, rv); |
587 EXPECT_FALSE(handle.is_initialized()); | 585 EXPECT_FALSE(handle.is_initialized()); |
588 EXPECT_FALSE(handle.socket()); | 586 EXPECT_FALSE(handle.socket()); |
589 | 587 |
590 EXPECT_EQ(OK, callback.WaitForResult()); | 588 EXPECT_EQ(OK, callback.WaitForResult()); |
591 EXPECT_TRUE(handle.is_initialized()); | 589 EXPECT_TRUE(handle.is_initialized()); |
592 EXPECT_TRUE(handle.socket()); | 590 EXPECT_TRUE(handle.socket()); |
593 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here | 591 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here |
594 // don't go through the real logic, unlike in the HTTP proxy tests. | 592 // don't go through the real logic, unlike in the HTTP proxy tests. |
595 TestLoadTimingInfo(handle); | 593 TestLoadTimingInfo(handle); |
596 } | 594 } |
597 | 595 |
598 TEST_P(SSLClientSocketPoolTest, HttpProxyFail) { | 596 TEST_P(SSLClientSocketPoolTest, HttpProxyFail) { |
599 StaticSocketDataProvider data; | 597 StaticSocketDataProvider data; |
600 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); | 598 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); |
601 socket_factory_.AddSocketDataProvider(&data); | 599 socket_factory_.AddSocketDataProvider(&data); |
602 | 600 |
603 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 601 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
604 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, | 602 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, |
605 false); | 603 false); |
606 | 604 |
607 ClientSocketHandle handle; | 605 ClientSocketHandle handle; |
608 TestCompletionCallback callback; | 606 TestCompletionCallback callback; |
609 int rv = handle.Init( | 607 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
610 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 608 pool_.get(), BoundNetLog()); |
611 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, rv); | 609 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, rv); |
612 EXPECT_FALSE(handle.is_initialized()); | 610 EXPECT_FALSE(handle.is_initialized()); |
613 EXPECT_FALSE(handle.socket()); | 611 EXPECT_FALSE(handle.socket()); |
614 EXPECT_FALSE(handle.is_ssl_error()); | 612 EXPECT_FALSE(handle.is_ssl_error()); |
615 } | 613 } |
616 | 614 |
617 TEST_P(SSLClientSocketPoolTest, HttpProxyFailAsync) { | 615 TEST_P(SSLClientSocketPoolTest, HttpProxyFailAsync) { |
618 StaticSocketDataProvider data; | 616 StaticSocketDataProvider data; |
619 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); | 617 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); |
620 socket_factory_.AddSocketDataProvider(&data); | 618 socket_factory_.AddSocketDataProvider(&data); |
621 | 619 |
622 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 620 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
623 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, | 621 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, |
624 false); | 622 false); |
625 | 623 |
626 ClientSocketHandle handle; | 624 ClientSocketHandle handle; |
627 TestCompletionCallback callback; | 625 TestCompletionCallback callback; |
628 int rv = handle.Init( | 626 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
629 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 627 pool_.get(), BoundNetLog()); |
630 EXPECT_EQ(ERR_IO_PENDING, rv); | 628 EXPECT_EQ(ERR_IO_PENDING, rv); |
631 EXPECT_FALSE(handle.is_initialized()); | 629 EXPECT_FALSE(handle.is_initialized()); |
632 EXPECT_FALSE(handle.socket()); | 630 EXPECT_FALSE(handle.socket()); |
633 | 631 |
634 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, callback.WaitForResult()); | 632 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, callback.WaitForResult()); |
635 EXPECT_FALSE(handle.is_initialized()); | 633 EXPECT_FALSE(handle.is_initialized()); |
636 EXPECT_FALSE(handle.socket()); | 634 EXPECT_FALSE(handle.socket()); |
637 EXPECT_FALSE(handle.is_ssl_error()); | 635 EXPECT_FALSE(handle.is_ssl_error()); |
638 } | 636 } |
639 | 637 |
(...skipping 15 matching lines...) Expand all Loading... |
655 AddAuthToCache(); | 653 AddAuthToCache(); |
656 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 654 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
657 socket_factory_.AddSSLSocketDataProvider(&ssl); | 655 socket_factory_.AddSSLSocketDataProvider(&ssl); |
658 | 656 |
659 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 657 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
660 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, | 658 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, |
661 false); | 659 false); |
662 | 660 |
663 ClientSocketHandle handle; | 661 ClientSocketHandle handle; |
664 TestCompletionCallback callback; | 662 TestCompletionCallback callback; |
665 int rv = handle.Init( | 663 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
666 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 664 pool_.get(), BoundNetLog()); |
667 EXPECT_EQ(OK, rv); | 665 EXPECT_EQ(OK, rv); |
668 EXPECT_TRUE(handle.is_initialized()); | 666 EXPECT_TRUE(handle.is_initialized()); |
669 EXPECT_TRUE(handle.socket()); | 667 EXPECT_TRUE(handle.socket()); |
670 TestLoadTimingInfoNoDns(handle); | 668 TestLoadTimingInfoNoDns(handle); |
671 } | 669 } |
672 | 670 |
673 // Make sure that SSLConnectJob passes on its priority to its | 671 // Make sure that SSLConnectJob passes on its priority to its |
674 // transport socket on Init (for the HTTP_PROXY case). | 672 // transport socket on Init (for the HTTP_PROXY case). |
675 TEST_P(SSLClientSocketPoolTest, SetTransportPriorityOnInitHTTP) { | 673 TEST_P(SSLClientSocketPoolTest, SetTransportPriorityOnInitHTTP) { |
676 MockWrite writes[] = { | 674 MockWrite writes[] = { |
(...skipping 13 matching lines...) Expand all Loading... |
690 AddAuthToCache(); | 688 AddAuthToCache(); |
691 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 689 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
692 socket_factory_.AddSSLSocketDataProvider(&ssl); | 690 socket_factory_.AddSSLSocketDataProvider(&ssl); |
693 | 691 |
694 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 692 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
695 scoped_refptr<SSLSocketParams> params = | 693 scoped_refptr<SSLSocketParams> params = |
696 SSLParams(ProxyServer::SCHEME_HTTP, false); | 694 SSLParams(ProxyServer::SCHEME_HTTP, false); |
697 | 695 |
698 ClientSocketHandle handle; | 696 ClientSocketHandle handle; |
699 TestCompletionCallback callback; | 697 TestCompletionCallback callback; |
700 EXPECT_EQ(OK, handle.Init("a", params, HIGHEST, callback.callback(), | 698 EXPECT_EQ(OK, handle.Init("a", params, HIGHEST, false, callback.callback(), |
701 pool_.get(), BoundNetLog())); | 699 pool_.get(), BoundNetLog())); |
702 EXPECT_EQ(HIGHEST, transport_socket_pool_.last_request_priority()); | 700 EXPECT_EQ(HIGHEST, transport_socket_pool_.last_request_priority()); |
703 } | 701 } |
704 | 702 |
705 TEST_P(SSLClientSocketPoolTest, HttpProxyBasicAsync) { | 703 TEST_P(SSLClientSocketPoolTest, HttpProxyBasicAsync) { |
706 MockWrite writes[] = { | 704 MockWrite writes[] = { |
707 MockWrite( | 705 MockWrite( |
708 "CONNECT host:80 HTTP/1.1\r\n" | 706 "CONNECT host:80 HTTP/1.1\r\n" |
709 "Host: host:80\r\n" | 707 "Host: host:80\r\n" |
710 "Proxy-Connection: keep-alive\r\n" | 708 "Proxy-Connection: keep-alive\r\n" |
711 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 709 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
712 }; | 710 }; |
713 MockRead reads[] = { | 711 MockRead reads[] = { |
714 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), | 712 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), |
715 }; | 713 }; |
716 StaticSocketDataProvider data(reads, arraysize(reads), writes, | 714 StaticSocketDataProvider data(reads, arraysize(reads), writes, |
717 arraysize(writes)); | 715 arraysize(writes)); |
718 socket_factory_.AddSocketDataProvider(&data); | 716 socket_factory_.AddSocketDataProvider(&data); |
719 AddAuthToCache(); | 717 AddAuthToCache(); |
720 SSLSocketDataProvider ssl(ASYNC, OK); | 718 SSLSocketDataProvider ssl(ASYNC, OK); |
721 socket_factory_.AddSSLSocketDataProvider(&ssl); | 719 socket_factory_.AddSSLSocketDataProvider(&ssl); |
722 | 720 |
723 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 721 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
724 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, | 722 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, |
725 false); | 723 false); |
726 | 724 |
727 ClientSocketHandle handle; | 725 ClientSocketHandle handle; |
728 TestCompletionCallback callback; | 726 TestCompletionCallback callback; |
729 int rv = handle.Init( | 727 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
730 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 728 pool_.get(), BoundNetLog()); |
731 EXPECT_EQ(ERR_IO_PENDING, rv); | 729 EXPECT_EQ(ERR_IO_PENDING, rv); |
732 EXPECT_FALSE(handle.is_initialized()); | 730 EXPECT_FALSE(handle.is_initialized()); |
733 EXPECT_FALSE(handle.socket()); | 731 EXPECT_FALSE(handle.socket()); |
734 | 732 |
735 EXPECT_EQ(OK, callback.WaitForResult()); | 733 EXPECT_EQ(OK, callback.WaitForResult()); |
736 EXPECT_TRUE(handle.is_initialized()); | 734 EXPECT_TRUE(handle.is_initialized()); |
737 EXPECT_TRUE(handle.socket()); | 735 EXPECT_TRUE(handle.socket()); |
738 TestLoadTimingInfoNoDns(handle); | 736 TestLoadTimingInfoNoDns(handle); |
739 } | 737 } |
740 | 738 |
(...skipping 15 matching lines...) Expand all Loading... |
756 socket_factory_.AddSocketDataProvider(&data); | 754 socket_factory_.AddSocketDataProvider(&data); |
757 SSLSocketDataProvider ssl(ASYNC, OK); | 755 SSLSocketDataProvider ssl(ASYNC, OK); |
758 socket_factory_.AddSSLSocketDataProvider(&ssl); | 756 socket_factory_.AddSSLSocketDataProvider(&ssl); |
759 | 757 |
760 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 758 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
761 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, | 759 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, |
762 false); | 760 false); |
763 | 761 |
764 ClientSocketHandle handle; | 762 ClientSocketHandle handle; |
765 TestCompletionCallback callback; | 763 TestCompletionCallback callback; |
766 int rv = handle.Init( | 764 int rv = handle.Init("a", params, MEDIUM, false, callback.callback(), |
767 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 765 pool_.get(), BoundNetLog()); |
768 EXPECT_EQ(ERR_IO_PENDING, rv); | 766 EXPECT_EQ(ERR_IO_PENDING, rv); |
769 EXPECT_FALSE(handle.is_initialized()); | 767 EXPECT_FALSE(handle.is_initialized()); |
770 EXPECT_FALSE(handle.socket()); | 768 EXPECT_FALSE(handle.socket()); |
771 | 769 |
772 EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, callback.WaitForResult()); | 770 EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, callback.WaitForResult()); |
773 EXPECT_FALSE(handle.is_initialized()); | 771 EXPECT_FALSE(handle.is_initialized()); |
774 EXPECT_FALSE(handle.socket()); | 772 EXPECT_FALSE(handle.socket()); |
775 EXPECT_FALSE(handle.is_ssl_error()); | 773 EXPECT_FALSE(handle.is_ssl_error()); |
776 const HttpResponseInfo& tunnel_info = handle.ssl_error_response_info(); | 774 const HttpResponseInfo& tunnel_info = handle.ssl_error_response_info(); |
777 EXPECT_EQ(tunnel_info.headers->response_code(), 407); | 775 EXPECT_EQ(tunnel_info.headers->response_code(), 407); |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
912 ssl.channel_id_sent = true; | 910 ssl.channel_id_sent = true; |
913 ssl.SetNextProto(GetParam()); | 911 ssl.SetNextProto(GetParam()); |
914 TestIPPoolingDisabled(&ssl); | 912 TestIPPoolingDisabled(&ssl); |
915 } | 913 } |
916 | 914 |
917 // It would be nice to also test the timeouts in SSLClientSocketPool. | 915 // It would be nice to also test the timeouts in SSLClientSocketPool. |
918 | 916 |
919 } // namespace | 917 } // namespace |
920 | 918 |
921 } // namespace net | 919 } // namespace net |
OLD | NEW |