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 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 | 178 |
179 HttpNetworkSession* CreateNetworkSession() { | 179 HttpNetworkSession* CreateNetworkSession() { |
180 HttpNetworkSession::Params params; | 180 HttpNetworkSession::Params params; |
181 params.host_resolver = &host_resolver_; | 181 params.host_resolver = &host_resolver_; |
182 params.cert_verifier = cert_verifier_.get(); | 182 params.cert_verifier = cert_verifier_.get(); |
183 params.transport_security_state = transport_security_state_.get(); | 183 params.transport_security_state = transport_security_state_.get(); |
184 params.proxy_service = proxy_service_.get(); | 184 params.proxy_service = proxy_service_.get(); |
185 params.client_socket_factory = &socket_factory_; | 185 params.client_socket_factory = &socket_factory_; |
186 params.ssl_config_service = ssl_config_service_.get(); | 186 params.ssl_config_service = ssl_config_service_.get(); |
187 params.http_auth_handler_factory = http_auth_handler_factory_.get(); | 187 params.http_auth_handler_factory = http_auth_handler_factory_.get(); |
188 params.http_server_properties = | 188 params.http_server_properties = http_server_properties_.GetWeakPtr(); |
189 http_server_properties_.GetWeakPtr(); | |
190 params.enable_spdy_compression = false; | 189 params.enable_spdy_compression = false; |
191 params.spdy_default_protocol = GetParam(); | 190 params.spdy_default_protocol = GetParam(); |
192 return new HttpNetworkSession(params); | 191 return new HttpNetworkSession(params); |
193 } | 192 } |
194 | 193 |
195 void TestIPPoolingDisabled(SSLSocketDataProvider* ssl); | 194 void TestIPPoolingDisabled(SSLSocketDataProvider* ssl); |
196 | 195 |
197 MockClientSocketFactory socket_factory_; | 196 MockClientSocketFactory socket_factory_; |
198 MockCachingHostResolver host_resolver_; | 197 MockCachingHostResolver host_resolver_; |
199 scoped_ptr<CertVerifier> cert_verifier_; | 198 scoped_ptr<CertVerifier> cert_verifier_; |
(...skipping 16 matching lines...) Expand all Loading... |
216 | 215 |
217 scoped_refptr<HttpProxySocketParams> http_proxy_socket_params_; | 216 scoped_refptr<HttpProxySocketParams> http_proxy_socket_params_; |
218 ClientSocketPoolHistograms http_proxy_histograms_; | 217 ClientSocketPoolHistograms http_proxy_histograms_; |
219 HttpProxyClientSocketPool http_proxy_socket_pool_; | 218 HttpProxyClientSocketPool http_proxy_socket_pool_; |
220 | 219 |
221 SSLConfig ssl_config_; | 220 SSLConfig ssl_config_; |
222 scoped_ptr<ClientSocketPoolHistograms> ssl_histograms_; | 221 scoped_ptr<ClientSocketPoolHistograms> ssl_histograms_; |
223 scoped_ptr<SSLClientSocketPool> pool_; | 222 scoped_ptr<SSLClientSocketPool> pool_; |
224 }; | 223 }; |
225 | 224 |
226 INSTANTIATE_TEST_CASE_P( | 225 INSTANTIATE_TEST_CASE_P(NextProto, |
227 NextProto, | 226 SSLClientSocketPoolTest, |
228 SSLClientSocketPoolTest, | 227 testing::Values(kProtoDeprecatedSPDY2, |
229 testing::Values(kProtoDeprecatedSPDY2, | 228 kProtoSPDY3, |
230 kProtoSPDY3, kProtoSPDY31, kProtoSPDY4)); | 229 kProtoSPDY31, |
| 230 kProtoSPDY4)); |
231 | 231 |
232 TEST_P(SSLClientSocketPoolTest, TCPFail) { | 232 TEST_P(SSLClientSocketPoolTest, TCPFail) { |
233 StaticSocketDataProvider data; | 233 StaticSocketDataProvider data; |
234 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); | 234 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); |
235 socket_factory_.AddSocketDataProvider(&data); | 235 socket_factory_.AddSocketDataProvider(&data); |
236 | 236 |
237 CreatePool(true /* tcp pool */, false, false); | 237 CreatePool(true /* tcp pool */, false, false); |
238 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 238 scoped_refptr<SSLSocketParams> params = |
239 false); | 239 SSLParams(ProxyServer::SCHEME_DIRECT, false); |
240 | 240 |
241 ClientSocketHandle handle; | 241 ClientSocketHandle handle; |
242 int rv = handle.Init("a", params, MEDIUM, CompletionCallback(), pool_.get(), | 242 int rv = handle.Init( |
243 BoundNetLog()); | 243 "a", params, MEDIUM, CompletionCallback(), pool_.get(), BoundNetLog()); |
244 EXPECT_EQ(ERR_CONNECTION_FAILED, rv); | 244 EXPECT_EQ(ERR_CONNECTION_FAILED, rv); |
245 EXPECT_FALSE(handle.is_initialized()); | 245 EXPECT_FALSE(handle.is_initialized()); |
246 EXPECT_FALSE(handle.socket()); | 246 EXPECT_FALSE(handle.socket()); |
247 EXPECT_FALSE(handle.is_ssl_error()); | 247 EXPECT_FALSE(handle.is_ssl_error()); |
248 } | 248 } |
249 | 249 |
250 TEST_P(SSLClientSocketPoolTest, TCPFailAsync) { | 250 TEST_P(SSLClientSocketPoolTest, TCPFailAsync) { |
251 StaticSocketDataProvider data; | 251 StaticSocketDataProvider data; |
252 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); | 252 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); |
253 socket_factory_.AddSocketDataProvider(&data); | 253 socket_factory_.AddSocketDataProvider(&data); |
254 | 254 |
255 CreatePool(true /* tcp pool */, false, false); | 255 CreatePool(true /* tcp pool */, false, false); |
256 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 256 scoped_refptr<SSLSocketParams> params = |
257 false); | 257 SSLParams(ProxyServer::SCHEME_DIRECT, false); |
258 | 258 |
259 ClientSocketHandle handle; | 259 ClientSocketHandle handle; |
260 TestCompletionCallback callback; | 260 TestCompletionCallback callback; |
261 int rv = handle.Init( | 261 int rv = handle.Init( |
262 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 262 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
263 EXPECT_EQ(ERR_IO_PENDING, rv); | 263 EXPECT_EQ(ERR_IO_PENDING, rv); |
264 EXPECT_FALSE(handle.is_initialized()); | 264 EXPECT_FALSE(handle.is_initialized()); |
265 EXPECT_FALSE(handle.socket()); | 265 EXPECT_FALSE(handle.socket()); |
266 | 266 |
267 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult()); | 267 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult()); |
268 EXPECT_FALSE(handle.is_initialized()); | 268 EXPECT_FALSE(handle.is_initialized()); |
269 EXPECT_FALSE(handle.socket()); | 269 EXPECT_FALSE(handle.socket()); |
270 EXPECT_FALSE(handle.is_ssl_error()); | 270 EXPECT_FALSE(handle.is_ssl_error()); |
271 } | 271 } |
272 | 272 |
273 TEST_P(SSLClientSocketPoolTest, BasicDirect) { | 273 TEST_P(SSLClientSocketPoolTest, BasicDirect) { |
274 StaticSocketDataProvider data; | 274 StaticSocketDataProvider data; |
275 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); | 275 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
276 socket_factory_.AddSocketDataProvider(&data); | 276 socket_factory_.AddSocketDataProvider(&data); |
277 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 277 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
278 socket_factory_.AddSSLSocketDataProvider(&ssl); | 278 socket_factory_.AddSSLSocketDataProvider(&ssl); |
279 | 279 |
280 CreatePool(true /* tcp pool */, false, false); | 280 CreatePool(true /* tcp pool */, false, false); |
281 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 281 scoped_refptr<SSLSocketParams> params = |
282 false); | 282 SSLParams(ProxyServer::SCHEME_DIRECT, false); |
283 | 283 |
284 ClientSocketHandle handle; | 284 ClientSocketHandle handle; |
285 TestCompletionCallback callback; | 285 TestCompletionCallback callback; |
286 int rv = handle.Init( | 286 int rv = handle.Init( |
287 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 287 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
288 EXPECT_EQ(OK, rv); | 288 EXPECT_EQ(OK, rv); |
289 EXPECT_TRUE(handle.is_initialized()); | 289 EXPECT_TRUE(handle.is_initialized()); |
290 EXPECT_TRUE(handle.socket()); | 290 EXPECT_TRUE(handle.socket()); |
291 TestLoadTimingInfo(handle); | 291 TestLoadTimingInfo(handle); |
292 } | 292 } |
293 | 293 |
294 // Make sure that SSLConnectJob passes on its priority to its | 294 // Make sure that SSLConnectJob passes on its priority to its |
295 // socket request on Init (for the DIRECT case). | 295 // socket request on Init (for the DIRECT case). |
296 TEST_P(SSLClientSocketPoolTest, SetSocketRequestPriorityOnInitDirect) { | 296 TEST_P(SSLClientSocketPoolTest, SetSocketRequestPriorityOnInitDirect) { |
297 CreatePool(true /* tcp pool */, false, false); | 297 CreatePool(true /* tcp pool */, false, false); |
298 scoped_refptr<SSLSocketParams> params = | 298 scoped_refptr<SSLSocketParams> params = |
299 SSLParams(ProxyServer::SCHEME_DIRECT, false); | 299 SSLParams(ProxyServer::SCHEME_DIRECT, false); |
300 | 300 |
301 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) { | 301 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) { |
302 RequestPriority priority = static_cast<RequestPriority>(i); | 302 RequestPriority priority = static_cast<RequestPriority>(i); |
303 StaticSocketDataProvider data; | 303 StaticSocketDataProvider data; |
304 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); | 304 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
305 socket_factory_.AddSocketDataProvider(&data); | 305 socket_factory_.AddSocketDataProvider(&data); |
306 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 306 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
307 socket_factory_.AddSSLSocketDataProvider(&ssl); | 307 socket_factory_.AddSSLSocketDataProvider(&ssl); |
308 | 308 |
309 ClientSocketHandle handle; | 309 ClientSocketHandle handle; |
310 TestCompletionCallback callback; | 310 TestCompletionCallback callback; |
311 EXPECT_EQ(OK, handle.Init("a", params, priority, callback.callback(), | 311 EXPECT_EQ(OK, |
312 pool_.get(), BoundNetLog())); | 312 handle.Init("a", |
| 313 params, |
| 314 priority, |
| 315 callback.callback(), |
| 316 pool_.get(), |
| 317 BoundNetLog())); |
313 EXPECT_EQ(priority, transport_socket_pool_.last_request_priority()); | 318 EXPECT_EQ(priority, transport_socket_pool_.last_request_priority()); |
314 handle.socket()->Disconnect(); | 319 handle.socket()->Disconnect(); |
315 } | 320 } |
316 } | 321 } |
317 | 322 |
318 TEST_P(SSLClientSocketPoolTest, BasicDirectAsync) { | 323 TEST_P(SSLClientSocketPoolTest, BasicDirectAsync) { |
319 StaticSocketDataProvider data; | 324 StaticSocketDataProvider data; |
320 socket_factory_.AddSocketDataProvider(&data); | 325 socket_factory_.AddSocketDataProvider(&data); |
321 SSLSocketDataProvider ssl(ASYNC, OK); | 326 SSLSocketDataProvider ssl(ASYNC, OK); |
322 socket_factory_.AddSSLSocketDataProvider(&ssl); | 327 socket_factory_.AddSSLSocketDataProvider(&ssl); |
323 | 328 |
324 CreatePool(true /* tcp pool */, false, false); | 329 CreatePool(true /* tcp pool */, false, false); |
325 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 330 scoped_refptr<SSLSocketParams> params = |
326 false); | 331 SSLParams(ProxyServer::SCHEME_DIRECT, false); |
327 | 332 |
328 ClientSocketHandle handle; | 333 ClientSocketHandle handle; |
329 TestCompletionCallback callback; | 334 TestCompletionCallback callback; |
330 int rv = handle.Init( | 335 int rv = handle.Init( |
331 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 336 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
332 EXPECT_EQ(ERR_IO_PENDING, rv); | 337 EXPECT_EQ(ERR_IO_PENDING, rv); |
333 EXPECT_FALSE(handle.is_initialized()); | 338 EXPECT_FALSE(handle.is_initialized()); |
334 EXPECT_FALSE(handle.socket()); | 339 EXPECT_FALSE(handle.socket()); |
335 | 340 |
336 EXPECT_EQ(OK, callback.WaitForResult()); | 341 EXPECT_EQ(OK, callback.WaitForResult()); |
337 EXPECT_TRUE(handle.is_initialized()); | 342 EXPECT_TRUE(handle.is_initialized()); |
338 EXPECT_TRUE(handle.socket()); | 343 EXPECT_TRUE(handle.socket()); |
339 TestLoadTimingInfo(handle); | 344 TestLoadTimingInfo(handle); |
340 } | 345 } |
341 | 346 |
342 TEST_P(SSLClientSocketPoolTest, DirectCertError) { | 347 TEST_P(SSLClientSocketPoolTest, DirectCertError) { |
343 StaticSocketDataProvider data; | 348 StaticSocketDataProvider data; |
344 socket_factory_.AddSocketDataProvider(&data); | 349 socket_factory_.AddSocketDataProvider(&data); |
345 SSLSocketDataProvider ssl(ASYNC, ERR_CERT_COMMON_NAME_INVALID); | 350 SSLSocketDataProvider ssl(ASYNC, ERR_CERT_COMMON_NAME_INVALID); |
346 socket_factory_.AddSSLSocketDataProvider(&ssl); | 351 socket_factory_.AddSSLSocketDataProvider(&ssl); |
347 | 352 |
348 CreatePool(true /* tcp pool */, false, false); | 353 CreatePool(true /* tcp pool */, false, false); |
349 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 354 scoped_refptr<SSLSocketParams> params = |
350 false); | 355 SSLParams(ProxyServer::SCHEME_DIRECT, false); |
351 | 356 |
352 ClientSocketHandle handle; | 357 ClientSocketHandle handle; |
353 TestCompletionCallback callback; | 358 TestCompletionCallback callback; |
354 int rv = handle.Init( | 359 int rv = handle.Init( |
355 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 360 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
356 EXPECT_EQ(ERR_IO_PENDING, rv); | 361 EXPECT_EQ(ERR_IO_PENDING, rv); |
357 EXPECT_FALSE(handle.is_initialized()); | 362 EXPECT_FALSE(handle.is_initialized()); |
358 EXPECT_FALSE(handle.socket()); | 363 EXPECT_FALSE(handle.socket()); |
359 | 364 |
360 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, callback.WaitForResult()); | 365 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, callback.WaitForResult()); |
361 EXPECT_TRUE(handle.is_initialized()); | 366 EXPECT_TRUE(handle.is_initialized()); |
362 EXPECT_TRUE(handle.socket()); | 367 EXPECT_TRUE(handle.socket()); |
363 TestLoadTimingInfo(handle); | 368 TestLoadTimingInfo(handle); |
364 } | 369 } |
365 | 370 |
366 TEST_P(SSLClientSocketPoolTest, DirectSSLError) { | 371 TEST_P(SSLClientSocketPoolTest, DirectSSLError) { |
367 StaticSocketDataProvider data; | 372 StaticSocketDataProvider data; |
368 socket_factory_.AddSocketDataProvider(&data); | 373 socket_factory_.AddSocketDataProvider(&data); |
369 SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR); | 374 SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR); |
370 socket_factory_.AddSSLSocketDataProvider(&ssl); | 375 socket_factory_.AddSSLSocketDataProvider(&ssl); |
371 | 376 |
372 CreatePool(true /* tcp pool */, false, false); | 377 CreatePool(true /* tcp pool */, false, false); |
373 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 378 scoped_refptr<SSLSocketParams> params = |
374 false); | 379 SSLParams(ProxyServer::SCHEME_DIRECT, false); |
375 | 380 |
376 ClientSocketHandle handle; | 381 ClientSocketHandle handle; |
377 TestCompletionCallback callback; | 382 TestCompletionCallback callback; |
378 int rv = handle.Init( | 383 int rv = handle.Init( |
379 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 384 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
380 EXPECT_EQ(ERR_IO_PENDING, rv); | 385 EXPECT_EQ(ERR_IO_PENDING, rv); |
381 EXPECT_FALSE(handle.is_initialized()); | 386 EXPECT_FALSE(handle.is_initialized()); |
382 EXPECT_FALSE(handle.socket()); | 387 EXPECT_FALSE(handle.socket()); |
383 | 388 |
384 EXPECT_EQ(ERR_SSL_PROTOCOL_ERROR, callback.WaitForResult()); | 389 EXPECT_EQ(ERR_SSL_PROTOCOL_ERROR, callback.WaitForResult()); |
385 EXPECT_FALSE(handle.is_initialized()); | 390 EXPECT_FALSE(handle.is_initialized()); |
386 EXPECT_FALSE(handle.socket()); | 391 EXPECT_FALSE(handle.socket()); |
387 EXPECT_TRUE(handle.is_ssl_error()); | 392 EXPECT_TRUE(handle.is_ssl_error()); |
388 } | 393 } |
389 | 394 |
390 TEST_P(SSLClientSocketPoolTest, DirectWithNPN) { | 395 TEST_P(SSLClientSocketPoolTest, DirectWithNPN) { |
391 StaticSocketDataProvider data; | 396 StaticSocketDataProvider data; |
392 socket_factory_.AddSocketDataProvider(&data); | 397 socket_factory_.AddSocketDataProvider(&data); |
393 SSLSocketDataProvider ssl(ASYNC, OK); | 398 SSLSocketDataProvider ssl(ASYNC, OK); |
394 ssl.SetNextProto(kProtoHTTP11); | 399 ssl.SetNextProto(kProtoHTTP11); |
395 socket_factory_.AddSSLSocketDataProvider(&ssl); | 400 socket_factory_.AddSSLSocketDataProvider(&ssl); |
396 | 401 |
397 CreatePool(true /* tcp pool */, false, false); | 402 CreatePool(true /* tcp pool */, false, false); |
398 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 403 scoped_refptr<SSLSocketParams> params = |
399 false); | 404 SSLParams(ProxyServer::SCHEME_DIRECT, false); |
400 | 405 |
401 ClientSocketHandle handle; | 406 ClientSocketHandle handle; |
402 TestCompletionCallback callback; | 407 TestCompletionCallback callback; |
403 int rv = handle.Init( | 408 int rv = handle.Init( |
404 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 409 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
405 EXPECT_EQ(ERR_IO_PENDING, rv); | 410 EXPECT_EQ(ERR_IO_PENDING, rv); |
406 EXPECT_FALSE(handle.is_initialized()); | 411 EXPECT_FALSE(handle.is_initialized()); |
407 EXPECT_FALSE(handle.socket()); | 412 EXPECT_FALSE(handle.socket()); |
408 | 413 |
409 EXPECT_EQ(OK, callback.WaitForResult()); | 414 EXPECT_EQ(OK, callback.WaitForResult()); |
410 EXPECT_TRUE(handle.is_initialized()); | 415 EXPECT_TRUE(handle.is_initialized()); |
411 EXPECT_TRUE(handle.socket()); | 416 EXPECT_TRUE(handle.socket()); |
412 TestLoadTimingInfo(handle); | 417 TestLoadTimingInfo(handle); |
413 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); | 418 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); |
414 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); | 419 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); |
415 } | 420 } |
416 | 421 |
417 TEST_P(SSLClientSocketPoolTest, DirectNoSPDY) { | 422 TEST_P(SSLClientSocketPoolTest, DirectNoSPDY) { |
418 StaticSocketDataProvider data; | 423 StaticSocketDataProvider data; |
419 socket_factory_.AddSocketDataProvider(&data); | 424 socket_factory_.AddSocketDataProvider(&data); |
420 SSLSocketDataProvider ssl(ASYNC, OK); | 425 SSLSocketDataProvider ssl(ASYNC, OK); |
421 ssl.SetNextProto(kProtoHTTP11); | 426 ssl.SetNextProto(kProtoHTTP11); |
422 socket_factory_.AddSSLSocketDataProvider(&ssl); | 427 socket_factory_.AddSSLSocketDataProvider(&ssl); |
423 | 428 |
424 CreatePool(true /* tcp pool */, false, false); | 429 CreatePool(true /* tcp pool */, false, false); |
425 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 430 scoped_refptr<SSLSocketParams> params = |
426 true); | 431 SSLParams(ProxyServer::SCHEME_DIRECT, true); |
427 | 432 |
428 ClientSocketHandle handle; | 433 ClientSocketHandle handle; |
429 TestCompletionCallback callback; | 434 TestCompletionCallback callback; |
430 int rv = handle.Init( | 435 int rv = handle.Init( |
431 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 436 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
432 EXPECT_EQ(ERR_IO_PENDING, rv); | 437 EXPECT_EQ(ERR_IO_PENDING, rv); |
433 EXPECT_FALSE(handle.is_initialized()); | 438 EXPECT_FALSE(handle.is_initialized()); |
434 EXPECT_FALSE(handle.socket()); | 439 EXPECT_FALSE(handle.socket()); |
435 | 440 |
436 EXPECT_EQ(ERR_NPN_NEGOTIATION_FAILED, callback.WaitForResult()); | 441 EXPECT_EQ(ERR_NPN_NEGOTIATION_FAILED, callback.WaitForResult()); |
437 EXPECT_FALSE(handle.is_initialized()); | 442 EXPECT_FALSE(handle.is_initialized()); |
438 EXPECT_FALSE(handle.socket()); | 443 EXPECT_FALSE(handle.socket()); |
439 EXPECT_TRUE(handle.is_ssl_error()); | 444 EXPECT_TRUE(handle.is_ssl_error()); |
440 } | 445 } |
441 | 446 |
442 TEST_P(SSLClientSocketPoolTest, DirectGotSPDY) { | 447 TEST_P(SSLClientSocketPoolTest, DirectGotSPDY) { |
443 StaticSocketDataProvider data; | 448 StaticSocketDataProvider data; |
444 socket_factory_.AddSocketDataProvider(&data); | 449 socket_factory_.AddSocketDataProvider(&data); |
445 SSLSocketDataProvider ssl(ASYNC, OK); | 450 SSLSocketDataProvider ssl(ASYNC, OK); |
446 ssl.SetNextProto(GetParam()); | 451 ssl.SetNextProto(GetParam()); |
447 socket_factory_.AddSSLSocketDataProvider(&ssl); | 452 socket_factory_.AddSSLSocketDataProvider(&ssl); |
448 | 453 |
449 CreatePool(true /* tcp pool */, false, false); | 454 CreatePool(true /* tcp pool */, false, false); |
450 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 455 scoped_refptr<SSLSocketParams> params = |
451 true); | 456 SSLParams(ProxyServer::SCHEME_DIRECT, true); |
452 | 457 |
453 ClientSocketHandle handle; | 458 ClientSocketHandle handle; |
454 TestCompletionCallback callback; | 459 TestCompletionCallback callback; |
455 int rv = handle.Init( | 460 int rv = handle.Init( |
456 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 461 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
457 EXPECT_EQ(ERR_IO_PENDING, rv); | 462 EXPECT_EQ(ERR_IO_PENDING, rv); |
458 EXPECT_FALSE(handle.is_initialized()); | 463 EXPECT_FALSE(handle.is_initialized()); |
459 EXPECT_FALSE(handle.socket()); | 464 EXPECT_FALSE(handle.socket()); |
460 | 465 |
461 EXPECT_EQ(OK, callback.WaitForResult()); | 466 EXPECT_EQ(OK, callback.WaitForResult()); |
(...skipping 10 matching lines...) Expand all Loading... |
472 } | 477 } |
473 | 478 |
474 TEST_P(SSLClientSocketPoolTest, DirectGotBonusSPDY) { | 479 TEST_P(SSLClientSocketPoolTest, DirectGotBonusSPDY) { |
475 StaticSocketDataProvider data; | 480 StaticSocketDataProvider data; |
476 socket_factory_.AddSocketDataProvider(&data); | 481 socket_factory_.AddSocketDataProvider(&data); |
477 SSLSocketDataProvider ssl(ASYNC, OK); | 482 SSLSocketDataProvider ssl(ASYNC, OK); |
478 ssl.SetNextProto(GetParam()); | 483 ssl.SetNextProto(GetParam()); |
479 socket_factory_.AddSSLSocketDataProvider(&ssl); | 484 socket_factory_.AddSSLSocketDataProvider(&ssl); |
480 | 485 |
481 CreatePool(true /* tcp pool */, false, false); | 486 CreatePool(true /* tcp pool */, false, false); |
482 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 487 scoped_refptr<SSLSocketParams> params = |
483 true); | 488 SSLParams(ProxyServer::SCHEME_DIRECT, true); |
484 | 489 |
485 ClientSocketHandle handle; | 490 ClientSocketHandle handle; |
486 TestCompletionCallback callback; | 491 TestCompletionCallback callback; |
487 int rv = handle.Init( | 492 int rv = handle.Init( |
488 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 493 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
489 EXPECT_EQ(ERR_IO_PENDING, rv); | 494 EXPECT_EQ(ERR_IO_PENDING, rv); |
490 EXPECT_FALSE(handle.is_initialized()); | 495 EXPECT_FALSE(handle.is_initialized()); |
491 EXPECT_FALSE(handle.socket()); | 496 EXPECT_FALSE(handle.socket()); |
492 | 497 |
493 EXPECT_EQ(OK, callback.WaitForResult()); | 498 EXPECT_EQ(OK, callback.WaitForResult()); |
494 EXPECT_TRUE(handle.is_initialized()); | 499 EXPECT_TRUE(handle.is_initialized()); |
495 EXPECT_TRUE(handle.socket()); | 500 EXPECT_TRUE(handle.socket()); |
496 TestLoadTimingInfo(handle); | 501 TestLoadTimingInfo(handle); |
497 | 502 |
498 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); | 503 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); |
499 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); | 504 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); |
500 std::string proto; | 505 std::string proto; |
501 std::string server_protos; | 506 std::string server_protos; |
502 ssl_socket->GetNextProto(&proto, &server_protos); | 507 ssl_socket->GetNextProto(&proto, &server_protos); |
503 EXPECT_EQ(GetParam(), SSLClientSocket::NextProtoFromString(proto)); | 508 EXPECT_EQ(GetParam(), SSLClientSocket::NextProtoFromString(proto)); |
504 } | 509 } |
505 | 510 |
506 TEST_P(SSLClientSocketPoolTest, SOCKSFail) { | 511 TEST_P(SSLClientSocketPoolTest, SOCKSFail) { |
507 StaticSocketDataProvider data; | 512 StaticSocketDataProvider data; |
508 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); | 513 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); |
509 socket_factory_.AddSocketDataProvider(&data); | 514 socket_factory_.AddSocketDataProvider(&data); |
510 | 515 |
511 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 516 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
512 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, | 517 scoped_refptr<SSLSocketParams> params = |
513 false); | 518 SSLParams(ProxyServer::SCHEME_SOCKS5, false); |
514 | 519 |
515 ClientSocketHandle handle; | 520 ClientSocketHandle handle; |
516 TestCompletionCallback callback; | 521 TestCompletionCallback callback; |
517 int rv = handle.Init( | 522 int rv = handle.Init( |
518 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 523 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
519 EXPECT_EQ(ERR_CONNECTION_FAILED, rv); | 524 EXPECT_EQ(ERR_CONNECTION_FAILED, rv); |
520 EXPECT_FALSE(handle.is_initialized()); | 525 EXPECT_FALSE(handle.is_initialized()); |
521 EXPECT_FALSE(handle.socket()); | 526 EXPECT_FALSE(handle.socket()); |
522 EXPECT_FALSE(handle.is_ssl_error()); | 527 EXPECT_FALSE(handle.is_ssl_error()); |
523 } | 528 } |
524 | 529 |
525 TEST_P(SSLClientSocketPoolTest, SOCKSFailAsync) { | 530 TEST_P(SSLClientSocketPoolTest, SOCKSFailAsync) { |
526 StaticSocketDataProvider data; | 531 StaticSocketDataProvider data; |
527 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); | 532 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); |
528 socket_factory_.AddSocketDataProvider(&data); | 533 socket_factory_.AddSocketDataProvider(&data); |
529 | 534 |
530 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 535 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
531 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, | 536 scoped_refptr<SSLSocketParams> params = |
532 false); | 537 SSLParams(ProxyServer::SCHEME_SOCKS5, false); |
533 | 538 |
534 ClientSocketHandle handle; | 539 ClientSocketHandle handle; |
535 TestCompletionCallback callback; | 540 TestCompletionCallback callback; |
536 int rv = handle.Init( | 541 int rv = handle.Init( |
537 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 542 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
538 EXPECT_EQ(ERR_IO_PENDING, rv); | 543 EXPECT_EQ(ERR_IO_PENDING, rv); |
539 EXPECT_FALSE(handle.is_initialized()); | 544 EXPECT_FALSE(handle.is_initialized()); |
540 EXPECT_FALSE(handle.socket()); | 545 EXPECT_FALSE(handle.socket()); |
541 | 546 |
542 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult()); | 547 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult()); |
543 EXPECT_FALSE(handle.is_initialized()); | 548 EXPECT_FALSE(handle.is_initialized()); |
544 EXPECT_FALSE(handle.socket()); | 549 EXPECT_FALSE(handle.socket()); |
545 EXPECT_FALSE(handle.is_ssl_error()); | 550 EXPECT_FALSE(handle.is_ssl_error()); |
546 } | 551 } |
547 | 552 |
548 TEST_P(SSLClientSocketPoolTest, SOCKSBasic) { | 553 TEST_P(SSLClientSocketPoolTest, SOCKSBasic) { |
549 StaticSocketDataProvider data; | 554 StaticSocketDataProvider data; |
550 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); | 555 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
551 socket_factory_.AddSocketDataProvider(&data); | 556 socket_factory_.AddSocketDataProvider(&data); |
552 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 557 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
553 socket_factory_.AddSSLSocketDataProvider(&ssl); | 558 socket_factory_.AddSSLSocketDataProvider(&ssl); |
554 | 559 |
555 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 560 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
556 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, | 561 scoped_refptr<SSLSocketParams> params = |
557 false); | 562 SSLParams(ProxyServer::SCHEME_SOCKS5, false); |
558 | 563 |
559 ClientSocketHandle handle; | 564 ClientSocketHandle handle; |
560 TestCompletionCallback callback; | 565 TestCompletionCallback callback; |
561 int rv = handle.Init( | 566 int rv = handle.Init( |
562 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 567 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
563 EXPECT_EQ(OK, rv); | 568 EXPECT_EQ(OK, rv); |
564 EXPECT_TRUE(handle.is_initialized()); | 569 EXPECT_TRUE(handle.is_initialized()); |
565 EXPECT_TRUE(handle.socket()); | 570 EXPECT_TRUE(handle.socket()); |
566 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here | 571 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here |
567 // don't go through the real logic, unlike in the HTTP proxy tests. | 572 // don't go through the real logic, unlike in the HTTP proxy tests. |
568 TestLoadTimingInfo(handle); | 573 TestLoadTimingInfo(handle); |
569 } | 574 } |
570 | 575 |
571 // Make sure that SSLConnectJob passes on its priority to its | 576 // Make sure that SSLConnectJob passes on its priority to its |
572 // transport socket on Init (for the SOCKS_PROXY case). | 577 // transport socket on Init (for the SOCKS_PROXY case). |
573 TEST_P(SSLClientSocketPoolTest, SetTransportPriorityOnInitSOCKS) { | 578 TEST_P(SSLClientSocketPoolTest, SetTransportPriorityOnInitSOCKS) { |
574 StaticSocketDataProvider data; | 579 StaticSocketDataProvider data; |
575 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); | 580 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
576 socket_factory_.AddSocketDataProvider(&data); | 581 socket_factory_.AddSocketDataProvider(&data); |
577 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 582 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
578 socket_factory_.AddSSLSocketDataProvider(&ssl); | 583 socket_factory_.AddSSLSocketDataProvider(&ssl); |
579 | 584 |
580 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 585 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
581 scoped_refptr<SSLSocketParams> params = | 586 scoped_refptr<SSLSocketParams> params = |
582 SSLParams(ProxyServer::SCHEME_SOCKS5, false); | 587 SSLParams(ProxyServer::SCHEME_SOCKS5, false); |
583 | 588 |
584 ClientSocketHandle handle; | 589 ClientSocketHandle handle; |
585 TestCompletionCallback callback; | 590 TestCompletionCallback callback; |
586 EXPECT_EQ(OK, handle.Init("a", params, HIGHEST, callback.callback(), | 591 EXPECT_EQ(OK, |
587 pool_.get(), BoundNetLog())); | 592 handle.Init("a", |
| 593 params, |
| 594 HIGHEST, |
| 595 callback.callback(), |
| 596 pool_.get(), |
| 597 BoundNetLog())); |
588 EXPECT_EQ(HIGHEST, transport_socket_pool_.last_request_priority()); | 598 EXPECT_EQ(HIGHEST, transport_socket_pool_.last_request_priority()); |
589 } | 599 } |
590 | 600 |
591 TEST_P(SSLClientSocketPoolTest, SOCKSBasicAsync) { | 601 TEST_P(SSLClientSocketPoolTest, SOCKSBasicAsync) { |
592 StaticSocketDataProvider data; | 602 StaticSocketDataProvider data; |
593 socket_factory_.AddSocketDataProvider(&data); | 603 socket_factory_.AddSocketDataProvider(&data); |
594 SSLSocketDataProvider ssl(ASYNC, OK); | 604 SSLSocketDataProvider ssl(ASYNC, OK); |
595 socket_factory_.AddSSLSocketDataProvider(&ssl); | 605 socket_factory_.AddSSLSocketDataProvider(&ssl); |
596 | 606 |
597 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 607 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
598 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, | 608 scoped_refptr<SSLSocketParams> params = |
599 false); | 609 SSLParams(ProxyServer::SCHEME_SOCKS5, false); |
600 | 610 |
601 ClientSocketHandle handle; | 611 ClientSocketHandle handle; |
602 TestCompletionCallback callback; | 612 TestCompletionCallback callback; |
603 int rv = handle.Init( | 613 int rv = handle.Init( |
604 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 614 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
605 EXPECT_EQ(ERR_IO_PENDING, rv); | 615 EXPECT_EQ(ERR_IO_PENDING, rv); |
606 EXPECT_FALSE(handle.is_initialized()); | 616 EXPECT_FALSE(handle.is_initialized()); |
607 EXPECT_FALSE(handle.socket()); | 617 EXPECT_FALSE(handle.socket()); |
608 | 618 |
609 EXPECT_EQ(OK, callback.WaitForResult()); | 619 EXPECT_EQ(OK, callback.WaitForResult()); |
610 EXPECT_TRUE(handle.is_initialized()); | 620 EXPECT_TRUE(handle.is_initialized()); |
611 EXPECT_TRUE(handle.socket()); | 621 EXPECT_TRUE(handle.socket()); |
612 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here | 622 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here |
613 // don't go through the real logic, unlike in the HTTP proxy tests. | 623 // don't go through the real logic, unlike in the HTTP proxy tests. |
614 TestLoadTimingInfo(handle); | 624 TestLoadTimingInfo(handle); |
615 } | 625 } |
616 | 626 |
617 TEST_P(SSLClientSocketPoolTest, HttpProxyFail) { | 627 TEST_P(SSLClientSocketPoolTest, HttpProxyFail) { |
618 StaticSocketDataProvider data; | 628 StaticSocketDataProvider data; |
619 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); | 629 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); |
620 socket_factory_.AddSocketDataProvider(&data); | 630 socket_factory_.AddSocketDataProvider(&data); |
621 | 631 |
622 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 632 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
623 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, | 633 scoped_refptr<SSLSocketParams> params = |
624 false); | 634 SSLParams(ProxyServer::SCHEME_HTTP, false); |
625 | 635 |
626 ClientSocketHandle handle; | 636 ClientSocketHandle handle; |
627 TestCompletionCallback callback; | 637 TestCompletionCallback callback; |
628 int rv = handle.Init( | 638 int rv = handle.Init( |
629 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 639 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
630 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, rv); | 640 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, rv); |
631 EXPECT_FALSE(handle.is_initialized()); | 641 EXPECT_FALSE(handle.is_initialized()); |
632 EXPECT_FALSE(handle.socket()); | 642 EXPECT_FALSE(handle.socket()); |
633 EXPECT_FALSE(handle.is_ssl_error()); | 643 EXPECT_FALSE(handle.is_ssl_error()); |
634 } | 644 } |
635 | 645 |
636 TEST_P(SSLClientSocketPoolTest, HttpProxyFailAsync) { | 646 TEST_P(SSLClientSocketPoolTest, HttpProxyFailAsync) { |
637 StaticSocketDataProvider data; | 647 StaticSocketDataProvider data; |
638 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); | 648 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); |
639 socket_factory_.AddSocketDataProvider(&data); | 649 socket_factory_.AddSocketDataProvider(&data); |
640 | 650 |
641 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 651 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
642 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, | 652 scoped_refptr<SSLSocketParams> params = |
643 false); | 653 SSLParams(ProxyServer::SCHEME_HTTP, false); |
644 | 654 |
645 ClientSocketHandle handle; | 655 ClientSocketHandle handle; |
646 TestCompletionCallback callback; | 656 TestCompletionCallback callback; |
647 int rv = handle.Init( | 657 int rv = handle.Init( |
648 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 658 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
649 EXPECT_EQ(ERR_IO_PENDING, rv); | 659 EXPECT_EQ(ERR_IO_PENDING, rv); |
650 EXPECT_FALSE(handle.is_initialized()); | 660 EXPECT_FALSE(handle.is_initialized()); |
651 EXPECT_FALSE(handle.socket()); | 661 EXPECT_FALSE(handle.socket()); |
652 | 662 |
653 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, callback.WaitForResult()); | 663 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, callback.WaitForResult()); |
654 EXPECT_FALSE(handle.is_initialized()); | 664 EXPECT_FALSE(handle.is_initialized()); |
655 EXPECT_FALSE(handle.socket()); | 665 EXPECT_FALSE(handle.socket()); |
656 EXPECT_FALSE(handle.is_ssl_error()); | 666 EXPECT_FALSE(handle.is_ssl_error()); |
657 } | 667 } |
658 | 668 |
659 TEST_P(SSLClientSocketPoolTest, HttpProxyBasic) { | 669 TEST_P(SSLClientSocketPoolTest, HttpProxyBasic) { |
660 MockWrite writes[] = { | 670 MockWrite writes[] = { |
661 MockWrite(SYNCHRONOUS, | 671 MockWrite(SYNCHRONOUS, |
662 "CONNECT host:80 HTTP/1.1\r\n" | 672 "CONNECT host:80 HTTP/1.1\r\n" |
663 "Host: host\r\n" | 673 "Host: host\r\n" |
664 "Proxy-Connection: keep-alive\r\n" | 674 "Proxy-Connection: keep-alive\r\n" |
665 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 675 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
666 }; | 676 }; |
667 MockRead reads[] = { | 677 MockRead reads[] = { |
668 MockRead(SYNCHRONOUS, "HTTP/1.1 200 Connection Established\r\n\r\n"), | 678 MockRead(SYNCHRONOUS, "HTTP/1.1 200 Connection Established\r\n\r\n"), |
669 }; | 679 }; |
670 StaticSocketDataProvider data(reads, arraysize(reads), writes, | 680 StaticSocketDataProvider data( |
671 arraysize(writes)); | 681 reads, arraysize(reads), writes, arraysize(writes)); |
672 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); | 682 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
673 socket_factory_.AddSocketDataProvider(&data); | 683 socket_factory_.AddSocketDataProvider(&data); |
674 AddAuthToCache(); | 684 AddAuthToCache(); |
675 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 685 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
676 socket_factory_.AddSSLSocketDataProvider(&ssl); | 686 socket_factory_.AddSSLSocketDataProvider(&ssl); |
677 | 687 |
678 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 688 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
679 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, | 689 scoped_refptr<SSLSocketParams> params = |
680 false); | 690 SSLParams(ProxyServer::SCHEME_HTTP, false); |
681 | 691 |
682 ClientSocketHandle handle; | 692 ClientSocketHandle handle; |
683 TestCompletionCallback callback; | 693 TestCompletionCallback callback; |
684 int rv = handle.Init( | 694 int rv = handle.Init( |
685 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 695 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
686 EXPECT_EQ(OK, rv); | 696 EXPECT_EQ(OK, rv); |
687 EXPECT_TRUE(handle.is_initialized()); | 697 EXPECT_TRUE(handle.is_initialized()); |
688 EXPECT_TRUE(handle.socket()); | 698 EXPECT_TRUE(handle.socket()); |
689 TestLoadTimingInfoNoDns(handle); | 699 TestLoadTimingInfoNoDns(handle); |
690 } | 700 } |
691 | 701 |
692 // Make sure that SSLConnectJob passes on its priority to its | 702 // Make sure that SSLConnectJob passes on its priority to its |
693 // transport socket on Init (for the HTTP_PROXY case). | 703 // transport socket on Init (for the HTTP_PROXY case). |
694 TEST_P(SSLClientSocketPoolTest, SetTransportPriorityOnInitHTTP) { | 704 TEST_P(SSLClientSocketPoolTest, SetTransportPriorityOnInitHTTP) { |
695 MockWrite writes[] = { | 705 MockWrite writes[] = { |
696 MockWrite(SYNCHRONOUS, | 706 MockWrite(SYNCHRONOUS, |
697 "CONNECT host:80 HTTP/1.1\r\n" | 707 "CONNECT host:80 HTTP/1.1\r\n" |
698 "Host: host\r\n" | 708 "Host: host\r\n" |
699 "Proxy-Connection: keep-alive\r\n" | 709 "Proxy-Connection: keep-alive\r\n" |
700 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 710 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
701 }; | 711 }; |
702 MockRead reads[] = { | 712 MockRead reads[] = { |
703 MockRead(SYNCHRONOUS, "HTTP/1.1 200 Connection Established\r\n\r\n"), | 713 MockRead(SYNCHRONOUS, "HTTP/1.1 200 Connection Established\r\n\r\n"), |
704 }; | 714 }; |
705 StaticSocketDataProvider data(reads, arraysize(reads), writes, | 715 StaticSocketDataProvider data( |
706 arraysize(writes)); | 716 reads, arraysize(reads), writes, arraysize(writes)); |
707 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); | 717 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
708 socket_factory_.AddSocketDataProvider(&data); | 718 socket_factory_.AddSocketDataProvider(&data); |
709 AddAuthToCache(); | 719 AddAuthToCache(); |
710 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 720 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
711 socket_factory_.AddSSLSocketDataProvider(&ssl); | 721 socket_factory_.AddSSLSocketDataProvider(&ssl); |
712 | 722 |
713 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 723 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
714 scoped_refptr<SSLSocketParams> params = | 724 scoped_refptr<SSLSocketParams> params = |
715 SSLParams(ProxyServer::SCHEME_HTTP, false); | 725 SSLParams(ProxyServer::SCHEME_HTTP, false); |
716 | 726 |
717 ClientSocketHandle handle; | 727 ClientSocketHandle handle; |
718 TestCompletionCallback callback; | 728 TestCompletionCallback callback; |
719 EXPECT_EQ(OK, handle.Init("a", params, HIGHEST, callback.callback(), | 729 EXPECT_EQ(OK, |
720 pool_.get(), BoundNetLog())); | 730 handle.Init("a", |
| 731 params, |
| 732 HIGHEST, |
| 733 callback.callback(), |
| 734 pool_.get(), |
| 735 BoundNetLog())); |
721 EXPECT_EQ(HIGHEST, transport_socket_pool_.last_request_priority()); | 736 EXPECT_EQ(HIGHEST, transport_socket_pool_.last_request_priority()); |
722 } | 737 } |
723 | 738 |
724 TEST_P(SSLClientSocketPoolTest, HttpProxyBasicAsync) { | 739 TEST_P(SSLClientSocketPoolTest, HttpProxyBasicAsync) { |
725 MockWrite writes[] = { | 740 MockWrite writes[] = { |
726 MockWrite("CONNECT host:80 HTTP/1.1\r\n" | 741 MockWrite( |
727 "Host: host\r\n" | 742 "CONNECT host:80 HTTP/1.1\r\n" |
728 "Proxy-Connection: keep-alive\r\n" | 743 "Host: host\r\n" |
729 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 744 "Proxy-Connection: keep-alive\r\n" |
| 745 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
730 }; | 746 }; |
731 MockRead reads[] = { | 747 MockRead reads[] = { |
732 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), | 748 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), |
733 }; | 749 }; |
734 StaticSocketDataProvider data(reads, arraysize(reads), writes, | 750 StaticSocketDataProvider data( |
735 arraysize(writes)); | 751 reads, arraysize(reads), writes, arraysize(writes)); |
736 socket_factory_.AddSocketDataProvider(&data); | 752 socket_factory_.AddSocketDataProvider(&data); |
737 AddAuthToCache(); | 753 AddAuthToCache(); |
738 SSLSocketDataProvider ssl(ASYNC, OK); | 754 SSLSocketDataProvider ssl(ASYNC, OK); |
739 socket_factory_.AddSSLSocketDataProvider(&ssl); | 755 socket_factory_.AddSSLSocketDataProvider(&ssl); |
740 | 756 |
741 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 757 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
742 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, | 758 scoped_refptr<SSLSocketParams> params = |
743 false); | 759 SSLParams(ProxyServer::SCHEME_HTTP, false); |
744 | 760 |
745 ClientSocketHandle handle; | 761 ClientSocketHandle handle; |
746 TestCompletionCallback callback; | 762 TestCompletionCallback callback; |
747 int rv = handle.Init( | 763 int rv = handle.Init( |
748 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 764 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
749 EXPECT_EQ(ERR_IO_PENDING, rv); | 765 EXPECT_EQ(ERR_IO_PENDING, rv); |
750 EXPECT_FALSE(handle.is_initialized()); | 766 EXPECT_FALSE(handle.is_initialized()); |
751 EXPECT_FALSE(handle.socket()); | 767 EXPECT_FALSE(handle.socket()); |
752 | 768 |
753 EXPECT_EQ(OK, callback.WaitForResult()); | 769 EXPECT_EQ(OK, callback.WaitForResult()); |
754 EXPECT_TRUE(handle.is_initialized()); | 770 EXPECT_TRUE(handle.is_initialized()); |
755 EXPECT_TRUE(handle.socket()); | 771 EXPECT_TRUE(handle.socket()); |
756 TestLoadTimingInfoNoDns(handle); | 772 TestLoadTimingInfoNoDns(handle); |
757 } | 773 } |
758 | 774 |
759 TEST_P(SSLClientSocketPoolTest, NeedProxyAuth) { | 775 TEST_P(SSLClientSocketPoolTest, NeedProxyAuth) { |
760 MockWrite writes[] = { | 776 MockWrite writes[] = { |
761 MockWrite("CONNECT host:80 HTTP/1.1\r\n" | 777 MockWrite( |
762 "Host: host\r\n" | 778 "CONNECT host:80 HTTP/1.1\r\n" |
763 "Proxy-Connection: keep-alive\r\n\r\n"), | 779 "Host: host\r\n" |
| 780 "Proxy-Connection: keep-alive\r\n\r\n"), |
764 }; | 781 }; |
765 MockRead reads[] = { | 782 MockRead reads[] = { |
766 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), | 783 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), |
767 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 784 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
768 MockRead("Content-Length: 10\r\n\r\n"), | 785 MockRead("Content-Length: 10\r\n\r\n"), MockRead("0123456789"), |
769 MockRead("0123456789"), | |
770 }; | 786 }; |
771 StaticSocketDataProvider data(reads, arraysize(reads), writes, | 787 StaticSocketDataProvider data( |
772 arraysize(writes)); | 788 reads, arraysize(reads), writes, arraysize(writes)); |
773 socket_factory_.AddSocketDataProvider(&data); | 789 socket_factory_.AddSocketDataProvider(&data); |
774 SSLSocketDataProvider ssl(ASYNC, OK); | 790 SSLSocketDataProvider ssl(ASYNC, OK); |
775 socket_factory_.AddSSLSocketDataProvider(&ssl); | 791 socket_factory_.AddSSLSocketDataProvider(&ssl); |
776 | 792 |
777 CreatePool(false, true /* http proxy pool */, true /* socks pool */); | 793 CreatePool(false, true /* http proxy pool */, true /* socks pool */); |
778 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, | 794 scoped_refptr<SSLSocketParams> params = |
779 false); | 795 SSLParams(ProxyServer::SCHEME_HTTP, false); |
780 | 796 |
781 ClientSocketHandle handle; | 797 ClientSocketHandle handle; |
782 TestCompletionCallback callback; | 798 TestCompletionCallback callback; |
783 int rv = handle.Init( | 799 int rv = handle.Init( |
784 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); | 800 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); |
785 EXPECT_EQ(ERR_IO_PENDING, rv); | 801 EXPECT_EQ(ERR_IO_PENDING, rv); |
786 EXPECT_FALSE(handle.is_initialized()); | 802 EXPECT_FALSE(handle.is_initialized()); |
787 EXPECT_FALSE(handle.socket()); | 803 EXPECT_FALSE(handle.socket()); |
788 | 804 |
789 EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, callback.WaitForResult()); | 805 EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, callback.WaitForResult()); |
790 EXPECT_FALSE(handle.is_initialized()); | 806 EXPECT_FALSE(handle.is_initialized()); |
791 EXPECT_FALSE(handle.socket()); | 807 EXPECT_FALSE(handle.socket()); |
792 EXPECT_FALSE(handle.is_ssl_error()); | 808 EXPECT_FALSE(handle.is_ssl_error()); |
793 const HttpResponseInfo& tunnel_info = handle.ssl_error_response_info(); | 809 const HttpResponseInfo& tunnel_info = handle.ssl_error_response_info(); |
794 EXPECT_EQ(tunnel_info.headers->response_code(), 407); | 810 EXPECT_EQ(tunnel_info.headers->response_code(), 407); |
795 scoped_ptr<ClientSocketHandle> tunnel_handle( | 811 scoped_ptr<ClientSocketHandle> tunnel_handle( |
796 handle.release_pending_http_proxy_connection()); | 812 handle.release_pending_http_proxy_connection()); |
797 EXPECT_TRUE(tunnel_handle->socket()); | 813 EXPECT_TRUE(tunnel_handle->socket()); |
798 EXPECT_FALSE(tunnel_handle->socket()->IsConnected()); | 814 EXPECT_FALSE(tunnel_handle->socket()->IsConnected()); |
799 } | 815 } |
800 | 816 |
801 TEST_P(SSLClientSocketPoolTest, IPPooling) { | 817 TEST_P(SSLClientSocketPoolTest, IPPooling) { |
802 const int kTestPort = 80; | 818 const int kTestPort = 80; |
803 struct TestHosts { | 819 struct TestHosts { |
804 std::string name; | 820 std::string name; |
805 std::string iplist; | 821 std::string iplist; |
806 SpdySessionKey key; | 822 SpdySessionKey key; |
807 AddressList addresses; | 823 AddressList addresses; |
808 } test_hosts[] = { | 824 } test_hosts[] = { |
809 { "www.webkit.org", "192.0.2.33,192.168.0.1,192.168.0.5" }, | 825 {"www.webkit.org", "192.0.2.33,192.168.0.1,192.168.0.5"}, |
810 { "code.google.com", "192.168.0.2,192.168.0.3,192.168.0.5" }, | 826 {"code.google.com", "192.168.0.2,192.168.0.3,192.168.0.5"}, |
811 { "js.webkit.org", "192.168.0.4,192.168.0.1,192.0.2.33" }, | 827 {"js.webkit.org", "192.168.0.4,192.168.0.1,192.0.2.33"}, |
812 }; | 828 }; |
813 | 829 |
814 host_resolver_.set_synchronous_mode(true); | 830 host_resolver_.set_synchronous_mode(true); |
815 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_hosts); i++) { | 831 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_hosts); i++) { |
816 host_resolver_.rules()->AddIPLiteralRule( | 832 host_resolver_.rules()->AddIPLiteralRule( |
817 test_hosts[i].name, test_hosts[i].iplist, std::string()); | 833 test_hosts[i].name, test_hosts[i].iplist, std::string()); |
818 | 834 |
819 // This test requires that the HostResolver cache be populated. Normal | 835 // This test requires that the HostResolver cache be populated. Normal |
820 // code would have done this already, but we do it manually. | 836 // code would have done this already, but we do it manually. |
821 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); | 837 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); |
822 host_resolver_.Resolve(info, | 838 host_resolver_.Resolve(info, |
823 DEFAULT_PRIORITY, | 839 DEFAULT_PRIORITY, |
824 &test_hosts[i].addresses, | 840 &test_hosts[i].addresses, |
825 CompletionCallback(), | 841 CompletionCallback(), |
826 NULL, | 842 NULL, |
827 BoundNetLog()); | 843 BoundNetLog()); |
828 | 844 |
829 // Setup a SpdySessionKey | 845 // Setup a SpdySessionKey |
830 test_hosts[i].key = SpdySessionKey( | 846 test_hosts[i].key = |
831 HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct(), | 847 SpdySessionKey(HostPortPair(test_hosts[i].name, kTestPort), |
832 PRIVACY_MODE_DISABLED); | 848 ProxyServer::Direct(), |
| 849 PRIVACY_MODE_DISABLED); |
833 } | 850 } |
834 | 851 |
835 MockRead reads[] = { | 852 MockRead reads[] = { |
836 MockRead(ASYNC, ERR_IO_PENDING), | 853 MockRead(ASYNC, ERR_IO_PENDING), |
837 }; | 854 }; |
838 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); | 855 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
839 socket_factory_.AddSocketDataProvider(&data); | 856 socket_factory_.AddSocketDataProvider(&data); |
840 SSLSocketDataProvider ssl(ASYNC, OK); | 857 SSLSocketDataProvider ssl(ASYNC, OK); |
841 ssl.cert = X509Certificate::CreateFromBytes( | 858 ssl.cert = X509Certificate::CreateFromBytes( |
842 reinterpret_cast<const char*>(webkit_der), sizeof(webkit_der)); | 859 reinterpret_cast<const char*>(webkit_der), sizeof(webkit_der)); |
843 ssl.SetNextProto(GetParam()); | 860 ssl.SetNextProto(GetParam()); |
844 socket_factory_.AddSSLSocketDataProvider(&ssl); | 861 socket_factory_.AddSSLSocketDataProvider(&ssl); |
845 | 862 |
846 CreatePool(true /* tcp pool */, false, false); | 863 CreatePool(true /* tcp pool */, false, false); |
847 base::WeakPtr<SpdySession> spdy_session = | 864 base::WeakPtr<SpdySession> spdy_session = |
848 CreateSecureSpdySession(session_, test_hosts[0].key, BoundNetLog()); | 865 CreateSecureSpdySession(session_, test_hosts[0].key, BoundNetLog()); |
849 | 866 |
850 EXPECT_TRUE( | 867 EXPECT_TRUE(HasSpdySession(session_->spdy_session_pool(), test_hosts[0].key)); |
851 HasSpdySession(session_->spdy_session_pool(), test_hosts[0].key)); | |
852 EXPECT_FALSE( | 868 EXPECT_FALSE( |
853 HasSpdySession(session_->spdy_session_pool(), test_hosts[1].key)); | 869 HasSpdySession(session_->spdy_session_pool(), test_hosts[1].key)); |
854 EXPECT_TRUE( | 870 EXPECT_TRUE(HasSpdySession(session_->spdy_session_pool(), test_hosts[2].key)); |
855 HasSpdySession(session_->spdy_session_pool(), test_hosts[2].key)); | |
856 | 871 |
857 session_->spdy_session_pool()->CloseAllSessions(); | 872 session_->spdy_session_pool()->CloseAllSessions(); |
858 } | 873 } |
859 | 874 |
860 void SSLClientSocketPoolTest::TestIPPoolingDisabled( | 875 void SSLClientSocketPoolTest::TestIPPoolingDisabled( |
861 SSLSocketDataProvider* ssl) { | 876 SSLSocketDataProvider* ssl) { |
862 const int kTestPort = 80; | 877 const int kTestPort = 80; |
863 struct TestHosts { | 878 struct TestHosts { |
864 std::string name; | 879 std::string name; |
865 std::string iplist; | 880 std::string iplist; |
866 SpdySessionKey key; | 881 SpdySessionKey key; |
867 AddressList addresses; | 882 AddressList addresses; |
868 } test_hosts[] = { | 883 } test_hosts[] = { |
869 { "www.webkit.org", "192.0.2.33,192.168.0.1,192.168.0.5" }, | 884 {"www.webkit.org", "192.0.2.33,192.168.0.1,192.168.0.5"}, |
870 { "js.webkit.com", "192.168.0.4,192.168.0.1,192.0.2.33" }, | 885 {"js.webkit.com", "192.168.0.4,192.168.0.1,192.0.2.33"}, |
871 }; | 886 }; |
872 | 887 |
873 TestCompletionCallback callback; | 888 TestCompletionCallback callback; |
874 int rv; | 889 int rv; |
875 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_hosts); i++) { | 890 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_hosts); i++) { |
876 host_resolver_.rules()->AddIPLiteralRule( | 891 host_resolver_.rules()->AddIPLiteralRule( |
877 test_hosts[i].name, test_hosts[i].iplist, std::string()); | 892 test_hosts[i].name, test_hosts[i].iplist, std::string()); |
878 | 893 |
879 // This test requires that the HostResolver cache be populated. Normal | 894 // This test requires that the HostResolver cache be populated. Normal |
880 // code would have done this already, but we do it manually. | 895 // code would have done this already, but we do it manually. |
881 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); | 896 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); |
882 rv = host_resolver_.Resolve(info, | 897 rv = host_resolver_.Resolve(info, |
883 DEFAULT_PRIORITY, | 898 DEFAULT_PRIORITY, |
884 &test_hosts[i].addresses, | 899 &test_hosts[i].addresses, |
885 callback.callback(), | 900 callback.callback(), |
886 NULL, | 901 NULL, |
887 BoundNetLog()); | 902 BoundNetLog()); |
888 EXPECT_EQ(OK, callback.GetResult(rv)); | 903 EXPECT_EQ(OK, callback.GetResult(rv)); |
889 | 904 |
890 // Setup a SpdySessionKey | 905 // Setup a SpdySessionKey |
891 test_hosts[i].key = SpdySessionKey( | 906 test_hosts[i].key = |
892 HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct(), | 907 SpdySessionKey(HostPortPair(test_hosts[i].name, kTestPort), |
893 PRIVACY_MODE_DISABLED); | 908 ProxyServer::Direct(), |
| 909 PRIVACY_MODE_DISABLED); |
894 } | 910 } |
895 | 911 |
896 MockRead reads[] = { | 912 MockRead reads[] = { |
897 MockRead(ASYNC, ERR_IO_PENDING), | 913 MockRead(ASYNC, ERR_IO_PENDING), |
898 }; | 914 }; |
899 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); | 915 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
900 socket_factory_.AddSocketDataProvider(&data); | 916 socket_factory_.AddSocketDataProvider(&data); |
901 socket_factory_.AddSSLSocketDataProvider(ssl); | 917 socket_factory_.AddSSLSocketDataProvider(ssl); |
902 | 918 |
903 CreatePool(true /* tcp pool */, false, false); | 919 CreatePool(true /* tcp pool */, false, false); |
904 base::WeakPtr<SpdySession> spdy_session = | 920 base::WeakPtr<SpdySession> spdy_session = |
905 CreateSecureSpdySession(session_, test_hosts[0].key, BoundNetLog()); | 921 CreateSecureSpdySession(session_, test_hosts[0].key, BoundNetLog()); |
906 | 922 |
907 EXPECT_TRUE( | 923 EXPECT_TRUE(HasSpdySession(session_->spdy_session_pool(), test_hosts[0].key)); |
908 HasSpdySession(session_->spdy_session_pool(), test_hosts[0].key)); | |
909 EXPECT_FALSE( | 924 EXPECT_FALSE( |
910 HasSpdySession(session_->spdy_session_pool(), test_hosts[1].key)); | 925 HasSpdySession(session_->spdy_session_pool(), test_hosts[1].key)); |
911 | 926 |
912 session_->spdy_session_pool()->CloseAllSessions(); | 927 session_->spdy_session_pool()->CloseAllSessions(); |
913 } | 928 } |
914 | 929 |
915 // Verifies that an SSL connection with client authentication disables SPDY IP | 930 // Verifies that an SSL connection with client authentication disables SPDY IP |
916 // pooling. | 931 // pooling. |
917 TEST_P(SSLClientSocketPoolTest, IPPoolingClientCert) { | 932 TEST_P(SSLClientSocketPoolTest, IPPoolingClientCert) { |
918 SSLSocketDataProvider ssl(ASYNC, OK); | 933 SSLSocketDataProvider ssl(ASYNC, OK); |
(...skipping 10 matching lines...) Expand all Loading... |
929 ssl.channel_id_sent = true; | 944 ssl.channel_id_sent = true; |
930 ssl.SetNextProto(GetParam()); | 945 ssl.SetNextProto(GetParam()); |
931 TestIPPoolingDisabled(&ssl); | 946 TestIPPoolingDisabled(&ssl); |
932 } | 947 } |
933 | 948 |
934 // It would be nice to also test the timeouts in SSLClientSocketPool. | 949 // It would be nice to also test the timeouts in SSLClientSocketPool. |
935 | 950 |
936 } // namespace | 951 } // namespace |
937 | 952 |
938 } // namespace net | 953 } // namespace net |
OLD | NEW |