| 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_network_layer.h" | 5 #include "net/http/http_network_layer.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
| 9 #include "net/base/net_log.h" | 9 #include "net/base/net_log.h" |
| 10 #include "net/cert/mock_cert_verifier.h" | 10 #include "net/cert/mock_cert_verifier.h" |
| (...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 616 // Verify that a Chrome-Proxy: bypass=<seconds> header induces proxy | 616 // Verify that a Chrome-Proxy: bypass=<seconds> header induces proxy |
| 617 // fallback to a second proxy, if configured. | 617 // fallback to a second proxy, if configured. |
| 618 std::string bad_proxy = GetChromeProxy(); | 618 std::string bad_proxy = GetChromeProxy(); |
| 619 ConfigureTestDependencies(ProxyService::CreateFixedFromPacResult( | 619 ConfigureTestDependencies(ProxyService::CreateFixedFromPacResult( |
| 620 "PROXY " + bad_proxy + "; PROXY good:8080")); | 620 "PROXY " + bad_proxy + "; PROXY good:8080")); |
| 621 | 621 |
| 622 MockRead data_reads[] = { | 622 MockRead data_reads[] = { |
| 623 MockRead("HTTP/1.1 200 OK\r\n" | 623 MockRead("HTTP/1.1 200 OK\r\n" |
| 624 "Connection: keep-alive\r\n" | 624 "Connection: keep-alive\r\n" |
| 625 "Chrome-Proxy: bypass=86400\r\n" | 625 "Chrome-Proxy: bypass=86400\r\n" |
| 626 "Via: 1.1 Chrome Compression Proxy\r\n\r\n"), | 626 "Via: 1.1 Chrome-Compression-Proxy\r\n\r\n"), |
| 627 MockRead("Bypass message"), | 627 MockRead("Bypass message"), |
| 628 MockRead(SYNCHRONOUS, OK), | 628 MockRead(SYNCHRONOUS, OK), |
| 629 }; | 629 }; |
| 630 | 630 |
| 631 TestProxyFallbackWithMockReads(bad_proxy, "", data_reads, | 631 TestProxyFallbackWithMockReads(bad_proxy, "", data_reads, |
| 632 arraysize(data_reads), 1u); | 632 arraysize(data_reads), 1u); |
| 633 EXPECT_EQ(base::TimeDelta::FromSeconds(86400), | 633 EXPECT_EQ(base::TimeDelta::FromSeconds(86400), |
| 634 (*proxy_service_->proxy_retry_info().begin()).second.current_delay); | 634 (*proxy_service_->proxy_retry_info().begin()).second.current_delay); |
| 635 } | 635 } |
| 636 | 636 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 674 TEST_F(HttpNetworkLayerTest, NoServerFallbackWithChainedViaHeader) { | 674 TEST_F(HttpNetworkLayerTest, NoServerFallbackWithChainedViaHeader) { |
| 675 // Verify that Chrome will not be induced to bypass the Chrome proxy when | 675 // Verify that Chrome will not be induced to bypass the Chrome proxy when |
| 676 // the Chrome Proxy via header is present, even if that header is chained. | 676 // the Chrome Proxy via header is present, even if that header is chained. |
| 677 std::string chrome_proxy = GetChromeProxy(); | 677 std::string chrome_proxy = GetChromeProxy(); |
| 678 ConfigureTestDependencies(ProxyService::CreateFixedFromPacResult( | 678 ConfigureTestDependencies(ProxyService::CreateFixedFromPacResult( |
| 679 "PROXY " + chrome_proxy + "; PROXY good:8080")); | 679 "PROXY " + chrome_proxy + "; PROXY good:8080")); |
| 680 | 680 |
| 681 MockRead data_reads[] = { | 681 MockRead data_reads[] = { |
| 682 MockRead("HTTP/1.1 200 OK\r\n" | 682 MockRead("HTTP/1.1 200 OK\r\n" |
| 683 "Connection: keep-alive\r\n" | 683 "Connection: keep-alive\r\n" |
| 684 "Via: 1.1 Chrome-Compression-Proxy, 1.0 some-other-proxy\r\n\r\n"), |
| 685 MockRead("Bypass message"), |
| 686 MockRead(SYNCHRONOUS, OK), |
| 687 }; |
| 688 |
| 689 TestProxyFallbackByMethodWithMockReads(chrome_proxy, std::string(), |
| 690 data_reads, arraysize(data_reads), |
| 691 "GET", std::string(), false, 0); |
| 692 } |
| 693 |
| 694 TEST_F(HttpNetworkLayerTest, NoServerFallbackWithDeprecatedViaHeader) { |
| 695 // Verify that Chrome will not be induced to bypass the Chrome proxy when |
| 696 // the Chrome Proxy via header is present, even if that header is chained. |
| 697 std::string chrome_proxy = GetChromeProxy(); |
| 698 ConfigureTestDependencies(ProxyService::CreateFixedFromPacResult( |
| 699 "PROXY " + chrome_proxy + "; PROXY good:8080")); |
| 700 |
| 701 MockRead data_reads[] = { |
| 702 MockRead("HTTP/1.1 200 OK\r\n" |
| 703 "Connection: keep-alive\r\n" |
| 704 "Via: 1.1 Chrome Compression Proxy\r\n\r\n"), |
| 705 MockRead("Bypass message"), |
| 706 MockRead(SYNCHRONOUS, OK), |
| 707 }; |
| 708 |
| 709 TestProxyFallbackByMethodWithMockReads(chrome_proxy, std::string(), |
| 710 data_reads, arraysize(data_reads), |
| 711 "GET", std::string(), false, 0); |
| 712 } |
| 713 |
| 714 TEST_F(HttpNetworkLayerTest, ServerFallbackWithNoViaHeader) { |
| 715 // Verify that the lack of a Via header induces proxy fallback to a second |
| 716 // proxy, if configured. |
| 717 std::string chrome_proxy = GetChromeProxy(); |
| 718 ConfigureTestDependencies(ProxyService::CreateFixedFromPacResult( |
| 719 "PROXY " + chrome_proxy + "; PROXY good:8080")); |
| 720 |
| 721 MockRead data_reads[] = { |
| 722 MockRead("HTTP/1.1 200 OK\r\n" |
| 723 "Connection: keep-alive\r\n\r\n"), |
| 724 MockRead("Bypass message"), |
| 725 MockRead(SYNCHRONOUS, OK), |
| 726 }; |
| 727 |
| 728 TestProxyFallbackWithMockReads(chrome_proxy, std::string(), data_reads, |
| 729 arraysize(data_reads), 1u); |
| 730 } |
| 731 |
| 732 TEST_F(HttpNetworkLayerTest, NoServerFallbackWithChainedViaHeader) { |
| 733 // Verify that Chrome will not be induced to bypass the Chrome proxy when |
| 734 // the Chrome Proxy via header is present, even if that header is chained. |
| 735 std::string chrome_proxy = GetChromeProxy(); |
| 736 ConfigureTestDependencies(ProxyService::CreateFixedFromPacResult( |
| 737 "PROXY " + chrome_proxy + "; PROXY good:8080")); |
| 738 |
| 739 MockRead data_reads[] = { |
| 740 MockRead("HTTP/1.1 200 OK\r\n" |
| 741 "Connection: keep-alive\r\n" |
| 684 "Via: 1.1 Chrome Compression Proxy, 1.0 some-other-proxy\r\n\r\n"), | 742 "Via: 1.1 Chrome Compression Proxy, 1.0 some-other-proxy\r\n\r\n"), |
| 685 MockRead("Bypass message"), | 743 MockRead("Bypass message"), |
| 686 MockRead(SYNCHRONOUS, OK), | 744 MockRead(SYNCHRONOUS, OK), |
| 687 }; | 745 }; |
| 688 | 746 |
| 689 TestProxyFallbackByMethodWithMockReads(chrome_proxy, std::string(), | 747 TestProxyFallbackByMethodWithMockReads(chrome_proxy, std::string(), |
| 690 data_reads, arraysize(data_reads), | 748 data_reads, arraysize(data_reads), |
| 691 "GET", std::string(), false, 0); | 749 "GET", std::string(), false, 0); |
| 692 } | 750 } |
| 693 | 751 |
| 694 #if defined(DATA_REDUCTION_FALLBACK_HOST) | 752 #if defined(DATA_REDUCTION_FALLBACK_HOST) |
| 695 TEST_F(HttpNetworkLayerTest, ServerFallbackWithProxyTimedBypassAll) { | 753 TEST_F(HttpNetworkLayerTest, ServerFallbackWithProxyTimedBypassAll) { |
| 696 // Verify that a Chrome-Proxy: block=<seconds> header bypasses a | 754 // Verify that a Chrome-Proxy: block=<seconds> header bypasses a |
| 697 // a configured Chrome-Proxy and fallback and induces proxy fallback to a | 755 // a configured Chrome-Proxy and fallback and induces proxy fallback to a |
| 698 // third proxy, if configured. | 756 // third proxy, if configured. |
| 699 std::string bad_proxy = GetChromeProxy(); | 757 std::string bad_proxy = GetChromeProxy(); |
| 700 std::string fallback_proxy = GetChromeFallbackProxy(); | 758 std::string fallback_proxy = GetChromeFallbackProxy(); |
| 701 ConfigureTestDependencies(ProxyService::CreateFixedFromPacResult( | 759 ConfigureTestDependencies(ProxyService::CreateFixedFromPacResult( |
| 702 "PROXY " + bad_proxy + "; PROXY " + fallback_proxy + | 760 "PROXY " + bad_proxy + "; PROXY " + fallback_proxy + |
| 703 "; PROXY good:8080")); | 761 "; PROXY good:8080")); |
| 704 | 762 |
| 705 MockRead data_reads[] = { | 763 MockRead data_reads[] = { |
| 706 MockRead("HTTP/1.1 200 OK\r\n" | 764 MockRead("HTTP/1.1 200 OK\r\n" |
| 707 "Connection: keep-alive\r\n" | 765 "Connection: keep-alive\r\n" |
| 708 "Chrome-Proxy: block=86400\r\n" | 766 "Chrome-Proxy: block=86400\r\n" |
| 709 "Via: 1.1 Chrome Compression Proxy\r\n\r\n"), | 767 "Via: 1.1 Chrome-Compression-Proxy\r\n\r\n"), |
| 710 MockRead("Bypass message"), | 768 MockRead("Bypass message"), |
| 711 MockRead(SYNCHRONOUS, OK), | 769 MockRead(SYNCHRONOUS, OK), |
| 712 }; | 770 }; |
| 713 | 771 |
| 714 TestProxyFallbackWithMockReads(bad_proxy, fallback_proxy, data_reads, | 772 TestProxyFallbackWithMockReads(bad_proxy, fallback_proxy, data_reads, |
| 715 arraysize(data_reads), 2u); | 773 arraysize(data_reads), 2u); |
| 716 EXPECT_EQ(base::TimeDelta::FromSeconds(86400), | 774 EXPECT_EQ(base::TimeDelta::FromSeconds(86400), |
| 717 (*proxy_service_->proxy_retry_info().begin()).second.current_delay); | 775 (*proxy_service_->proxy_retry_info().begin()).second.current_delay); |
| 718 } | 776 } |
| 719 #endif // defined(DATA_REDUCTION_FALLBACK_HOST) | 777 #endif // defined(DATA_REDUCTION_FALLBACK_HOST) |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 785 ASSERT_EQ(ERR_CONNECTION_RESET, callback.GetResult(rv)); | 843 ASSERT_EQ(ERR_CONNECTION_RESET, callback.GetResult(rv)); |
| 786 | 844 |
| 787 // If the response info is null, that means that any consumer won't | 845 // If the response info is null, that means that any consumer won't |
| 788 // see the network accessed bit set. | 846 // see the network accessed bit set. |
| 789 EXPECT_EQ(NULL, trans->GetResponseInfo()); | 847 EXPECT_EQ(NULL, trans->GetResponseInfo()); |
| 790 } | 848 } |
| 791 | 849 |
| 792 } // namespace | 850 } // namespace |
| 793 | 851 |
| 794 } // namespace net | 852 } // namespace net |
| OLD | NEW |