| 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 |