| 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 |