Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Side by Side Diff: net/socket/ssl_client_socket_pool_unittest.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698