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 14 matching lines...) Expand all Loading... |
25 #include "net/http/http_server_properties_impl.h" | 25 #include "net/http/http_server_properties_impl.h" |
26 #include "net/http/transport_security_state.h" | 26 #include "net/http/transport_security_state.h" |
27 #include "net/proxy/proxy_service.h" | 27 #include "net/proxy/proxy_service.h" |
28 #include "net/socket/client_socket_handle.h" | 28 #include "net/socket/client_socket_handle.h" |
29 #include "net/socket/next_proto.h" | 29 #include "net/socket/next_proto.h" |
30 #include "net/socket/socket_test_util.h" | 30 #include "net/socket/socket_test_util.h" |
31 #include "net/spdy/spdy_session.h" | 31 #include "net/spdy/spdy_session.h" |
32 #include "net/spdy/spdy_session_pool.h" | 32 #include "net/spdy/spdy_session_pool.h" |
33 #include "net/spdy/spdy_test_util_common.h" | 33 #include "net/spdy/spdy_test_util_common.h" |
34 #include "net/ssl/ssl_config_service_defaults.h" | 34 #include "net/ssl/ssl_config_service_defaults.h" |
| 35 #include "net/test/gtest_util.h" |
35 #include "net/test/test_certificate_data.h" | 36 #include "net/test/test_certificate_data.h" |
| 37 #include "testing/gmock/include/gmock/gmock.h" |
36 #include "testing/gtest/include/gtest/gtest.h" | 38 #include "testing/gtest/include/gtest/gtest.h" |
37 | 39 |
| 40 using net::test::IsError; |
| 41 using net::test::IsOk; |
| 42 |
38 namespace net { | 43 namespace net { |
39 | 44 |
40 namespace { | 45 namespace { |
41 | 46 |
42 const int kMaxSockets = 32; | 47 const int kMaxSockets = 32; |
43 const int kMaxSocketsPerGroup = 6; | 48 const int kMaxSocketsPerGroup = 6; |
44 | 49 |
45 // Make sure |handle|'s load times are set correctly. DNS and connect start | 50 // Make sure |handle|'s load times are set correctly. DNS and connect start |
46 // times comes from mock client sockets in these tests, so primarily serves to | 51 // times comes from mock client sockets in these tests, so primarily serves to |
47 // check those times were copied, and ssl times / connect end are set correctly. | 52 // check those times were copied, and ssl times / connect end are set correctly. |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 socket_factory_.AddSocketDataProvider(&data); | 222 socket_factory_.AddSocketDataProvider(&data); |
218 | 223 |
219 CreatePool(true /* tcp pool */, false, false); | 224 CreatePool(true /* tcp pool */, false, false); |
220 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 225 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
221 false); | 226 false); |
222 | 227 |
223 ClientSocketHandle handle; | 228 ClientSocketHandle handle; |
224 int rv = | 229 int rv = |
225 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 230 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
226 CompletionCallback(), pool_.get(), BoundNetLog()); | 231 CompletionCallback(), pool_.get(), BoundNetLog()); |
227 EXPECT_EQ(ERR_CONNECTION_FAILED, rv); | 232 EXPECT_THAT(rv, IsError(ERR_CONNECTION_FAILED)); |
228 EXPECT_FALSE(handle.is_initialized()); | 233 EXPECT_FALSE(handle.is_initialized()); |
229 EXPECT_FALSE(handle.socket()); | 234 EXPECT_FALSE(handle.socket()); |
230 EXPECT_FALSE(handle.is_ssl_error()); | 235 EXPECT_FALSE(handle.is_ssl_error()); |
231 ASSERT_EQ(1u, handle.connection_attempts().size()); | 236 ASSERT_EQ(1u, handle.connection_attempts().size()); |
232 EXPECT_EQ(ERR_CONNECTION_FAILED, handle.connection_attempts()[0].result); | 237 EXPECT_THAT(handle.connection_attempts()[0].result, |
| 238 IsError(ERR_CONNECTION_FAILED)); |
233 } | 239 } |
234 | 240 |
235 TEST_P(SSLClientSocketPoolTest, TCPFailAsync) { | 241 TEST_P(SSLClientSocketPoolTest, TCPFailAsync) { |
236 StaticSocketDataProvider data; | 242 StaticSocketDataProvider data; |
237 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); | 243 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); |
238 socket_factory_.AddSocketDataProvider(&data); | 244 socket_factory_.AddSocketDataProvider(&data); |
239 | 245 |
240 CreatePool(true /* tcp pool */, false, false); | 246 CreatePool(true /* tcp pool */, false, false); |
241 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 247 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
242 false); | 248 false); |
243 | 249 |
244 ClientSocketHandle handle; | 250 ClientSocketHandle handle; |
245 TestCompletionCallback callback; | 251 TestCompletionCallback callback; |
246 int rv = | 252 int rv = |
247 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 253 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
248 callback.callback(), pool_.get(), BoundNetLog()); | 254 callback.callback(), pool_.get(), BoundNetLog()); |
249 EXPECT_EQ(ERR_IO_PENDING, rv); | 255 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
250 EXPECT_FALSE(handle.is_initialized()); | 256 EXPECT_FALSE(handle.is_initialized()); |
251 EXPECT_FALSE(handle.socket()); | 257 EXPECT_FALSE(handle.socket()); |
252 | 258 |
253 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult()); | 259 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CONNECTION_FAILED)); |
254 EXPECT_FALSE(handle.is_initialized()); | 260 EXPECT_FALSE(handle.is_initialized()); |
255 EXPECT_FALSE(handle.socket()); | 261 EXPECT_FALSE(handle.socket()); |
256 EXPECT_FALSE(handle.is_ssl_error()); | 262 EXPECT_FALSE(handle.is_ssl_error()); |
257 ASSERT_EQ(1u, handle.connection_attempts().size()); | 263 ASSERT_EQ(1u, handle.connection_attempts().size()); |
258 EXPECT_EQ(ERR_CONNECTION_FAILED, handle.connection_attempts()[0].result); | 264 EXPECT_THAT(handle.connection_attempts()[0].result, |
| 265 IsError(ERR_CONNECTION_FAILED)); |
259 } | 266 } |
260 | 267 |
261 TEST_P(SSLClientSocketPoolTest, BasicDirect) { | 268 TEST_P(SSLClientSocketPoolTest, BasicDirect) { |
262 StaticSocketDataProvider data; | 269 StaticSocketDataProvider data; |
263 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); | 270 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
264 socket_factory_.AddSocketDataProvider(&data); | 271 socket_factory_.AddSocketDataProvider(&data); |
265 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 272 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
266 socket_factory_.AddSSLSocketDataProvider(&ssl); | 273 socket_factory_.AddSSLSocketDataProvider(&ssl); |
267 | 274 |
268 CreatePool(true /* tcp pool */, false, false); | 275 CreatePool(true /* tcp pool */, false, false); |
269 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 276 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
270 false); | 277 false); |
271 | 278 |
272 ClientSocketHandle handle; | 279 ClientSocketHandle handle; |
273 TestCompletionCallback callback; | 280 TestCompletionCallback callback; |
274 int rv = | 281 int rv = |
275 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 282 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
276 callback.callback(), pool_.get(), BoundNetLog()); | 283 callback.callback(), pool_.get(), BoundNetLog()); |
277 EXPECT_EQ(OK, rv); | 284 EXPECT_THAT(rv, IsOk()); |
278 EXPECT_TRUE(handle.is_initialized()); | 285 EXPECT_TRUE(handle.is_initialized()); |
279 EXPECT_TRUE(handle.socket()); | 286 EXPECT_TRUE(handle.socket()); |
280 TestLoadTimingInfo(handle); | 287 TestLoadTimingInfo(handle); |
281 EXPECT_EQ(0u, handle.connection_attempts().size()); | 288 EXPECT_EQ(0u, handle.connection_attempts().size()); |
282 } | 289 } |
283 | 290 |
284 // Make sure that SSLConnectJob passes on its priority to its | 291 // Make sure that SSLConnectJob passes on its priority to its |
285 // socket request on Init (for the DIRECT case). | 292 // socket request on Init (for the DIRECT case). |
286 TEST_P(SSLClientSocketPoolTest, SetSocketRequestPriorityOnInitDirect) { | 293 TEST_P(SSLClientSocketPoolTest, SetSocketRequestPriorityOnInitDirect) { |
287 CreatePool(true /* tcp pool */, false, false); | 294 CreatePool(true /* tcp pool */, false, false); |
(...skipping 26 matching lines...) Expand all Loading... |
314 | 321 |
315 CreatePool(true /* tcp pool */, false, false); | 322 CreatePool(true /* tcp pool */, false, false); |
316 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 323 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
317 false); | 324 false); |
318 | 325 |
319 ClientSocketHandle handle; | 326 ClientSocketHandle handle; |
320 TestCompletionCallback callback; | 327 TestCompletionCallback callback; |
321 int rv = | 328 int rv = |
322 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 329 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
323 callback.callback(), pool_.get(), BoundNetLog()); | 330 callback.callback(), pool_.get(), BoundNetLog()); |
324 EXPECT_EQ(ERR_IO_PENDING, rv); | 331 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
325 EXPECT_FALSE(handle.is_initialized()); | 332 EXPECT_FALSE(handle.is_initialized()); |
326 EXPECT_FALSE(handle.socket()); | 333 EXPECT_FALSE(handle.socket()); |
327 | 334 |
328 EXPECT_EQ(OK, callback.WaitForResult()); | 335 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
329 EXPECT_TRUE(handle.is_initialized()); | 336 EXPECT_TRUE(handle.is_initialized()); |
330 EXPECT_TRUE(handle.socket()); | 337 EXPECT_TRUE(handle.socket()); |
331 TestLoadTimingInfo(handle); | 338 TestLoadTimingInfo(handle); |
332 } | 339 } |
333 | 340 |
334 TEST_P(SSLClientSocketPoolTest, DirectCertError) { | 341 TEST_P(SSLClientSocketPoolTest, DirectCertError) { |
335 StaticSocketDataProvider data; | 342 StaticSocketDataProvider data; |
336 socket_factory_.AddSocketDataProvider(&data); | 343 socket_factory_.AddSocketDataProvider(&data); |
337 SSLSocketDataProvider ssl(ASYNC, ERR_CERT_COMMON_NAME_INVALID); | 344 SSLSocketDataProvider ssl(ASYNC, ERR_CERT_COMMON_NAME_INVALID); |
338 socket_factory_.AddSSLSocketDataProvider(&ssl); | 345 socket_factory_.AddSSLSocketDataProvider(&ssl); |
339 | 346 |
340 CreatePool(true /* tcp pool */, false, false); | 347 CreatePool(true /* tcp pool */, false, false); |
341 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 348 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
342 false); | 349 false); |
343 | 350 |
344 ClientSocketHandle handle; | 351 ClientSocketHandle handle; |
345 TestCompletionCallback callback; | 352 TestCompletionCallback callback; |
346 int rv = | 353 int rv = |
347 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 354 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
348 callback.callback(), pool_.get(), BoundNetLog()); | 355 callback.callback(), pool_.get(), BoundNetLog()); |
349 EXPECT_EQ(ERR_IO_PENDING, rv); | 356 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
350 EXPECT_FALSE(handle.is_initialized()); | 357 EXPECT_FALSE(handle.is_initialized()); |
351 EXPECT_FALSE(handle.socket()); | 358 EXPECT_FALSE(handle.socket()); |
352 | 359 |
353 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, callback.WaitForResult()); | 360 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CERT_COMMON_NAME_INVALID)); |
354 EXPECT_TRUE(handle.is_initialized()); | 361 EXPECT_TRUE(handle.is_initialized()); |
355 EXPECT_TRUE(handle.socket()); | 362 EXPECT_TRUE(handle.socket()); |
356 TestLoadTimingInfo(handle); | 363 TestLoadTimingInfo(handle); |
357 } | 364 } |
358 | 365 |
359 TEST_P(SSLClientSocketPoolTest, DirectSSLError) { | 366 TEST_P(SSLClientSocketPoolTest, DirectSSLError) { |
360 StaticSocketDataProvider data; | 367 StaticSocketDataProvider data; |
361 socket_factory_.AddSocketDataProvider(&data); | 368 socket_factory_.AddSocketDataProvider(&data); |
362 SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR); | 369 SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR); |
363 socket_factory_.AddSSLSocketDataProvider(&ssl); | 370 socket_factory_.AddSSLSocketDataProvider(&ssl); |
364 | 371 |
365 CreatePool(true /* tcp pool */, false, false); | 372 CreatePool(true /* tcp pool */, false, false); |
366 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 373 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
367 false); | 374 false); |
368 | 375 |
369 ClientSocketHandle handle; | 376 ClientSocketHandle handle; |
370 TestCompletionCallback callback; | 377 TestCompletionCallback callback; |
371 int rv = | 378 int rv = |
372 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 379 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
373 callback.callback(), pool_.get(), BoundNetLog()); | 380 callback.callback(), pool_.get(), BoundNetLog()); |
374 EXPECT_EQ(ERR_IO_PENDING, rv); | 381 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
375 EXPECT_FALSE(handle.is_initialized()); | 382 EXPECT_FALSE(handle.is_initialized()); |
376 EXPECT_FALSE(handle.socket()); | 383 EXPECT_FALSE(handle.socket()); |
377 | 384 |
378 EXPECT_EQ(ERR_SSL_PROTOCOL_ERROR, callback.WaitForResult()); | 385 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_SSL_PROTOCOL_ERROR)); |
379 EXPECT_FALSE(handle.is_initialized()); | 386 EXPECT_FALSE(handle.is_initialized()); |
380 EXPECT_FALSE(handle.socket()); | 387 EXPECT_FALSE(handle.socket()); |
381 EXPECT_TRUE(handle.is_ssl_error()); | 388 EXPECT_TRUE(handle.is_ssl_error()); |
382 } | 389 } |
383 | 390 |
384 TEST_P(SSLClientSocketPoolTest, DirectWithNPN) { | 391 TEST_P(SSLClientSocketPoolTest, DirectWithNPN) { |
385 StaticSocketDataProvider data; | 392 StaticSocketDataProvider data; |
386 socket_factory_.AddSocketDataProvider(&data); | 393 socket_factory_.AddSocketDataProvider(&data); |
387 SSLSocketDataProvider ssl(ASYNC, OK); | 394 SSLSocketDataProvider ssl(ASYNC, OK); |
388 ssl.SetNextProto(kProtoHTTP11); | 395 ssl.SetNextProto(kProtoHTTP11); |
389 socket_factory_.AddSSLSocketDataProvider(&ssl); | 396 socket_factory_.AddSSLSocketDataProvider(&ssl); |
390 | 397 |
391 CreatePool(true /* tcp pool */, false, false); | 398 CreatePool(true /* tcp pool */, false, false); |
392 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 399 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
393 false); | 400 false); |
394 | 401 |
395 ClientSocketHandle handle; | 402 ClientSocketHandle handle; |
396 TestCompletionCallback callback; | 403 TestCompletionCallback callback; |
397 int rv = | 404 int rv = |
398 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 405 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
399 callback.callback(), pool_.get(), BoundNetLog()); | 406 callback.callback(), pool_.get(), BoundNetLog()); |
400 EXPECT_EQ(ERR_IO_PENDING, rv); | 407 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
401 EXPECT_FALSE(handle.is_initialized()); | 408 EXPECT_FALSE(handle.is_initialized()); |
402 EXPECT_FALSE(handle.socket()); | 409 EXPECT_FALSE(handle.socket()); |
403 | 410 |
404 EXPECT_EQ(OK, callback.WaitForResult()); | 411 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
405 EXPECT_TRUE(handle.is_initialized()); | 412 EXPECT_TRUE(handle.is_initialized()); |
406 EXPECT_TRUE(handle.socket()); | 413 EXPECT_TRUE(handle.socket()); |
407 TestLoadTimingInfo(handle); | 414 TestLoadTimingInfo(handle); |
408 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); | 415 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); |
409 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); | 416 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); |
410 } | 417 } |
411 | 418 |
412 TEST_P(SSLClientSocketPoolTest, DirectNoSPDY) { | 419 TEST_P(SSLClientSocketPoolTest, DirectNoSPDY) { |
413 StaticSocketDataProvider data; | 420 StaticSocketDataProvider data; |
414 socket_factory_.AddSocketDataProvider(&data); | 421 socket_factory_.AddSocketDataProvider(&data); |
415 SSLSocketDataProvider ssl(ASYNC, OK); | 422 SSLSocketDataProvider ssl(ASYNC, OK); |
416 ssl.SetNextProto(kProtoHTTP11); | 423 ssl.SetNextProto(kProtoHTTP11); |
417 socket_factory_.AddSSLSocketDataProvider(&ssl); | 424 socket_factory_.AddSSLSocketDataProvider(&ssl); |
418 | 425 |
419 CreatePool(true /* tcp pool */, false, false); | 426 CreatePool(true /* tcp pool */, false, false); |
420 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 427 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
421 true); | 428 true); |
422 | 429 |
423 ClientSocketHandle handle; | 430 ClientSocketHandle handle; |
424 TestCompletionCallback callback; | 431 TestCompletionCallback callback; |
425 int rv = | 432 int rv = |
426 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 433 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
427 callback.callback(), pool_.get(), BoundNetLog()); | 434 callback.callback(), pool_.get(), BoundNetLog()); |
428 EXPECT_EQ(ERR_IO_PENDING, rv); | 435 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
429 EXPECT_FALSE(handle.is_initialized()); | 436 EXPECT_FALSE(handle.is_initialized()); |
430 EXPECT_FALSE(handle.socket()); | 437 EXPECT_FALSE(handle.socket()); |
431 | 438 |
432 EXPECT_EQ(ERR_NPN_NEGOTIATION_FAILED, callback.WaitForResult()); | 439 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_NPN_NEGOTIATION_FAILED)); |
433 EXPECT_FALSE(handle.is_initialized()); | 440 EXPECT_FALSE(handle.is_initialized()); |
434 EXPECT_FALSE(handle.socket()); | 441 EXPECT_FALSE(handle.socket()); |
435 EXPECT_TRUE(handle.is_ssl_error()); | 442 EXPECT_TRUE(handle.is_ssl_error()); |
436 } | 443 } |
437 | 444 |
438 TEST_P(SSLClientSocketPoolTest, DirectGotSPDY) { | 445 TEST_P(SSLClientSocketPoolTest, DirectGotSPDY) { |
439 StaticSocketDataProvider data; | 446 StaticSocketDataProvider data; |
440 socket_factory_.AddSocketDataProvider(&data); | 447 socket_factory_.AddSocketDataProvider(&data); |
441 SSLSocketDataProvider ssl(ASYNC, OK); | 448 SSLSocketDataProvider ssl(ASYNC, OK); |
442 ssl.SetNextProto(GetParam()); | 449 ssl.SetNextProto(GetParam()); |
443 socket_factory_.AddSSLSocketDataProvider(&ssl); | 450 socket_factory_.AddSSLSocketDataProvider(&ssl); |
444 | 451 |
445 CreatePool(true /* tcp pool */, false, false); | 452 CreatePool(true /* tcp pool */, false, false); |
446 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 453 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
447 true); | 454 true); |
448 | 455 |
449 ClientSocketHandle handle; | 456 ClientSocketHandle handle; |
450 TestCompletionCallback callback; | 457 TestCompletionCallback callback; |
451 int rv = | 458 int rv = |
452 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 459 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
453 callback.callback(), pool_.get(), BoundNetLog()); | 460 callback.callback(), pool_.get(), BoundNetLog()); |
454 EXPECT_EQ(ERR_IO_PENDING, rv); | 461 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
455 EXPECT_FALSE(handle.is_initialized()); | 462 EXPECT_FALSE(handle.is_initialized()); |
456 EXPECT_FALSE(handle.socket()); | 463 EXPECT_FALSE(handle.socket()); |
457 | 464 |
458 EXPECT_EQ(OK, callback.WaitForResult()); | 465 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
459 EXPECT_TRUE(handle.is_initialized()); | 466 EXPECT_TRUE(handle.is_initialized()); |
460 EXPECT_TRUE(handle.socket()); | 467 EXPECT_TRUE(handle.socket()); |
461 TestLoadTimingInfo(handle); | 468 TestLoadTimingInfo(handle); |
462 | 469 |
463 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); | 470 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); |
464 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); | 471 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); |
465 std::string proto; | 472 std::string proto; |
466 ssl_socket->GetNextProto(&proto); | 473 ssl_socket->GetNextProto(&proto); |
467 EXPECT_EQ(GetParam(), SSLClientSocket::NextProtoFromString(proto)); | 474 EXPECT_EQ(GetParam(), SSLClientSocket::NextProtoFromString(proto)); |
468 } | 475 } |
469 | 476 |
470 TEST_P(SSLClientSocketPoolTest, DirectGotBonusSPDY) { | 477 TEST_P(SSLClientSocketPoolTest, DirectGotBonusSPDY) { |
471 StaticSocketDataProvider data; | 478 StaticSocketDataProvider data; |
472 socket_factory_.AddSocketDataProvider(&data); | 479 socket_factory_.AddSocketDataProvider(&data); |
473 SSLSocketDataProvider ssl(ASYNC, OK); | 480 SSLSocketDataProvider ssl(ASYNC, OK); |
474 ssl.SetNextProto(GetParam()); | 481 ssl.SetNextProto(GetParam()); |
475 socket_factory_.AddSSLSocketDataProvider(&ssl); | 482 socket_factory_.AddSSLSocketDataProvider(&ssl); |
476 | 483 |
477 CreatePool(true /* tcp pool */, false, false); | 484 CreatePool(true /* tcp pool */, false, false); |
478 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 485 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
479 true); | 486 true); |
480 | 487 |
481 ClientSocketHandle handle; | 488 ClientSocketHandle handle; |
482 TestCompletionCallback callback; | 489 TestCompletionCallback callback; |
483 int rv = | 490 int rv = |
484 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 491 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
485 callback.callback(), pool_.get(), BoundNetLog()); | 492 callback.callback(), pool_.get(), BoundNetLog()); |
486 EXPECT_EQ(ERR_IO_PENDING, rv); | 493 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
487 EXPECT_FALSE(handle.is_initialized()); | 494 EXPECT_FALSE(handle.is_initialized()); |
488 EXPECT_FALSE(handle.socket()); | 495 EXPECT_FALSE(handle.socket()); |
489 | 496 |
490 EXPECT_EQ(OK, callback.WaitForResult()); | 497 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
491 EXPECT_TRUE(handle.is_initialized()); | 498 EXPECT_TRUE(handle.is_initialized()); |
492 EXPECT_TRUE(handle.socket()); | 499 EXPECT_TRUE(handle.socket()); |
493 TestLoadTimingInfo(handle); | 500 TestLoadTimingInfo(handle); |
494 | 501 |
495 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); | 502 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); |
496 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); | 503 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); |
497 std::string proto; | 504 std::string proto; |
498 ssl_socket->GetNextProto(&proto); | 505 ssl_socket->GetNextProto(&proto); |
499 EXPECT_EQ(GetParam(), SSLClientSocket::NextProtoFromString(proto)); | 506 EXPECT_EQ(GetParam(), SSLClientSocket::NextProtoFromString(proto)); |
500 } | 507 } |
501 | 508 |
502 TEST_P(SSLClientSocketPoolTest, SOCKSFail) { | 509 TEST_P(SSLClientSocketPoolTest, SOCKSFail) { |
503 StaticSocketDataProvider data; | 510 StaticSocketDataProvider data; |
504 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); | 511 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); |
505 socket_factory_.AddSocketDataProvider(&data); | 512 socket_factory_.AddSocketDataProvider(&data); |
506 | 513 |
507 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 514 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
508 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, | 515 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, |
509 false); | 516 false); |
510 | 517 |
511 ClientSocketHandle handle; | 518 ClientSocketHandle handle; |
512 TestCompletionCallback callback; | 519 TestCompletionCallback callback; |
513 int rv = | 520 int rv = |
514 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 521 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
515 callback.callback(), pool_.get(), BoundNetLog()); | 522 callback.callback(), pool_.get(), BoundNetLog()); |
516 EXPECT_EQ(ERR_CONNECTION_FAILED, rv); | 523 EXPECT_THAT(rv, IsError(ERR_CONNECTION_FAILED)); |
517 EXPECT_FALSE(handle.is_initialized()); | 524 EXPECT_FALSE(handle.is_initialized()); |
518 EXPECT_FALSE(handle.socket()); | 525 EXPECT_FALSE(handle.socket()); |
519 EXPECT_FALSE(handle.is_ssl_error()); | 526 EXPECT_FALSE(handle.is_ssl_error()); |
520 } | 527 } |
521 | 528 |
522 TEST_P(SSLClientSocketPoolTest, SOCKSFailAsync) { | 529 TEST_P(SSLClientSocketPoolTest, SOCKSFailAsync) { |
523 StaticSocketDataProvider data; | 530 StaticSocketDataProvider data; |
524 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); | 531 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); |
525 socket_factory_.AddSocketDataProvider(&data); | 532 socket_factory_.AddSocketDataProvider(&data); |
526 | 533 |
527 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 534 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
528 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, | 535 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, |
529 false); | 536 false); |
530 | 537 |
531 ClientSocketHandle handle; | 538 ClientSocketHandle handle; |
532 TestCompletionCallback callback; | 539 TestCompletionCallback callback; |
533 int rv = | 540 int rv = |
534 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 541 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
535 callback.callback(), pool_.get(), BoundNetLog()); | 542 callback.callback(), pool_.get(), BoundNetLog()); |
536 EXPECT_EQ(ERR_IO_PENDING, rv); | 543 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
537 EXPECT_FALSE(handle.is_initialized()); | 544 EXPECT_FALSE(handle.is_initialized()); |
538 EXPECT_FALSE(handle.socket()); | 545 EXPECT_FALSE(handle.socket()); |
539 | 546 |
540 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult()); | 547 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CONNECTION_FAILED)); |
541 EXPECT_FALSE(handle.is_initialized()); | 548 EXPECT_FALSE(handle.is_initialized()); |
542 EXPECT_FALSE(handle.socket()); | 549 EXPECT_FALSE(handle.socket()); |
543 EXPECT_FALSE(handle.is_ssl_error()); | 550 EXPECT_FALSE(handle.is_ssl_error()); |
544 } | 551 } |
545 | 552 |
546 TEST_P(SSLClientSocketPoolTest, SOCKSBasic) { | 553 TEST_P(SSLClientSocketPoolTest, SOCKSBasic) { |
547 StaticSocketDataProvider data; | 554 StaticSocketDataProvider data; |
548 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); | 555 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
549 socket_factory_.AddSocketDataProvider(&data); | 556 socket_factory_.AddSocketDataProvider(&data); |
550 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 557 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
551 socket_factory_.AddSSLSocketDataProvider(&ssl); | 558 socket_factory_.AddSSLSocketDataProvider(&ssl); |
552 | 559 |
553 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 560 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
554 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, | 561 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, |
555 false); | 562 false); |
556 | 563 |
557 ClientSocketHandle handle; | 564 ClientSocketHandle handle; |
558 TestCompletionCallback callback; | 565 TestCompletionCallback callback; |
559 int rv = | 566 int rv = |
560 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 567 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
561 callback.callback(), pool_.get(), BoundNetLog()); | 568 callback.callback(), pool_.get(), BoundNetLog()); |
562 EXPECT_EQ(OK, rv); | 569 EXPECT_THAT(rv, IsOk()); |
563 EXPECT_TRUE(handle.is_initialized()); | 570 EXPECT_TRUE(handle.is_initialized()); |
564 EXPECT_TRUE(handle.socket()); | 571 EXPECT_TRUE(handle.socket()); |
565 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here | 572 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here |
566 // don't go through the real logic, unlike in the HTTP proxy tests. | 573 // don't go through the real logic, unlike in the HTTP proxy tests. |
567 TestLoadTimingInfo(handle); | 574 TestLoadTimingInfo(handle); |
568 } | 575 } |
569 | 576 |
570 // Make sure that SSLConnectJob passes on its priority to its | 577 // Make sure that SSLConnectJob passes on its priority to its |
571 // transport socket on Init (for the SOCKS_PROXY case). | 578 // transport socket on Init (for the SOCKS_PROXY case). |
572 TEST_P(SSLClientSocketPoolTest, SetTransportPriorityOnInitSOCKS) { | 579 TEST_P(SSLClientSocketPoolTest, SetTransportPriorityOnInitSOCKS) { |
(...skipping 23 matching lines...) Expand all Loading... |
596 | 603 |
597 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 604 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
598 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, | 605 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, |
599 false); | 606 false); |
600 | 607 |
601 ClientSocketHandle handle; | 608 ClientSocketHandle handle; |
602 TestCompletionCallback callback; | 609 TestCompletionCallback callback; |
603 int rv = | 610 int rv = |
604 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 611 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
605 callback.callback(), pool_.get(), BoundNetLog()); | 612 callback.callback(), pool_.get(), BoundNetLog()); |
606 EXPECT_EQ(ERR_IO_PENDING, rv); | 613 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
607 EXPECT_FALSE(handle.is_initialized()); | 614 EXPECT_FALSE(handle.is_initialized()); |
608 EXPECT_FALSE(handle.socket()); | 615 EXPECT_FALSE(handle.socket()); |
609 | 616 |
610 EXPECT_EQ(OK, callback.WaitForResult()); | 617 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
611 EXPECT_TRUE(handle.is_initialized()); | 618 EXPECT_TRUE(handle.is_initialized()); |
612 EXPECT_TRUE(handle.socket()); | 619 EXPECT_TRUE(handle.socket()); |
613 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here | 620 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here |
614 // don't go through the real logic, unlike in the HTTP proxy tests. | 621 // don't go through the real logic, unlike in the HTTP proxy tests. |
615 TestLoadTimingInfo(handle); | 622 TestLoadTimingInfo(handle); |
616 } | 623 } |
617 | 624 |
618 TEST_P(SSLClientSocketPoolTest, HttpProxyFail) { | 625 TEST_P(SSLClientSocketPoolTest, HttpProxyFail) { |
619 StaticSocketDataProvider data; | 626 StaticSocketDataProvider data; |
620 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); | 627 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); |
621 socket_factory_.AddSocketDataProvider(&data); | 628 socket_factory_.AddSocketDataProvider(&data); |
622 | 629 |
623 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 630 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
624 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, | 631 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, |
625 false); | 632 false); |
626 | 633 |
627 ClientSocketHandle handle; | 634 ClientSocketHandle handle; |
628 TestCompletionCallback callback; | 635 TestCompletionCallback callback; |
629 int rv = | 636 int rv = |
630 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 637 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
631 callback.callback(), pool_.get(), BoundNetLog()); | 638 callback.callback(), pool_.get(), BoundNetLog()); |
632 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, rv); | 639 EXPECT_THAT(rv, IsError(ERR_PROXY_CONNECTION_FAILED)); |
633 EXPECT_FALSE(handle.is_initialized()); | 640 EXPECT_FALSE(handle.is_initialized()); |
634 EXPECT_FALSE(handle.socket()); | 641 EXPECT_FALSE(handle.socket()); |
635 EXPECT_FALSE(handle.is_ssl_error()); | 642 EXPECT_FALSE(handle.is_ssl_error()); |
636 } | 643 } |
637 | 644 |
638 TEST_P(SSLClientSocketPoolTest, HttpProxyFailAsync) { | 645 TEST_P(SSLClientSocketPoolTest, HttpProxyFailAsync) { |
639 StaticSocketDataProvider data; | 646 StaticSocketDataProvider data; |
640 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); | 647 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); |
641 socket_factory_.AddSocketDataProvider(&data); | 648 socket_factory_.AddSocketDataProvider(&data); |
642 | 649 |
643 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 650 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
644 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, | 651 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, |
645 false); | 652 false); |
646 | 653 |
647 ClientSocketHandle handle; | 654 ClientSocketHandle handle; |
648 TestCompletionCallback callback; | 655 TestCompletionCallback callback; |
649 int rv = | 656 int rv = |
650 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 657 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
651 callback.callback(), pool_.get(), BoundNetLog()); | 658 callback.callback(), pool_.get(), BoundNetLog()); |
652 EXPECT_EQ(ERR_IO_PENDING, rv); | 659 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
653 EXPECT_FALSE(handle.is_initialized()); | 660 EXPECT_FALSE(handle.is_initialized()); |
654 EXPECT_FALSE(handle.socket()); | 661 EXPECT_FALSE(handle.socket()); |
655 | 662 |
656 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, callback.WaitForResult()); | 663 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_PROXY_CONNECTION_FAILED)); |
657 EXPECT_FALSE(handle.is_initialized()); | 664 EXPECT_FALSE(handle.is_initialized()); |
658 EXPECT_FALSE(handle.socket()); | 665 EXPECT_FALSE(handle.socket()); |
659 EXPECT_FALSE(handle.is_ssl_error()); | 666 EXPECT_FALSE(handle.is_ssl_error()); |
660 } | 667 } |
661 | 668 |
662 TEST_P(SSLClientSocketPoolTest, HttpProxyBasic) { | 669 TEST_P(SSLClientSocketPoolTest, HttpProxyBasic) { |
663 MockWrite writes[] = { | 670 MockWrite writes[] = { |
664 MockWrite(SYNCHRONOUS, | 671 MockWrite(SYNCHRONOUS, |
665 "CONNECT host:80 HTTP/1.1\r\n" | 672 "CONNECT host:80 HTTP/1.1\r\n" |
666 "Host: host:80\r\n" | 673 "Host: host:80\r\n" |
(...skipping 13 matching lines...) Expand all Loading... |
680 | 687 |
681 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 688 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
682 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, | 689 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, |
683 false); | 690 false); |
684 | 691 |
685 ClientSocketHandle handle; | 692 ClientSocketHandle handle; |
686 TestCompletionCallback callback; | 693 TestCompletionCallback callback; |
687 int rv = | 694 int rv = |
688 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 695 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
689 callback.callback(), pool_.get(), BoundNetLog()); | 696 callback.callback(), pool_.get(), BoundNetLog()); |
690 EXPECT_EQ(OK, rv); | 697 EXPECT_THAT(rv, IsOk()); |
691 EXPECT_TRUE(handle.is_initialized()); | 698 EXPECT_TRUE(handle.is_initialized()); |
692 EXPECT_TRUE(handle.socket()); | 699 EXPECT_TRUE(handle.socket()); |
693 TestLoadTimingInfoNoDns(handle); | 700 TestLoadTimingInfoNoDns(handle); |
694 } | 701 } |
695 | 702 |
696 // Make sure that SSLConnectJob passes on its priority to its | 703 // Make sure that SSLConnectJob passes on its priority to its |
697 // transport socket on Init (for the HTTP_PROXY case). | 704 // transport socket on Init (for the HTTP_PROXY case). |
698 TEST_P(SSLClientSocketPoolTest, SetTransportPriorityOnInitHTTP) { | 705 TEST_P(SSLClientSocketPoolTest, SetTransportPriorityOnInitHTTP) { |
699 MockWrite writes[] = { | 706 MockWrite writes[] = { |
700 MockWrite(SYNCHRONOUS, | 707 MockWrite(SYNCHRONOUS, |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
746 | 753 |
747 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 754 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
748 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, | 755 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, |
749 false); | 756 false); |
750 | 757 |
751 ClientSocketHandle handle; | 758 ClientSocketHandle handle; |
752 TestCompletionCallback callback; | 759 TestCompletionCallback callback; |
753 int rv = | 760 int rv = |
754 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 761 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
755 callback.callback(), pool_.get(), BoundNetLog()); | 762 callback.callback(), pool_.get(), BoundNetLog()); |
756 EXPECT_EQ(ERR_IO_PENDING, rv); | 763 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
757 EXPECT_FALSE(handle.is_initialized()); | 764 EXPECT_FALSE(handle.is_initialized()); |
758 EXPECT_FALSE(handle.socket()); | 765 EXPECT_FALSE(handle.socket()); |
759 | 766 |
760 EXPECT_EQ(OK, callback.WaitForResult()); | 767 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
761 EXPECT_TRUE(handle.is_initialized()); | 768 EXPECT_TRUE(handle.is_initialized()); |
762 EXPECT_TRUE(handle.socket()); | 769 EXPECT_TRUE(handle.socket()); |
763 TestLoadTimingInfoNoDns(handle); | 770 TestLoadTimingInfoNoDns(handle); |
764 } | 771 } |
765 | 772 |
766 TEST_P(SSLClientSocketPoolTest, NeedProxyAuth) { | 773 TEST_P(SSLClientSocketPoolTest, NeedProxyAuth) { |
767 MockWrite writes[] = { | 774 MockWrite writes[] = { |
768 MockWrite( | 775 MockWrite( |
769 "CONNECT host:80 HTTP/1.1\r\n" | 776 "CONNECT host:80 HTTP/1.1\r\n" |
770 "Host: host:80\r\n" | 777 "Host: host:80\r\n" |
(...skipping 13 matching lines...) Expand all Loading... |
784 | 791 |
785 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 792 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
786 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, | 793 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, |
787 false); | 794 false); |
788 | 795 |
789 ClientSocketHandle handle; | 796 ClientSocketHandle handle; |
790 TestCompletionCallback callback; | 797 TestCompletionCallback callback; |
791 int rv = | 798 int rv = |
792 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, | 799 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, |
793 callback.callback(), pool_.get(), BoundNetLog()); | 800 callback.callback(), pool_.get(), BoundNetLog()); |
794 EXPECT_EQ(ERR_IO_PENDING, rv); | 801 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
795 EXPECT_FALSE(handle.is_initialized()); | 802 EXPECT_FALSE(handle.is_initialized()); |
796 EXPECT_FALSE(handle.socket()); | 803 EXPECT_FALSE(handle.socket()); |
797 | 804 |
798 EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, callback.WaitForResult()); | 805 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_PROXY_AUTH_REQUESTED)); |
799 EXPECT_FALSE(handle.is_initialized()); | 806 EXPECT_FALSE(handle.is_initialized()); |
800 EXPECT_FALSE(handle.socket()); | 807 EXPECT_FALSE(handle.socket()); |
801 EXPECT_FALSE(handle.is_ssl_error()); | 808 EXPECT_FALSE(handle.is_ssl_error()); |
802 const HttpResponseInfo& tunnel_info = handle.ssl_error_response_info(); | 809 const HttpResponseInfo& tunnel_info = handle.ssl_error_response_info(); |
803 EXPECT_EQ(tunnel_info.headers->response_code(), 407); | 810 EXPECT_EQ(tunnel_info.headers->response_code(), 407); |
804 std::unique_ptr<ClientSocketHandle> tunnel_handle( | 811 std::unique_ptr<ClientSocketHandle> tunnel_handle( |
805 handle.release_pending_http_proxy_connection()); | 812 handle.release_pending_http_proxy_connection()); |
806 EXPECT_TRUE(tunnel_handle->socket()); | 813 EXPECT_TRUE(tunnel_handle->socket()); |
807 EXPECT_FALSE(tunnel_handle->socket()->IsConnected()); | 814 EXPECT_FALSE(tunnel_handle->socket()->IsConnected()); |
808 } | 815 } |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
887 | 894 |
888 // This test requires that the HostResolver cache be populated. Normal | 895 // This test requires that the HostResolver cache be populated. Normal |
889 // code would have done this already, but we do it manually. | 896 // code would have done this already, but we do it manually. |
890 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); | 897 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); |
891 rv = host_resolver_.Resolve(info, | 898 rv = host_resolver_.Resolve(info, |
892 DEFAULT_PRIORITY, | 899 DEFAULT_PRIORITY, |
893 &test_hosts[i].addresses, | 900 &test_hosts[i].addresses, |
894 callback.callback(), | 901 callback.callback(), |
895 NULL, | 902 NULL, |
896 BoundNetLog()); | 903 BoundNetLog()); |
897 EXPECT_EQ(OK, callback.GetResult(rv)); | 904 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
898 | 905 |
899 // Setup a SpdySessionKey | 906 // Setup a SpdySessionKey |
900 test_hosts[i].key = SpdySessionKey( | 907 test_hosts[i].key = SpdySessionKey( |
901 HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct(), | 908 HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct(), |
902 PRIVACY_MODE_DISABLED); | 909 PRIVACY_MODE_DISABLED); |
903 } | 910 } |
904 | 911 |
905 MockRead reads[] = { | 912 MockRead reads[] = { |
906 MockRead(ASYNC, ERR_IO_PENDING), | 913 MockRead(ASYNC, ERR_IO_PENDING), |
907 }; | 914 }; |
(...skipping 30 matching lines...) Expand all Loading... |
938 ssl.channel_id_sent = true; | 945 ssl.channel_id_sent = true; |
939 ssl.SetNextProto(GetParam()); | 946 ssl.SetNextProto(GetParam()); |
940 TestIPPoolingDisabled(&ssl); | 947 TestIPPoolingDisabled(&ssl); |
941 } | 948 } |
942 | 949 |
943 // It would be nice to also test the timeouts in SSLClientSocketPool. | 950 // It would be nice to also test the timeouts in SSLClientSocketPool. |
944 | 951 |
945 } // namespace | 952 } // namespace |
946 | 953 |
947 } // namespace net | 954 } // namespace net |
OLD | NEW |