Chromium Code Reviews| 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 546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 557 // SPDY cannot process a headers block unless it's complete and so it | 557 // SPDY cannot process a headers block unless it's complete and so it |
| 558 // returns ERR_CONNECTION_CLOSED in this case. | 558 // returns ERR_CONNECTION_CLOSED in this case. |
| 559 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback_.WaitForResult()); | 559 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback_.WaitForResult()); |
| 560 } else { | 560 } else { |
| 561 EXPECT_EQ(ERR_RESPONSE_HEADERS_TRUNCATED, callback_.WaitForResult()); | 561 EXPECT_EQ(ERR_RESPONSE_HEADERS_TRUNCATED, callback_.WaitForResult()); |
| 562 } | 562 } |
| 563 EXPECT_FALSE(handle_.is_initialized()); | 563 EXPECT_FALSE(handle_.is_initialized()); |
| 564 EXPECT_FALSE(handle_.socket()); | 564 EXPECT_FALSE(handle_.socket()); |
| 565 } | 565 } |
| 566 | 566 |
| 567 TEST_P(HttpProxyClientSocketPoolTest, Tunnel1xxResponse) { | |
| 568 // Tests that 1xx responses are rejected for a CONNECT request. | |
| 569 if (GetParam().proxy_type == SPDY) { | |
| 570 // SPDY doesn't have 1xx responses. | |
| 571 return; | |
| 572 } | |
| 573 | |
| 574 MockWrite writes[] = { | |
| 575 MockWrite(ASYNC, 0, | |
| 576 "CONNECT www.google.com:443 HTTP/1.1\r\n" | |
| 577 "Host: www.google.com\r\n" | |
| 578 "Proxy-Connection: keep-alive\r\n" | |
| 579 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | |
|
wtc
2013/10/01 18:12:57
Nit: Is the Proxy-Authorization header (and the Ad
agl
2013/10/01 19:53:18
Done.
| |
| 580 }; | |
| 581 MockRead reads[] = { | |
| 582 MockRead(ASYNC, 1, "HTTP/1.1 100 Continue\r\n\r\n"), | |
| 583 MockRead(ASYNC, 2, "HTTP/1.1 200 Connection Established\r\n\r\n"), | |
| 584 }; | |
| 585 | |
| 586 Initialize(reads, arraysize(reads), writes, arraysize(writes), | |
| 587 NULL, 0, NULL, 0); | |
| 588 AddAuthToCache(); | |
| 589 | |
| 590 int rv = handle_.Init("a", CreateTunnelParams(), LOW, callback_.callback(), | |
| 591 &pool_, BoundNetLog()); | |
| 592 EXPECT_EQ(ERR_IO_PENDING, rv); | |
| 593 EXPECT_FALSE(handle_.is_initialized()); | |
| 594 EXPECT_FALSE(handle_.socket()); | |
| 595 | |
| 596 data_->RunFor(2); | |
| 597 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, callback_.WaitForResult()); | |
| 598 } | |
| 599 | |
| 567 TEST_P(HttpProxyClientSocketPoolTest, TunnelSetupError) { | 600 TEST_P(HttpProxyClientSocketPoolTest, TunnelSetupError) { |
| 568 MockWrite writes[] = { | 601 MockWrite writes[] = { |
| 569 MockWrite(ASYNC, 0, | 602 MockWrite(ASYNC, 0, |
| 570 "CONNECT www.google.com:443 HTTP/1.1\r\n" | 603 "CONNECT www.google.com:443 HTTP/1.1\r\n" |
| 571 "Host: www.google.com\r\n" | 604 "Host: www.google.com\r\n" |
| 572 "Proxy-Connection: keep-alive\r\n" | 605 "Proxy-Connection: keep-alive\r\n" |
| 573 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 606 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
| 574 }; | 607 }; |
| 575 MockRead reads[] = { | 608 MockRead reads[] = { |
| 576 MockRead(ASYNC, 1, "HTTP/1.1 304 Not Modified\r\n\r\n"), | 609 MockRead(ASYNC, 1, "HTTP/1.1 304 Not Modified\r\n\r\n"), |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 693 EXPECT_TRUE(headers->IsRedirect(&location)); | 726 EXPECT_TRUE(headers->IsRedirect(&location)); |
| 694 EXPECT_EQ(location, redirectTarget); | 727 EXPECT_EQ(location, redirectTarget); |
| 695 } | 728 } |
| 696 } | 729 } |
| 697 | 730 |
| 698 // It would be nice to also test the timeouts in HttpProxyClientSocketPool. | 731 // It would be nice to also test the timeouts in HttpProxyClientSocketPool. |
| 699 | 732 |
| 700 } // namespace | 733 } // namespace |
| 701 | 734 |
| 702 } // namespace net | 735 } // namespace net |
| OLD | NEW |