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 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
386 "Host: www.google.com\r\n" | 386 "Host: www.google.com\r\n" |
387 "Proxy-Connection: keep-alive\r\n\r\n"), | 387 "Proxy-Connection: keep-alive\r\n\r\n"), |
388 }; | 388 }; |
389 MockRead reads[] = { | 389 MockRead reads[] = { |
390 // No credentials. | 390 // No credentials. |
391 MockRead(ASYNC, 1, "HTTP/1.1 407 Proxy Authentication Required\r\n"), | 391 MockRead(ASYNC, 1, "HTTP/1.1 407 Proxy Authentication Required\r\n"), |
392 MockRead(ASYNC, 2, "Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 392 MockRead(ASYNC, 2, "Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
393 MockRead(ASYNC, 3, "Content-Length: 10\r\n\r\n"), | 393 MockRead(ASYNC, 3, "Content-Length: 10\r\n\r\n"), |
394 MockRead(ASYNC, 4, "0123456789"), | 394 MockRead(ASYNC, 4, "0123456789"), |
395 }; | 395 }; |
396 scoped_ptr<SpdyFrame> req( | 396 scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyConnect( |
397 spdy_util_.ConstructSpdyConnect(NULL, 0, 1, LOW)); | 397 NULL, 0, 1, LOW, HostPortPair("www.google.com", 443))); |
398 scoped_ptr<SpdyFrame> rst( | 398 scoped_ptr<SpdyFrame> rst( |
399 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); | 399 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); |
400 MockWrite spdy_writes[] = { | 400 MockWrite spdy_writes[] = { |
401 CreateMockWrite(*req, 0, ASYNC), | 401 CreateMockWrite(*req, 0, ASYNC), |
402 CreateMockWrite(*rst, 2, ASYNC), | 402 CreateMockWrite(*rst, 2, ASYNC), |
403 }; | 403 }; |
404 SpdyHeaderBlock resp_block; | 404 SpdyHeaderBlock resp_block; |
405 resp_block[spdy_util_.GetStatusKey()] = "407"; | 405 resp_block[spdy_util_.GetStatusKey()] = "407"; |
406 resp_block["proxy-authenticate"] = "Basic realm=\"MyRealm1\""; | 406 resp_block["proxy-authenticate"] = "Basic realm=\"MyRealm1\""; |
407 spdy_util_.MaybeAddVersionHeader(&resp_block); | 407 spdy_util_.MaybeAddVersionHeader(&resp_block); |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
495 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n" | 495 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n" |
496 "Foo: " + proxy_host_port + "\r\n\r\n"; | 496 "Foo: " + proxy_host_port + "\r\n\r\n"; |
497 MockWrite writes[] = { | 497 MockWrite writes[] = { |
498 MockWrite(ASYNC, 0, request.c_str()), | 498 MockWrite(ASYNC, 0, request.c_str()), |
499 }; | 499 }; |
500 MockRead reads[] = { | 500 MockRead reads[] = { |
501 MockRead(ASYNC, 1, "HTTP/1.1 200 Connection Established\r\n\r\n"), | 501 MockRead(ASYNC, 1, "HTTP/1.1 200 Connection Established\r\n\r\n"), |
502 }; | 502 }; |
503 | 503 |
504 scoped_ptr<SpdyFrame> req( | 504 scoped_ptr<SpdyFrame> req( |
505 spdy_util_.ConstructSpdyConnect(kAuthHeaders, kAuthHeadersSize, 1, LOW)); | 505 spdy_util_.ConstructSpdyConnect(kAuthHeaders, kAuthHeadersSize, 1, LOW, |
| 506 HostPortPair("www.google.com", 443))); |
506 MockWrite spdy_writes[] = { | 507 MockWrite spdy_writes[] = { |
507 CreateMockWrite(*req, 0, ASYNC) | 508 CreateMockWrite(*req, 0, ASYNC) |
508 }; | 509 }; |
509 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); | 510 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
510 MockRead spdy_reads[] = { | 511 MockRead spdy_reads[] = { |
511 CreateMockRead(*resp, 1, ASYNC), | 512 CreateMockRead(*resp, 1, ASYNC), |
512 MockRead(ASYNC, 0, 2) | 513 MockRead(ASYNC, 0, 2) |
513 }; | 514 }; |
514 | 515 |
515 Initialize(reads, arraysize(reads), writes, arraysize(writes), | 516 Initialize(reads, arraysize(reads), writes, arraysize(writes), |
(...skipping 21 matching lines...) Expand all Loading... |
537 } | 538 } |
538 | 539 |
539 // Make sure that HttpProxyConnectJob passes on its priority to its | 540 // Make sure that HttpProxyConnectJob passes on its priority to its |
540 // SPDY session's socket request on Init (if applicable). | 541 // SPDY session's socket request on Init (if applicable). |
541 TEST_P(HttpProxyClientSocketPoolTest, | 542 TEST_P(HttpProxyClientSocketPoolTest, |
542 SetSpdySessionSocketRequestPriorityOnInit) { | 543 SetSpdySessionSocketRequestPriorityOnInit) { |
543 if (GetParam().proxy_type != SPDY) | 544 if (GetParam().proxy_type != SPDY) |
544 return; | 545 return; |
545 | 546 |
546 scoped_ptr<SpdyFrame> req( | 547 scoped_ptr<SpdyFrame> req( |
547 spdy_util_.ConstructSpdyConnect(kAuthHeaders, kAuthHeadersSize, | 548 spdy_util_.ConstructSpdyConnect(kAuthHeaders, kAuthHeadersSize, 1, MEDIUM, |
548 1, MEDIUM)); | 549 HostPortPair("www.google.com", 443))); |
549 MockWrite spdy_writes[] = { | 550 MockWrite spdy_writes[] = { |
550 CreateMockWrite(*req, 0, ASYNC) | 551 CreateMockWrite(*req, 0, ASYNC) |
551 }; | 552 }; |
552 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); | 553 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
553 MockRead spdy_reads[] = { | 554 MockRead spdy_reads[] = { |
554 CreateMockRead(*resp, 1, ASYNC), | 555 CreateMockRead(*resp, 1, ASYNC), |
555 MockRead(ASYNC, 0, 2) | 556 MockRead(ASYNC, 0, 2) |
556 }; | 557 }; |
557 | 558 |
558 Initialize(NULL, 0, NULL, 0, | 559 Initialize(NULL, 0, NULL, 0, |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
644 "CONNECT www.google.com:443 HTTP/1.1\r\n" | 645 "CONNECT www.google.com:443 HTTP/1.1\r\n" |
645 "Host: www.google.com\r\n" | 646 "Host: www.google.com\r\n" |
646 "Proxy-Connection: keep-alive\r\n" | 647 "Proxy-Connection: keep-alive\r\n" |
647 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 648 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
648 }; | 649 }; |
649 MockRead reads[] = { | 650 MockRead reads[] = { |
650 MockRead(ASYNC, 1, "HTTP/1.1 200 Conn"), | 651 MockRead(ASYNC, 1, "HTTP/1.1 200 Conn"), |
651 MockRead(ASYNC, ERR_CONNECTION_CLOSED, 2), | 652 MockRead(ASYNC, ERR_CONNECTION_CLOSED, 2), |
652 }; | 653 }; |
653 scoped_ptr<SpdyFrame> req( | 654 scoped_ptr<SpdyFrame> req( |
654 spdy_util_.ConstructSpdyConnect(kAuthHeaders, kAuthHeadersSize, 1, LOW)); | 655 spdy_util_.ConstructSpdyConnect(kAuthHeaders, kAuthHeadersSize, 1, LOW, |
| 656 HostPortPair("www.google.com", 443))); |
655 MockWrite spdy_writes[] = { | 657 MockWrite spdy_writes[] = { |
656 CreateMockWrite(*req, 0, ASYNC) | 658 CreateMockWrite(*req, 0, ASYNC) |
657 }; | 659 }; |
658 MockRead spdy_reads[] = { | 660 MockRead spdy_reads[] = { |
659 MockRead(ASYNC, ERR_CONNECTION_CLOSED, 1), | 661 MockRead(ASYNC, ERR_CONNECTION_CLOSED, 1), |
660 }; | 662 }; |
661 | 663 |
662 Initialize(reads, arraysize(reads), writes, arraysize(writes), | 664 Initialize(reads, arraysize(reads), writes, arraysize(writes), |
663 spdy_reads, arraysize(spdy_reads), spdy_writes, | 665 spdy_reads, arraysize(spdy_reads), spdy_writes, |
664 arraysize(spdy_writes)); | 666 arraysize(spdy_writes)); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
718 MockWrite(ASYNC, 0, | 720 MockWrite(ASYNC, 0, |
719 "CONNECT www.google.com:443 HTTP/1.1\r\n" | 721 "CONNECT www.google.com:443 HTTP/1.1\r\n" |
720 "Host: www.google.com\r\n" | 722 "Host: www.google.com\r\n" |
721 "Proxy-Connection: keep-alive\r\n" | 723 "Proxy-Connection: keep-alive\r\n" |
722 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 724 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
723 }; | 725 }; |
724 MockRead reads[] = { | 726 MockRead reads[] = { |
725 MockRead(ASYNC, 1, "HTTP/1.1 304 Not Modified\r\n\r\n"), | 727 MockRead(ASYNC, 1, "HTTP/1.1 304 Not Modified\r\n\r\n"), |
726 }; | 728 }; |
727 scoped_ptr<SpdyFrame> req( | 729 scoped_ptr<SpdyFrame> req( |
728 spdy_util_.ConstructSpdyConnect(kAuthHeaders, kAuthHeadersSize, 1, LOW)); | 730 spdy_util_.ConstructSpdyConnect(kAuthHeaders, kAuthHeadersSize, 1, LOW, |
| 731 HostPortPair("www.google.com", 443))); |
729 scoped_ptr<SpdyFrame> rst( | 732 scoped_ptr<SpdyFrame> rst( |
730 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); | 733 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); |
731 MockWrite spdy_writes[] = { | 734 MockWrite spdy_writes[] = { |
732 CreateMockWrite(*req, 0, ASYNC), | 735 CreateMockWrite(*req, 0, ASYNC), |
733 CreateMockWrite(*rst, 2, ASYNC), | 736 CreateMockWrite(*rst, 2, ASYNC), |
734 }; | 737 }; |
735 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdySynReplyError(1)); | 738 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdySynReplyError(1)); |
736 MockRead spdy_reads[] = { | 739 MockRead spdy_reads[] = { |
737 CreateMockRead(*resp, 1, ASYNC), | 740 CreateMockRead(*resp, 1, ASYNC), |
738 MockRead(ASYNC, 0, 3), | 741 MockRead(ASYNC, 0, 3), |
(...skipping 30 matching lines...) Expand all Loading... |
769 MockWrite(ASYNC, 0, | 772 MockWrite(ASYNC, 0, |
770 "CONNECT www.google.com:443 HTTP/1.1\r\n" | 773 "CONNECT www.google.com:443 HTTP/1.1\r\n" |
771 "Host: www.google.com\r\n" | 774 "Host: www.google.com\r\n" |
772 "Proxy-Connection: keep-alive\r\n" | 775 "Proxy-Connection: keep-alive\r\n" |
773 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 776 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
774 }; | 777 }; |
775 MockRead reads[] = { | 778 MockRead reads[] = { |
776 MockRead(ASYNC, 1, responseText.c_str()), | 779 MockRead(ASYNC, 1, responseText.c_str()), |
777 }; | 780 }; |
778 scoped_ptr<SpdyFrame> req( | 781 scoped_ptr<SpdyFrame> req( |
779 spdy_util_.ConstructSpdyConnect(kAuthHeaders, kAuthHeadersSize, 1, LOW)); | 782 spdy_util_.ConstructSpdyConnect(kAuthHeaders, kAuthHeadersSize, 1, LOW, |
| 783 HostPortPair("www.google.com", 443))); |
780 scoped_ptr<SpdyFrame> rst( | 784 scoped_ptr<SpdyFrame> rst( |
781 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); | 785 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); |
782 | 786 |
783 MockWrite spdy_writes[] = { | 787 MockWrite spdy_writes[] = { |
784 CreateMockWrite(*req, 0, ASYNC), | 788 CreateMockWrite(*req, 0, ASYNC), |
785 CreateMockWrite(*rst, 3, ASYNC), | 789 CreateMockWrite(*rst, 3, ASYNC), |
786 }; | 790 }; |
787 | 791 |
788 const char* const responseHeaders[] = { | 792 const char* const responseHeaders[] = { |
789 "location", redirectTarget.c_str(), | 793 "location", redirectTarget.c_str(), |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
842 EXPECT_TRUE(headers->IsRedirect(&location)); | 846 EXPECT_TRUE(headers->IsRedirect(&location)); |
843 EXPECT_EQ(location, redirectTarget); | 847 EXPECT_EQ(location, redirectTarget); |
844 } | 848 } |
845 } | 849 } |
846 | 850 |
847 // It would be nice to also test the timeouts in HttpProxyClientSocketPool. | 851 // It would be nice to also test the timeouts in HttpProxyClientSocketPool. |
848 | 852 |
849 } // namespace | 853 } // namespace |
850 | 854 |
851 } // namespace net | 855 } // namespace net |
OLD | NEW |