| Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate_unittest.cc
|
| diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate_unittest.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate_unittest.cc
|
| index 5bc90cc3fc3a48fb6accc768448696b7ab8274c1..73d5e14bfc40d6e55e71c16efbcef71c9472245d 100644
|
| --- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate_unittest.cc
|
| +++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate_unittest.cc
|
| @@ -27,6 +27,7 @@
|
| #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_metrics.h"
|
| #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options.h"
|
| #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.h"
|
| +#include "components/data_reduction_proxy/core/common/data_reduction_proxy_headers.h"
|
| #include "components/data_reduction_proxy/core/common/data_reduction_proxy_headers_test_utils.h"
|
| #include "components/data_reduction_proxy/core/common/data_reduction_proxy_params_test_utils.h"
|
| #include "components/data_reduction_proxy/core/common/data_reduction_proxy_pref_names.h"
|
| @@ -50,7 +51,7 @@ namespace {
|
|
|
| using TestNetworkDelegate = net::NetworkDelegateImpl;
|
|
|
| -const char kChromeProxyHeader[] = "chrome-proxy";
|
| +const char kOtherProxy[] = "testproxy:17";
|
|
|
| #if defined(OS_ANDROID)
|
| const Client kClient = Client::CHROME_ANDROID;
|
| @@ -91,21 +92,18 @@ class TestLoFiDecider : public LoFiDecider {
|
|
|
| bool MaybeAddLoFiDirectiveToHeaders(
|
| const net::URLRequest& request,
|
| - net::HttpRequestHeaders* headers,
|
| - const net::ProxyServer& proxy_server,
|
| - DataReductionProxyConfig* config) const override {
|
| + net::HttpRequestHeaders* headers) const override {
|
| if (should_request_lofi_resource_) {
|
| - const char kChromeProxyHeader[] = "Chrome-Proxy";
|
| std::string header_value;
|
|
|
| - if (headers->HasHeader(kChromeProxyHeader)) {
|
| - headers->GetHeader(kChromeProxyHeader, &header_value);
|
| - headers->RemoveHeader(kChromeProxyHeader);
|
| + if (headers->HasHeader(chrome_proxy_header())) {
|
| + headers->GetHeader(chrome_proxy_header(), &header_value);
|
| + headers->RemoveHeader(chrome_proxy_header());
|
| header_value += ", ";
|
| }
|
|
|
| header_value += "q=low";
|
| - headers->SetHeader(kChromeProxyHeader, header_value);
|
| + headers->SetHeader(chrome_proxy_header(), header_value);
|
| return true;
|
| }
|
|
|
| @@ -161,12 +159,14 @@ class DataReductionProxyNetworkDelegateTest : public testing::Test {
|
| test_context_->EnableDataReductionProxyWithSecureProxyCheckSuccess();
|
| }
|
|
|
| - static void VerifyLoFiHeader(bool expected_lofi_used,
|
| - const net::HttpRequestHeaders& headers) {
|
| - EXPECT_TRUE(headers.HasHeader(kChromeProxyHeader));
|
| + static void VerifyHeaders(bool expected_data_reduction_proxy_used,
|
| + bool expected_lofi_used,
|
| + const net::HttpRequestHeaders& headers) {
|
| + EXPECT_EQ(expected_data_reduction_proxy_used,
|
| + headers.HasHeader(chrome_proxy_header()));
|
| std::string header_value;
|
| - headers.GetHeader(kChromeProxyHeader, &header_value);
|
| - EXPECT_EQ(expected_lofi_used,
|
| + headers.GetHeader(chrome_proxy_header(), &header_value);
|
| + EXPECT_EQ(expected_data_reduction_proxy_used && expected_lofi_used,
|
| header_value.find("q=low") != std::string::npos);
|
| }
|
|
|
| @@ -238,6 +238,10 @@ class DataReductionProxyNetworkDelegateTest : public testing::Test {
|
| return test_context_->config();
|
| }
|
|
|
| + TestDataReductionProxyIOData* io_data() const {
|
| + return test_context_->io_data();
|
| + }
|
| +
|
| TestLoFiDecider* lofi_decider() const { return lofi_decider_; }
|
|
|
| private:
|
| @@ -281,9 +285,9 @@ TEST_F(DataReductionProxyNetworkDelegateTest, AuthenticationTest) {
|
| network_delegate()->NotifyBeforeSendProxyHeaders(
|
| fake_request.get(), data_reduction_proxy_info, &headers);
|
|
|
| - EXPECT_TRUE(headers.HasHeader(kChromeProxyHeader));
|
| + EXPECT_TRUE(headers.HasHeader(chrome_proxy_header()));
|
| std::string header_value;
|
| - headers.GetHeader(kChromeProxyHeader, &header_value);
|
| + headers.GetHeader(chrome_proxy_header(), &header_value);
|
| EXPECT_TRUE(header_value.find("ps=") != std::string::npos);
|
| EXPECT_TRUE(header_value.find("sid=") != std::string::npos);
|
| }
|
| @@ -293,14 +297,24 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
|
| const struct {
|
| bool lofi_switch_enabled;
|
| bool auto_lofi_enabled;
|
| + bool is_data_reduction_proxy;
|
| } tests[] = {
|
| {
|
| - // Lo-Fi enabled through switch.
|
| - true, false,
|
| + // Lo-Fi enabled through switch and not using a Data Reduction Proxy.
|
| + true, false, false,
|
| + },
|
| + {
|
| + // Lo-Fi enabled through switch and using a Data Reduction Proxy.
|
| + true, false, true,
|
| + },
|
| + {
|
| + // Lo-Fi enabled through field trial and not using a Data Reduction
|
| + // Proxy.
|
| + false, true, false,
|
| },
|
| {
|
| - // Lo-Fi enabled through field trial.
|
| - false, true,
|
| + // Lo-Fi enabled through field trial and using a Data Reduction Proxy.
|
| + false, true, true,
|
| },
|
| };
|
|
|
| @@ -316,11 +330,15 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
|
| "Enabled");
|
| }
|
| config()->SetNetworkProhibitivelySlow(tests[i].auto_lofi_enabled);
|
| + io_data()->SetLoFiModeActiveOnMainFrame(false);
|
|
|
| net::ProxyInfo data_reduction_proxy_info;
|
| - std::string data_reduction_proxy;
|
| - base::TrimString(params()->DefaultOrigin(), "/", &data_reduction_proxy);
|
| - data_reduction_proxy_info.UseNamedProxy(data_reduction_proxy);
|
| + std::string proxy;
|
| + if (tests[i].is_data_reduction_proxy)
|
| + base::TrimString(params()->DefaultOrigin(), "/", &proxy);
|
| + else
|
| + base::TrimString(kOtherProxy, "/", &proxy);
|
| + data_reduction_proxy_info.UseNamedProxy(proxy);
|
|
|
| {
|
| // Main frame loaded. Lo-Fi should be used.
|
| @@ -333,8 +351,8 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
|
| config()->ShouldEnableLoFiMode(*fake_request.get()));
|
| network_delegate()->NotifyBeforeSendProxyHeaders(
|
| fake_request.get(), data_reduction_proxy_info, &headers);
|
| - VerifyLoFiHeader(true, headers);
|
| - VerifyWasLoFiModeActiveOnMainFrame(true);
|
| + VerifyHeaders(tests[i].is_data_reduction_proxy, true, headers);
|
| + VerifyWasLoFiModeActiveOnMainFrame(tests[i].is_data_reduction_proxy);
|
| }
|
|
|
| {
|
| @@ -345,10 +363,10 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
|
| lofi_decider()->SetIsUsingLoFiMode(false);
|
| network_delegate()->NotifyBeforeSendProxyHeaders(
|
| fake_request.get(), data_reduction_proxy_info, &headers);
|
| - VerifyLoFiHeader(false, headers);
|
| + VerifyHeaders(tests[i].is_data_reduction_proxy, false, headers);
|
| // Not a mainframe request, WasLoFiModeActiveOnMainFrame should still be
|
| - // true.
|
| - VerifyWasLoFiModeActiveOnMainFrame(true);
|
| + // true if the proxy is a Data Reduction Proxy.
|
| + VerifyWasLoFiModeActiveOnMainFrame(tests[i].is_data_reduction_proxy);
|
| }
|
|
|
| {
|
| @@ -360,15 +378,13 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
|
| lofi_decider()->SetIsUsingLoFiMode(true);
|
| network_delegate()->NotifyBeforeSendProxyHeaders(
|
| fake_request.get(), data_reduction_proxy_info, &headers);
|
| - VerifyLoFiHeader(true, headers);
|
| + VerifyHeaders(tests[i].is_data_reduction_proxy, true, headers);
|
| // Not a mainframe request, WasLoFiModeActiveOnMainFrame should still be
|
| - // true.
|
| - VerifyWasLoFiModeActiveOnMainFrame(true);
|
| + // true if the proxy is a Data Reduction Proxy.
|
| + VerifyWasLoFiModeActiveOnMainFrame(tests[i].is_data_reduction_proxy);
|
| }
|
|
|
| {
|
| - // TODO(megjablon): Can remove the cases below once
|
| - // WasLoFiModeActiveOnMainFrame is fixed to be per-page.
|
| // Main frame request with Lo-Fi off. Lo-Fi should not be used.
|
| // State of Lo-Fi should persist until next page load.
|
| net::HttpRequestHeaders headers;
|
| @@ -378,7 +394,7 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
|
| lofi_decider()->SetIsUsingLoFiMode(false);
|
| network_delegate()->NotifyBeforeSendProxyHeaders(
|
| fake_request.get(), data_reduction_proxy_info, &headers);
|
| - VerifyLoFiHeader(false, headers);
|
| + VerifyHeaders(tests[i].is_data_reduction_proxy, false, headers);
|
| VerifyWasLoFiModeActiveOnMainFrame(false);
|
| }
|
|
|
| @@ -390,7 +406,7 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
|
| lofi_decider()->SetIsUsingLoFiMode(false);
|
| network_delegate()->NotifyBeforeSendProxyHeaders(
|
| fake_request.get(), data_reduction_proxy_info, &headers);
|
| - VerifyLoFiHeader(false, headers);
|
| + VerifyHeaders(tests[i].is_data_reduction_proxy, false, headers);
|
| // Not a mainframe request, WasLoFiModeActiveOnMainFrame should still be
|
| // false.
|
| VerifyWasLoFiModeActiveOnMainFrame(false);
|
| @@ -406,8 +422,8 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
|
| config()->ShouldEnableLoFiMode(*fake_request.get()));
|
| network_delegate()->NotifyBeforeSendProxyHeaders(
|
| fake_request.get(), data_reduction_proxy_info, &headers);
|
| - VerifyLoFiHeader(true, headers);
|
| - VerifyWasLoFiModeActiveOnMainFrame(true);
|
| + VerifyHeaders(tests[i].is_data_reduction_proxy, true, headers);
|
| + VerifyWasLoFiModeActiveOnMainFrame(tests[i].is_data_reduction_proxy);
|
| }
|
| }
|
| }
|
| @@ -578,7 +594,7 @@ TEST_F(DataReductionProxyNetworkDelegateTest, NullRequest) {
|
|
|
| network_delegate()->NotifyBeforeSendProxyHeaders(
|
| nullptr, data_reduction_proxy_info, &headers);
|
| - EXPECT_TRUE(headers.HasHeader(kChromeProxyHeader));
|
| + EXPECT_TRUE(headers.HasHeader(chrome_proxy_header()));
|
| }
|
|
|
| TEST_F(DataReductionProxyNetworkDelegateTest, OnCompletedInternalLoFi) {
|
|
|