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 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 AuthCredentials(kFoo, kBar), | 204 AuthCredentials(kFoo, kBar), |
205 "/"); | 205 "/"); |
206 } | 206 } |
207 | 207 |
208 scoped_refptr<TransportSocketParams> CreateHttpProxyParams() const { | 208 scoped_refptr<TransportSocketParams> CreateHttpProxyParams() const { |
209 if (GetParam().proxy_type != HTTP) | 209 if (GetParam().proxy_type != HTTP) |
210 return NULL; | 210 return NULL; |
211 return new TransportSocketParams( | 211 return new TransportSocketParams( |
212 HostPortPair(kHttpProxyHost, 80), | 212 HostPortPair(kHttpProxyHost, 80), |
213 false, | 213 false, |
214 false, | |
215 OnHostResolutionCallback(), | 214 OnHostResolutionCallback(), |
216 TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT); | 215 TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT); |
217 } | 216 } |
218 | 217 |
219 scoped_refptr<SSLSocketParams> CreateHttpsProxyParams() const { | 218 scoped_refptr<SSLSocketParams> CreateHttpsProxyParams() const { |
220 if (GetParam().proxy_type == HTTP) | 219 if (GetParam().proxy_type == HTTP) |
221 return NULL; | 220 return NULL; |
222 return new SSLSocketParams( | 221 return new SSLSocketParams( |
223 new TransportSocketParams( | 222 new TransportSocketParams( |
224 HostPortPair(kHttpsProxyHost, 443), | 223 HostPortPair(kHttpsProxyHost, 443), |
225 false, | 224 false, |
226 false, | |
227 OnHostResolutionCallback(), | 225 OnHostResolutionCallback(), |
228 TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT), | 226 TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT), |
229 NULL, | 227 NULL, |
230 NULL, | 228 NULL, |
231 HostPortPair(kHttpsProxyHost, 443), | 229 HostPortPair(kHttpsProxyHost, 443), |
232 SSLConfig(), | 230 SSLConfig(), |
233 PRIVACY_MODE_DISABLED, | 231 PRIVACY_MODE_DISABLED, |
234 0, | 232 0, |
235 false); | 233 false); |
236 } | 234 } |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
340 HttpProxyClientSocketPoolTestParams(HTTPS, kProtoHTTP2, false), | 338 HttpProxyClientSocketPoolTestParams(HTTPS, kProtoHTTP2, false), |
341 HttpProxyClientSocketPoolTestParams(HTTPS, kProtoHTTP2, true), | 339 HttpProxyClientSocketPoolTestParams(HTTPS, kProtoHTTP2, true), |
342 HttpProxyClientSocketPoolTestParams(SPDY, kProtoHTTP2, false), | 340 HttpProxyClientSocketPoolTestParams(SPDY, kProtoHTTP2, false), |
343 HttpProxyClientSocketPoolTestParams(SPDY, kProtoHTTP2, true))); | 341 HttpProxyClientSocketPoolTestParams(SPDY, kProtoHTTP2, true))); |
344 | 342 |
345 TEST_P(HttpProxyClientSocketPoolTest, NoTunnel) { | 343 TEST_P(HttpProxyClientSocketPoolTest, NoTunnel) { |
346 Initialize(NULL, 0, NULL, 0, NULL, 0, NULL, 0); | 344 Initialize(NULL, 0, NULL, 0, NULL, 0, NULL, 0); |
347 | 345 |
348 scoped_ptr<TestProxyDelegate> proxy_delegate(new TestProxyDelegate()); | 346 scoped_ptr<TestProxyDelegate> proxy_delegate(new TestProxyDelegate()); |
349 int rv = handle_.Init("a", CreateNoTunnelParams(proxy_delegate.get()), LOW, | 347 int rv = handle_.Init("a", CreateNoTunnelParams(proxy_delegate.get()), LOW, |
| 348 ClientSocketPool::RespectLimits::ENABLED, |
350 CompletionCallback(), &pool_, BoundNetLog()); | 349 CompletionCallback(), &pool_, BoundNetLog()); |
351 EXPECT_EQ(OK, rv); | 350 EXPECT_EQ(OK, rv); |
352 EXPECT_TRUE(handle_.is_initialized()); | 351 EXPECT_TRUE(handle_.is_initialized()); |
353 ASSERT_TRUE(handle_.socket()); | 352 ASSERT_TRUE(handle_.socket()); |
354 EXPECT_TRUE(handle_.socket()->IsConnected()); | 353 EXPECT_TRUE(handle_.socket()->IsConnected()); |
355 EXPECT_FALSE(proxy_delegate->on_before_tunnel_request_called()); | 354 EXPECT_FALSE(proxy_delegate->on_before_tunnel_request_called()); |
356 EXPECT_FALSE(proxy_delegate->on_tunnel_headers_received_called()); | 355 EXPECT_FALSE(proxy_delegate->on_tunnel_headers_received_called()); |
357 EXPECT_TRUE(proxy_delegate->on_tunnel_request_completed_called()); | 356 EXPECT_TRUE(proxy_delegate->on_tunnel_request_completed_called()); |
358 } | 357 } |
359 | 358 |
360 // Make sure that HttpProxyConnectJob passes on its priority to its | 359 // Make sure that HttpProxyConnectJob passes on its priority to its |
361 // (non-SSL) socket request on Init. | 360 // (non-SSL) socket request on Init. |
362 TEST_P(HttpProxyClientSocketPoolTest, SetSocketRequestPriorityOnInit) { | 361 TEST_P(HttpProxyClientSocketPoolTest, SetSocketRequestPriorityOnInit) { |
363 Initialize(NULL, 0, NULL, 0, NULL, 0, NULL, 0); | 362 Initialize(NULL, 0, NULL, 0, NULL, 0, NULL, 0); |
364 EXPECT_EQ(OK, | 363 EXPECT_EQ(OK, handle_.Init("a", CreateNoTunnelParams(NULL), HIGHEST, |
365 handle_.Init("a", CreateNoTunnelParams(NULL), HIGHEST, | 364 ClientSocketPool::RespectLimits::ENABLED, |
366 CompletionCallback(), &pool_, BoundNetLog())); | 365 CompletionCallback(), &pool_, BoundNetLog())); |
367 EXPECT_EQ(HIGHEST, GetLastTransportRequestPriority()); | 366 EXPECT_EQ(HIGHEST, GetLastTransportRequestPriority()); |
368 } | 367 } |
369 | 368 |
370 TEST_P(HttpProxyClientSocketPoolTest, NeedAuth) { | 369 TEST_P(HttpProxyClientSocketPoolTest, NeedAuth) { |
371 MockWrite writes[] = { | 370 MockWrite writes[] = { |
372 MockWrite(ASYNC, 0, | 371 MockWrite(ASYNC, 0, |
373 "CONNECT www.google.com:443 HTTP/1.1\r\n" | 372 "CONNECT www.google.com:443 HTTP/1.1\r\n" |
374 "Host: www.google.com:443\r\n" | 373 "Host: www.google.com:443\r\n" |
375 "Proxy-Connection: keep-alive\r\n\r\n"), | 374 "Proxy-Connection: keep-alive\r\n\r\n"), |
376 }; | 375 }; |
(...skipping 21 matching lines...) Expand all Loading... |
398 MockRead spdy_reads[] = { | 397 MockRead spdy_reads[] = { |
399 CreateMockRead(*resp, 1, ASYNC), | 398 CreateMockRead(*resp, 1, ASYNC), |
400 MockRead(ASYNC, 0, 3) | 399 MockRead(ASYNC, 0, 3) |
401 }; | 400 }; |
402 | 401 |
403 Initialize(reads, arraysize(reads), writes, arraysize(writes), | 402 Initialize(reads, arraysize(reads), writes, arraysize(writes), |
404 spdy_reads, arraysize(spdy_reads), spdy_writes, | 403 spdy_reads, arraysize(spdy_reads), spdy_writes, |
405 arraysize(spdy_writes)); | 404 arraysize(spdy_writes)); |
406 | 405 |
407 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, | 406 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, |
| 407 ClientSocketPool::RespectLimits::ENABLED, |
408 callback_.callback(), &pool_, BoundNetLog()); | 408 callback_.callback(), &pool_, BoundNetLog()); |
409 EXPECT_EQ(ERR_IO_PENDING, rv); | 409 EXPECT_EQ(ERR_IO_PENDING, rv); |
410 EXPECT_FALSE(handle_.is_initialized()); | 410 EXPECT_FALSE(handle_.is_initialized()); |
411 EXPECT_FALSE(handle_.socket()); | 411 EXPECT_FALSE(handle_.socket()); |
412 | 412 |
413 rv = callback_.WaitForResult(); | 413 rv = callback_.WaitForResult(); |
414 EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, rv); | 414 EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, rv); |
415 EXPECT_TRUE(handle_.is_initialized()); | 415 EXPECT_TRUE(handle_.is_initialized()); |
416 ASSERT_TRUE(handle_.socket()); | 416 ASSERT_TRUE(handle_.socket()); |
417 ProxyClientSocket* tunnel_socket = | 417 ProxyClientSocket* tunnel_socket = |
(...skipping 29 matching lines...) Expand all Loading... |
447 MockRead reads[] = { | 447 MockRead reads[] = { |
448 MockRead(SYNCHRONOUS, 1, "HTTP/1.1 200 Connection Established\r\n\r\n"), | 448 MockRead(SYNCHRONOUS, 1, "HTTP/1.1 200 Connection Established\r\n\r\n"), |
449 }; | 449 }; |
450 | 450 |
451 Initialize(reads, arraysize(reads), writes, arraysize(writes), NULL, 0, | 451 Initialize(reads, arraysize(reads), writes, arraysize(writes), NULL, 0, |
452 NULL, 0); | 452 NULL, 0); |
453 AddAuthToCache(); | 453 AddAuthToCache(); |
454 | 454 |
455 scoped_ptr<TestProxyDelegate> proxy_delegate(new TestProxyDelegate()); | 455 scoped_ptr<TestProxyDelegate> proxy_delegate(new TestProxyDelegate()); |
456 int rv = handle_.Init("a", CreateTunnelParams(proxy_delegate.get()), LOW, | 456 int rv = handle_.Init("a", CreateTunnelParams(proxy_delegate.get()), LOW, |
| 457 ClientSocketPool::RespectLimits::ENABLED, |
457 callback_.callback(), &pool_, BoundNetLog()); | 458 callback_.callback(), &pool_, BoundNetLog()); |
458 EXPECT_EQ(OK, rv); | 459 EXPECT_EQ(OK, rv); |
459 EXPECT_TRUE(handle_.is_initialized()); | 460 EXPECT_TRUE(handle_.is_initialized()); |
460 ASSERT_TRUE(handle_.socket()); | 461 ASSERT_TRUE(handle_.socket()); |
461 EXPECT_TRUE(handle_.socket()->IsConnected()); | 462 EXPECT_TRUE(handle_.socket()->IsConnected()); |
462 proxy_delegate->VerifyOnTunnelHeadersReceived( | 463 proxy_delegate->VerifyOnTunnelHeadersReceived( |
463 "www.google.com:443", | 464 "www.google.com:443", |
464 proxy_host_port.c_str(), | 465 proxy_host_port.c_str(), |
465 "HTTP/1.1 200 Connection Established"); | 466 "HTTP/1.1 200 Connection Established"); |
466 proxy_delegate->VerifyOnTunnelRequestCompleted( | 467 proxy_delegate->VerifyOnTunnelRequestCompleted( |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
500 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 2), | 501 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 2), |
501 }; | 502 }; |
502 | 503 |
503 Initialize(reads, arraysize(reads), writes, arraysize(writes), | 504 Initialize(reads, arraysize(reads), writes, arraysize(writes), |
504 spdy_reads, arraysize(spdy_reads), spdy_writes, | 505 spdy_reads, arraysize(spdy_reads), spdy_writes, |
505 arraysize(spdy_writes)); | 506 arraysize(spdy_writes)); |
506 AddAuthToCache(); | 507 AddAuthToCache(); |
507 | 508 |
508 scoped_ptr<TestProxyDelegate> proxy_delegate(new TestProxyDelegate()); | 509 scoped_ptr<TestProxyDelegate> proxy_delegate(new TestProxyDelegate()); |
509 int rv = handle_.Init("a", CreateTunnelParams(proxy_delegate.get()), LOW, | 510 int rv = handle_.Init("a", CreateTunnelParams(proxy_delegate.get()), LOW, |
| 511 ClientSocketPool::RespectLimits::ENABLED, |
510 callback_.callback(), &pool_, BoundNetLog()); | 512 callback_.callback(), &pool_, BoundNetLog()); |
511 EXPECT_EQ(ERR_IO_PENDING, rv); | 513 EXPECT_EQ(ERR_IO_PENDING, rv); |
512 EXPECT_FALSE(handle_.is_initialized()); | 514 EXPECT_FALSE(handle_.is_initialized()); |
513 EXPECT_FALSE(handle_.socket()); | 515 EXPECT_FALSE(handle_.socket()); |
514 | 516 |
515 EXPECT_EQ(OK, callback_.WaitForResult()); | 517 EXPECT_EQ(OK, callback_.WaitForResult()); |
516 EXPECT_TRUE(handle_.is_initialized()); | 518 EXPECT_TRUE(handle_.is_initialized()); |
517 ASSERT_TRUE(handle_.socket()); | 519 ASSERT_TRUE(handle_.socket()); |
518 EXPECT_TRUE(handle_.socket()->IsConnected()); | 520 EXPECT_TRUE(handle_.socket()->IsConnected()); |
519 proxy_delegate->VerifyOnTunnelRequestCompleted( | 521 proxy_delegate->VerifyOnTunnelRequestCompleted( |
(...skipping 20 matching lines...) Expand all Loading... |
540 MockRead(ASYNC, 0, 2) | 542 MockRead(ASYNC, 0, 2) |
541 }; | 543 }; |
542 | 544 |
543 Initialize(NULL, 0, NULL, 0, | 545 Initialize(NULL, 0, NULL, 0, |
544 spdy_reads, arraysize(spdy_reads), | 546 spdy_reads, arraysize(spdy_reads), |
545 spdy_writes, arraysize(spdy_writes)); | 547 spdy_writes, arraysize(spdy_writes)); |
546 AddAuthToCache(); | 548 AddAuthToCache(); |
547 | 549 |
548 EXPECT_EQ(ERR_IO_PENDING, | 550 EXPECT_EQ(ERR_IO_PENDING, |
549 handle_.Init("a", CreateTunnelParams(NULL), MEDIUM, | 551 handle_.Init("a", CreateTunnelParams(NULL), MEDIUM, |
| 552 ClientSocketPool::RespectLimits::ENABLED, |
550 callback_.callback(), &pool_, BoundNetLog())); | 553 callback_.callback(), &pool_, BoundNetLog())); |
551 EXPECT_EQ(MEDIUM, GetLastTransportRequestPriority()); | 554 EXPECT_EQ(MEDIUM, GetLastTransportRequestPriority()); |
552 | 555 |
553 EXPECT_EQ(OK, callback_.WaitForResult()); | 556 EXPECT_EQ(OK, callback_.WaitForResult()); |
554 } | 557 } |
555 | 558 |
556 TEST_P(HttpProxyClientSocketPoolTest, TCPError) { | 559 TEST_P(HttpProxyClientSocketPoolTest, TCPError) { |
557 if (GetParam().proxy_type == SPDY) return; | 560 if (GetParam().proxy_type == SPDY) return; |
558 data_.reset(new SequencedSocketData(NULL, 0, NULL, 0)); | 561 data_.reset(new SequencedSocketData(NULL, 0, NULL, 0)); |
559 data_->set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_CLOSED)); | 562 data_->set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_CLOSED)); |
560 | 563 |
561 socket_factory()->AddSocketDataProvider(data_.get()); | 564 socket_factory()->AddSocketDataProvider(data_.get()); |
562 | 565 |
563 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, | 566 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, |
| 567 ClientSocketPool::RespectLimits::ENABLED, |
564 callback_.callback(), &pool_, BoundNetLog()); | 568 callback_.callback(), &pool_, BoundNetLog()); |
565 EXPECT_EQ(ERR_IO_PENDING, rv); | 569 EXPECT_EQ(ERR_IO_PENDING, rv); |
566 EXPECT_FALSE(handle_.is_initialized()); | 570 EXPECT_FALSE(handle_.is_initialized()); |
567 EXPECT_FALSE(handle_.socket()); | 571 EXPECT_FALSE(handle_.socket()); |
568 | 572 |
569 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, callback_.WaitForResult()); | 573 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, callback_.WaitForResult()); |
570 | 574 |
571 EXPECT_FALSE(handle_.is_initialized()); | 575 EXPECT_FALSE(handle_.is_initialized()); |
572 EXPECT_FALSE(handle_.socket()); | 576 EXPECT_FALSE(handle_.socket()); |
573 } | 577 } |
574 | 578 |
575 TEST_P(HttpProxyClientSocketPoolTest, SSLError) { | 579 TEST_P(HttpProxyClientSocketPoolTest, SSLError) { |
576 if (GetParam().proxy_type == HTTP) return; | 580 if (GetParam().proxy_type == HTTP) return; |
577 data_.reset(new SequencedSocketData(NULL, 0, NULL, 0)); | 581 data_.reset(new SequencedSocketData(NULL, 0, NULL, 0)); |
578 data_->set_connect_data(MockConnect(ASYNC, OK)); | 582 data_->set_connect_data(MockConnect(ASYNC, OK)); |
579 socket_factory()->AddSocketDataProvider(data_.get()); | 583 socket_factory()->AddSocketDataProvider(data_.get()); |
580 | 584 |
581 ssl_data_.reset(new SSLSocketDataProvider(ASYNC, | 585 ssl_data_.reset(new SSLSocketDataProvider(ASYNC, |
582 ERR_CERT_AUTHORITY_INVALID)); | 586 ERR_CERT_AUTHORITY_INVALID)); |
583 if (GetParam().proxy_type == SPDY) { | 587 if (GetParam().proxy_type == SPDY) { |
584 InitializeSpdySsl(); | 588 InitializeSpdySsl(); |
585 } | 589 } |
586 socket_factory()->AddSSLSocketDataProvider(ssl_data_.get()); | 590 socket_factory()->AddSSLSocketDataProvider(ssl_data_.get()); |
587 | 591 |
588 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, | 592 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, |
| 593 ClientSocketPool::RespectLimits::ENABLED, |
589 callback_.callback(), &pool_, BoundNetLog()); | 594 callback_.callback(), &pool_, BoundNetLog()); |
590 EXPECT_EQ(ERR_IO_PENDING, rv); | 595 EXPECT_EQ(ERR_IO_PENDING, rv); |
591 EXPECT_FALSE(handle_.is_initialized()); | 596 EXPECT_FALSE(handle_.is_initialized()); |
592 EXPECT_FALSE(handle_.socket()); | 597 EXPECT_FALSE(handle_.socket()); |
593 | 598 |
594 EXPECT_EQ(ERR_PROXY_CERTIFICATE_INVALID, callback_.WaitForResult()); | 599 EXPECT_EQ(ERR_PROXY_CERTIFICATE_INVALID, callback_.WaitForResult()); |
595 | 600 |
596 EXPECT_FALSE(handle_.is_initialized()); | 601 EXPECT_FALSE(handle_.is_initialized()); |
597 EXPECT_FALSE(handle_.socket()); | 602 EXPECT_FALSE(handle_.socket()); |
598 } | 603 } |
599 | 604 |
600 TEST_P(HttpProxyClientSocketPoolTest, SslClientAuth) { | 605 TEST_P(HttpProxyClientSocketPoolTest, SslClientAuth) { |
601 if (GetParam().proxy_type == HTTP) return; | 606 if (GetParam().proxy_type == HTTP) return; |
602 data_.reset(new SequencedSocketData(NULL, 0, NULL, 0)); | 607 data_.reset(new SequencedSocketData(NULL, 0, NULL, 0)); |
603 data_->set_connect_data(MockConnect(ASYNC, OK)); | 608 data_->set_connect_data(MockConnect(ASYNC, OK)); |
604 socket_factory()->AddSocketDataProvider(data_.get()); | 609 socket_factory()->AddSocketDataProvider(data_.get()); |
605 | 610 |
606 ssl_data_.reset(new SSLSocketDataProvider(ASYNC, | 611 ssl_data_.reset(new SSLSocketDataProvider(ASYNC, |
607 ERR_SSL_CLIENT_AUTH_CERT_NEEDED)); | 612 ERR_SSL_CLIENT_AUTH_CERT_NEEDED)); |
608 if (GetParam().proxy_type == SPDY) { | 613 if (GetParam().proxy_type == SPDY) { |
609 InitializeSpdySsl(); | 614 InitializeSpdySsl(); |
610 } | 615 } |
611 socket_factory()->AddSSLSocketDataProvider(ssl_data_.get()); | 616 socket_factory()->AddSSLSocketDataProvider(ssl_data_.get()); |
612 | 617 |
613 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, | 618 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, |
| 619 ClientSocketPool::RespectLimits::ENABLED, |
614 callback_.callback(), &pool_, BoundNetLog()); | 620 callback_.callback(), &pool_, BoundNetLog()); |
615 EXPECT_EQ(ERR_IO_PENDING, rv); | 621 EXPECT_EQ(ERR_IO_PENDING, rv); |
616 EXPECT_FALSE(handle_.is_initialized()); | 622 EXPECT_FALSE(handle_.is_initialized()); |
617 EXPECT_FALSE(handle_.socket()); | 623 EXPECT_FALSE(handle_.socket()); |
618 | 624 |
619 EXPECT_EQ(ERR_SSL_CLIENT_AUTH_CERT_NEEDED, callback_.WaitForResult()); | 625 EXPECT_EQ(ERR_SSL_CLIENT_AUTH_CERT_NEEDED, callback_.WaitForResult()); |
620 | 626 |
621 EXPECT_FALSE(handle_.is_initialized()); | 627 EXPECT_FALSE(handle_.is_initialized()); |
622 EXPECT_FALSE(handle_.socket()); | 628 EXPECT_FALSE(handle_.socket()); |
623 } | 629 } |
(...skipping 19 matching lines...) Expand all Loading... |
643 MockRead spdy_reads[] = { | 649 MockRead spdy_reads[] = { |
644 MockRead(ASYNC, ERR_CONNECTION_CLOSED, 1), | 650 MockRead(ASYNC, ERR_CONNECTION_CLOSED, 1), |
645 }; | 651 }; |
646 | 652 |
647 Initialize(reads, arraysize(reads), writes, arraysize(writes), | 653 Initialize(reads, arraysize(reads), writes, arraysize(writes), |
648 spdy_reads, arraysize(spdy_reads), spdy_writes, | 654 spdy_reads, arraysize(spdy_reads), spdy_writes, |
649 arraysize(spdy_writes)); | 655 arraysize(spdy_writes)); |
650 AddAuthToCache(); | 656 AddAuthToCache(); |
651 | 657 |
652 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, | 658 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, |
| 659 ClientSocketPool::RespectLimits::ENABLED, |
653 callback_.callback(), &pool_, BoundNetLog()); | 660 callback_.callback(), &pool_, BoundNetLog()); |
654 EXPECT_EQ(ERR_IO_PENDING, rv); | 661 EXPECT_EQ(ERR_IO_PENDING, rv); |
655 EXPECT_FALSE(handle_.is_initialized()); | 662 EXPECT_FALSE(handle_.is_initialized()); |
656 EXPECT_FALSE(handle_.socket()); | 663 EXPECT_FALSE(handle_.socket()); |
657 | 664 |
658 if (GetParam().proxy_type == SPDY) { | 665 if (GetParam().proxy_type == SPDY) { |
659 // SPDY cannot process a headers block unless it's complete and so it | 666 // SPDY cannot process a headers block unless it's complete and so it |
660 // returns ERR_CONNECTION_CLOSED in this case. | 667 // returns ERR_CONNECTION_CLOSED in this case. |
661 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback_.WaitForResult()); | 668 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback_.WaitForResult()); |
662 } else { | 669 } else { |
(...skipping 18 matching lines...) Expand all Loading... |
681 }; | 688 }; |
682 MockRead reads[] = { | 689 MockRead reads[] = { |
683 MockRead(ASYNC, 1, "HTTP/1.1 100 Continue\r\n\r\n"), | 690 MockRead(ASYNC, 1, "HTTP/1.1 100 Continue\r\n\r\n"), |
684 MockRead(ASYNC, 2, "HTTP/1.1 200 Connection Established\r\n\r\n"), | 691 MockRead(ASYNC, 2, "HTTP/1.1 200 Connection Established\r\n\r\n"), |
685 }; | 692 }; |
686 | 693 |
687 Initialize(reads, arraysize(reads), writes, arraysize(writes), | 694 Initialize(reads, arraysize(reads), writes, arraysize(writes), |
688 NULL, 0, NULL, 0); | 695 NULL, 0, NULL, 0); |
689 | 696 |
690 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, | 697 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, |
| 698 ClientSocketPool::RespectLimits::ENABLED, |
691 callback_.callback(), &pool_, BoundNetLog()); | 699 callback_.callback(), &pool_, BoundNetLog()); |
692 EXPECT_EQ(ERR_IO_PENDING, rv); | 700 EXPECT_EQ(ERR_IO_PENDING, rv); |
693 EXPECT_FALSE(handle_.is_initialized()); | 701 EXPECT_FALSE(handle_.is_initialized()); |
694 EXPECT_FALSE(handle_.socket()); | 702 EXPECT_FALSE(handle_.socket()); |
695 | 703 |
696 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, callback_.WaitForResult()); | 704 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, callback_.WaitForResult()); |
697 } | 705 } |
698 | 706 |
699 TEST_P(HttpProxyClientSocketPoolTest, TunnelSetupError) { | 707 TEST_P(HttpProxyClientSocketPoolTest, TunnelSetupError) { |
700 MockWrite writes[] = { | 708 MockWrite writes[] = { |
(...skipping 20 matching lines...) Expand all Loading... |
721 CreateMockRead(*resp, 1, ASYNC), | 729 CreateMockRead(*resp, 1, ASYNC), |
722 MockRead(ASYNC, 0, 3), | 730 MockRead(ASYNC, 0, 3), |
723 }; | 731 }; |
724 | 732 |
725 Initialize(reads, arraysize(reads), writes, arraysize(writes), | 733 Initialize(reads, arraysize(reads), writes, arraysize(writes), |
726 spdy_reads, arraysize(spdy_reads), spdy_writes, | 734 spdy_reads, arraysize(spdy_reads), spdy_writes, |
727 arraysize(spdy_writes)); | 735 arraysize(spdy_writes)); |
728 AddAuthToCache(); | 736 AddAuthToCache(); |
729 | 737 |
730 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, | 738 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, |
| 739 ClientSocketPool::RespectLimits::ENABLED, |
731 callback_.callback(), &pool_, BoundNetLog()); | 740 callback_.callback(), &pool_, BoundNetLog()); |
732 EXPECT_EQ(ERR_IO_PENDING, rv); | 741 EXPECT_EQ(ERR_IO_PENDING, rv); |
733 EXPECT_FALSE(handle_.is_initialized()); | 742 EXPECT_FALSE(handle_.is_initialized()); |
734 EXPECT_FALSE(handle_.socket()); | 743 EXPECT_FALSE(handle_.socket()); |
735 | 744 |
736 rv = callback_.WaitForResult(); | 745 rv = callback_.WaitForResult(); |
737 // All Proxy CONNECT responses are not trustworthy | 746 // All Proxy CONNECT responses are not trustworthy |
738 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv); | 747 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv); |
739 EXPECT_FALSE(handle_.is_initialized()); | 748 EXPECT_FALSE(handle_.is_initialized()); |
740 EXPECT_FALSE(handle_.socket()); | 749 EXPECT_FALSE(handle_.socket()); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
782 CreateMockRead(*resp, 1, ASYNC), | 791 CreateMockRead(*resp, 1, ASYNC), |
783 MockRead(ASYNC, 0, 2), | 792 MockRead(ASYNC, 0, 2), |
784 }; | 793 }; |
785 | 794 |
786 Initialize(reads, arraysize(reads), writes, arraysize(writes), | 795 Initialize(reads, arraysize(reads), writes, arraysize(writes), |
787 spdy_reads, arraysize(spdy_reads), spdy_writes, | 796 spdy_reads, arraysize(spdy_reads), spdy_writes, |
788 arraysize(spdy_writes)); | 797 arraysize(spdy_writes)); |
789 AddAuthToCache(); | 798 AddAuthToCache(); |
790 | 799 |
791 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, | 800 int rv = handle_.Init("a", CreateTunnelParams(NULL), LOW, |
| 801 ClientSocketPool::RespectLimits::ENABLED, |
792 callback_.callback(), &pool_, BoundNetLog()); | 802 callback_.callback(), &pool_, BoundNetLog()); |
793 EXPECT_EQ(ERR_IO_PENDING, rv); | 803 EXPECT_EQ(ERR_IO_PENDING, rv); |
794 EXPECT_FALSE(handle_.is_initialized()); | 804 EXPECT_FALSE(handle_.is_initialized()); |
795 EXPECT_FALSE(handle_.socket()); | 805 EXPECT_FALSE(handle_.socket()); |
796 | 806 |
797 rv = callback_.WaitForResult(); | 807 rv = callback_.WaitForResult(); |
798 | 808 |
799 if (GetParam().proxy_type == HTTP) { | 809 if (GetParam().proxy_type == HTTP) { |
800 // We don't trust 302 responses to CONNECT from HTTP proxies. | 810 // We don't trust 302 responses to CONNECT from HTTP proxies. |
801 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv); | 811 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv); |
(...skipping 19 matching lines...) Expand all Loading... |
821 // Make sure Location header was included and correct. | 831 // Make sure Location header was included and correct. |
822 std::string location; | 832 std::string location; |
823 EXPECT_TRUE(headers->IsRedirect(&location)); | 833 EXPECT_TRUE(headers->IsRedirect(&location)); |
824 EXPECT_EQ(location, redirectTarget); | 834 EXPECT_EQ(location, redirectTarget); |
825 } | 835 } |
826 } | 836 } |
827 | 837 |
828 // It would be nice to also test the timeouts in HttpProxyClientSocketPool. | 838 // It would be nice to also test the timeouts in HttpProxyClientSocketPool. |
829 | 839 |
830 } // namespace net | 840 } // namespace net |
OLD | NEW |