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