Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(166)

Unified Diff: components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate_unittest.cc

Issue 1363673004: [DRP] Consistently use LoFi for an entire page (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final comments Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 fc68e31f96245a3508a76facb755f34e687aeeee..b27e414b096519613531a34f59d7ca8b5b50c57e 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
@@ -23,6 +23,7 @@
#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"
#include "components/data_reduction_proxy/core/common/data_reduction_proxy_switches.h"
+#include "components/data_reduction_proxy/core/common/lofi_decider.h"
#include "net/base/host_port_pair.h"
#include "net/base/load_flags.h"
#include "net/http/http_response_headers.h"
@@ -69,6 +70,23 @@ const Client kClient = Client::CHROME_QNX;
const Client kClient = Client::UNKNOWN;
#endif
+class TestLoFiDecider : public LoFiDecider {
+ public:
+ TestLoFiDecider() : should_request_lofi_resource_(false) {}
+ ~TestLoFiDecider() override {}
+
+ bool IsUsingLoFiMode(const net::URLRequest& request) const override {
+ return should_request_lofi_resource_;
+ }
+
+ void SetIsUsingLoFiMode(bool should_request_lofi_resource) {
+ should_request_lofi_resource_ = should_request_lofi_resource;
+ }
+
+ private:
+ bool should_request_lofi_resource_;
+};
+
} // namespace
class DataReductionProxyNetworkDelegateTest : public testing::Test {
@@ -96,12 +114,14 @@ class DataReductionProxyNetworkDelegateTest : public testing::Test {
data_reduction_proxy_network_delegate_->InitIODataAndUMA(
test_context_->io_data(), bypass_stats_.get());
- }
- const net::ProxyConfig& GetProxyConfig() const {
- return config_;
+ scoped_ptr<TestLoFiDecider> lofi_decider(new TestLoFiDecider());
+ lofi_decider_ = lofi_decider.get();
+ io_data()->set_lofi_decider(lofi_decider.Pass());
}
+ const net::ProxyConfig& GetProxyConfig() const { return config_; }
+
MockDataReductionProxyConfig* config() const {
return test_context_->mock_config();
}
@@ -178,9 +198,9 @@ class DataReductionProxyNetworkDelegateTest : public testing::Test {
return test_context_->io_data();
}
- TestDataReductionProxyConfig* config() {
- return test_context_->config();
- }
+ TestDataReductionProxyConfig* config() { return test_context_->config(); }
+
+ TestLoFiDecider* lofi_decider() { return lofi_decider_; }
scoped_ptr<DataReductionProxyNetworkDelegate>
data_reduction_proxy_network_delegate_;
@@ -193,6 +213,7 @@ class DataReductionProxyNetworkDelegateTest : public testing::Test {
net::ProxyConfig config_;
net::NetworkDelegate* network_delegate_;
+ TestLoFiDecider* lofi_decider_;
scoped_ptr<DataReductionProxyTestContext> test_context_;
scoped_ptr<DataReductionProxyBypassStats> bypass_stats_;
};
@@ -226,14 +247,12 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
bool auto_lofi_enabled;
} tests[] = {
{
- // Lo-Fi enabled through switch.
- false,
- true,
+ // Lo-Fi enabled through switch.
+ true, false,
},
{
- // Lo-Fi enabled through field trial.
- true,
- false,
+ // Lo-Fi enabled through field trial.
+ false, true,
},
};
@@ -243,7 +262,11 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
switches::kDataReductionProxyLoFi,
switches::kDataReductionProxyLoFiValueAlwaysOn);
}
- config()->SetIncludedInLoFiEnabledFieldTrial(tests[i].auto_lofi_enabled);
+ base::FieldTrialList field_trial_list(nullptr);
+ if (tests[i].auto_lofi_enabled) {
+ base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
+ "Enabled");
+ }
config()->SetNetworkProhibitivelySlow(tests[i].auto_lofi_enabled);
net::ProxyInfo data_reduction_proxy_info;
@@ -258,6 +281,8 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
scoped_ptr<net::URLRequest> fake_request(
FetchURLRequest(GURL("http://www.google.com/"), std::string(), 0));
fake_request->SetLoadFlags(net::LOAD_MAIN_FRAME);
+ lofi_decider()->SetIsUsingLoFiMode(
+ config()->ShouldEnableLoFiMode(*fake_request.get()));
data_reduction_proxy_network_delegate_->NotifyBeforeSendProxyHeaders(
fake_request.get(), data_reduction_proxy_info, &headers);
VerifyLoFiHeader(true, headers);
@@ -265,11 +290,11 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
}
{
- // Bypass cache flag used. Lo-Fi should not be used.
+ // Lo-Fi is already off. Lo-Fi should not be used.
net::HttpRequestHeaders headers;
scoped_ptr<net::URLRequest> fake_request(
FetchURLRequest(GURL("http://www.google.com/"), std::string(), 0));
- fake_request->SetLoadFlags(net::LOAD_BYPASS_CACHE);
+ lofi_decider()->SetIsUsingLoFiMode(false);
data_reduction_proxy_network_delegate_->NotifyBeforeSendProxyHeaders(
fake_request.get(), data_reduction_proxy_info, &headers);
VerifyLoFiHeader(false, headers);
@@ -279,11 +304,12 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
}
{
- // Bypass cache flag not used. Lo-Fi should be used.
+ // Lo-Fi is already on. Lo-Fi should be used.
net::HttpRequestHeaders headers;
scoped_ptr<net::URLRequest> fake_request(
FetchURLRequest(GURL("http://www.google.com/"), std::string(), 0));
+ lofi_decider()->SetIsUsingLoFiMode(true);
data_reduction_proxy_network_delegate_->NotifyBeforeSendProxyHeaders(
fake_request.get(), data_reduction_proxy_info, &headers);
VerifyLoFiHeader(true, headers);
@@ -293,26 +319,15 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
}
{
- // Bypass cache flag used. Lo-Fi should not be used.
- net::HttpRequestHeaders headers;
- scoped_ptr<net::URLRequest> fake_request(
- FetchURLRequest(GURL("http://www.google.com/"), std::string(), 0));
- fake_request->SetLoadFlags(net::LOAD_BYPASS_CACHE);
- data_reduction_proxy_network_delegate_->NotifyBeforeSendProxyHeaders(
- fake_request.get(), data_reduction_proxy_info, &headers);
- VerifyLoFiHeader(false, headers);
- // Not a mainframe request, WasLoFiModeActiveOnMainFrame should still be
- // true.
- VerifyWasLoFiModeActiveOnMainFrame(true);
- }
-
- {
- // Main frame request with bypass cache flag. Lo-Fi should not be used.
+ // 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;
scoped_ptr<net::URLRequest> fake_request(
FetchURLRequest(GURL("http://www.google.com/"), std::string(), 0));
- fake_request->SetLoadFlags(net::LOAD_MAIN_FRAME | net::LOAD_BYPASS_CACHE);
+ fake_request->SetLoadFlags(net::LOAD_MAIN_FRAME);
+ lofi_decider()->SetIsUsingLoFiMode(false);
data_reduction_proxy_network_delegate_->NotifyBeforeSendProxyHeaders(
fake_request.get(), data_reduction_proxy_info, &headers);
VerifyLoFiHeader(false, headers);
@@ -320,10 +335,11 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
}
{
- // Bypass cache flag not used. Lo-Fi is still not used.
+ // Lo-Fi is off. Lo-Fi is still not used.
net::HttpRequestHeaders headers;
scoped_ptr<net::URLRequest> fake_request(
FetchURLRequest(GURL("http://www.google.com/"), std::string(), 0));
+ lofi_decider()->SetIsUsingLoFiMode(false);
data_reduction_proxy_network_delegate_->NotifyBeforeSendProxyHeaders(
fake_request.get(), data_reduction_proxy_info, &headers);
VerifyLoFiHeader(false, headers);
@@ -338,6 +354,8 @@ TEST_F(DataReductionProxyNetworkDelegateTest, LoFiTransitions) {
scoped_ptr<net::URLRequest> fake_request(
FetchURLRequest(GURL("http://www.google.com/"), std::string(), 0));
fake_request->SetLoadFlags(net::LOAD_MAIN_FRAME);
+ lofi_decider()->SetIsUsingLoFiMode(
+ config()->ShouldEnableLoFiMode(*fake_request.get()));
data_reduction_proxy_network_delegate_->NotifyBeforeSendProxyHeaders(
fake_request.get(), data_reduction_proxy_info, &headers);
VerifyLoFiHeader(true, headers);
@@ -427,38 +445,34 @@ TEST_F(DataReductionProxyNetworkDelegateTest, NetHistograms) {
} tests[] = {
{
- // Lo-Fi disabled.
- false,
- false,
- 0,
+ // Lo-Fi disabled.
+ false, false, 0,
},
{
- // Auto Lo-Fi enabled.
- // This should populate Lo-Fi content length histogram.
- false,
- true,
- 1,
+ // Auto Lo-Fi enabled.
+ // This should populate Lo-Fi content length histogram.
+ false, true, 1,
},
{
- // Lo-Fi enabled through switch.
- // This should populate Lo-Fi content length histogram.
- true,
- false,
- 1,
+ // Lo-Fi enabled through switch.
+ // This should populate Lo-Fi content length histogram.
+ true, false, 1,
},
{
- // Lo-Fi enabled through switch and Auto Lo-Fi also enabled.
- // This should populate Lo-Fi content length histogram.
- true,
- true,
- 1,
+ // Lo-Fi enabled through switch and Auto Lo-Fi also enabled.
+ // This should populate Lo-Fi content length histogram.
+ true, true, 1,
},
};
for (size_t i = 0; i < arraysize(tests); ++i) {
config()->ResetLoFiStatusForTest();
- config()->SetIncludedInLoFiEnabledFieldTrial(tests[i].auto_lofi_enabled);
config()->SetNetworkProhibitivelySlow(tests[i].auto_lofi_enabled);
+ base::FieldTrialList field_trial_list(nullptr);
+ if (tests[i].auto_lofi_enabled) {
+ base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
+ "Enabled");
+ }
if (tests[i].lofi_enabled_through_switch) {
base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
@@ -466,7 +480,8 @@ TEST_F(DataReductionProxyNetworkDelegateTest, NetHistograms) {
switches::kDataReductionProxyLoFiValueAlwaysOn);
}
- config()->UpdateLoFiStatusOnMainFrameRequest(false, nullptr);
+ lofi_decider()->SetIsUsingLoFiMode(
+ config()->ShouldEnableLoFiMode(*fake_request.get()));
fake_request = (FetchURLRequest(GURL("http://www.example.com/"),
response_headers, kResponseContentLength));
@@ -538,8 +553,8 @@ TEST_F(DataReductionProxyNetworkDelegateTest, OnResolveProxyHandler) {
retry_info.current_delay = base::TimeDelta::FromSeconds(1000);
retry_info.bad_until = base::TimeTicks().Now() + retry_info.current_delay;
retry_info.try_while_bad = false;
- data_reduction_proxy_retry_info[
- data_reduction_proxy_info.proxy_server().ToURI()] = retry_info;
+ data_reduction_proxy_retry_info[data_reduction_proxy_info.proxy_server()
+ .ToURI()] = retry_info;
net::ProxyInfo result;
// Another proxy is used. It should be used afterwards.
@@ -583,13 +598,11 @@ TEST_F(DataReductionProxyNetworkDelegateTest, OnResolveProxyHandler) {
// Without DataCompressionProxyCriticalBypass Finch trial set, the
// BYPASS_DATA_REDUCTION_PROXY load flag should be ignored.
OnResolveProxyHandler(url, load_flags, data_reduction_proxy_config,
- empty_proxy_retry_info, config(),
- &result);
+ empty_proxy_retry_info, config(), &result);
EXPECT_FALSE(result.is_direct());
OnResolveProxyHandler(url, load_flags, data_reduction_proxy_config,
- empty_proxy_retry_info,
- config(), &other_proxy_info);
+ empty_proxy_retry_info, config(), &other_proxy_info);
EXPECT_FALSE(other_proxy_info.is_direct());
}

Powered by Google App Engine
This is Rietveld 408576698