| Index: components/data_reduction_proxy/content/browser/content_lofi_decider_unittest.cc
|
| diff --git a/components/data_reduction_proxy/content/browser/content_lofi_decider_unittest.cc b/components/data_reduction_proxy/content/browser/content_lofi_decider_unittest.cc
|
| index aa6271fd26194ffa0e36ead00a6b6a756ed623a4..40121e2ff7048a898103b782511b966faf5a3caa 100644
|
| --- a/components/data_reduction_proxy/content/browser/content_lofi_decider_unittest.cc
|
| +++ b/components/data_reduction_proxy/content/browser/content_lofi_decider_unittest.cc
|
| @@ -14,6 +14,7 @@
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/metrics/field_trial.h"
|
| #include "base/strings/string_util.h"
|
| +#include "base/strings/stringprintf.h"
|
| #include "build/build_config.h"
|
| #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_config_test_utils.h"
|
| #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_data.h"
|
| @@ -167,23 +168,36 @@ class ContentLoFiDeciderTest : public testing::Test {
|
| }
|
|
|
| static void VerifyLoFiHeader(bool expected_lofi_used,
|
| + bool expected_if_heavy,
|
| const net::HttpRequestHeaders& headers) {
|
| if (expected_lofi_used)
|
| EXPECT_TRUE(headers.HasHeader(chrome_proxy_accept_transform_header()));
|
| std::string header_value;
|
| headers.GetHeader(chrome_proxy_accept_transform_header(), &header_value);
|
| - EXPECT_EQ(expected_lofi_used,
|
| - header_value.find(empty_image_directive()) != std::string::npos);
|
| + if (expected_if_heavy) {
|
| + std::string empty_image_if_heavy = base::StringPrintf(
|
| + "%s;%s", empty_image_directive(), if_heavy_qualifier());
|
| + EXPECT_EQ(expected_lofi_used, empty_image_if_heavy == header_value);
|
| + } else {
|
| + EXPECT_EQ(expected_lofi_used, header_value == empty_image_directive());
|
| + }
|
| }
|
|
|
| - static void VerifyLoFiPreviewHeader(bool expected_lofi_preview_used,
|
| - const net::HttpRequestHeaders& headers) {
|
| + static void VerifyLitePageHeader(bool expected_lofi_preview_used,
|
| + bool expected_if_heavy,
|
| + const net::HttpRequestHeaders& headers) {
|
| if (expected_lofi_preview_used)
|
| EXPECT_TRUE(headers.HasHeader(chrome_proxy_accept_transform_header()));
|
| std::string header_value;
|
| headers.GetHeader(chrome_proxy_accept_transform_header(), &header_value);
|
| - EXPECT_EQ(expected_lofi_preview_used,
|
| - header_value.find(lite_page_directive()) != std::string::npos);
|
| + if (expected_if_heavy) {
|
| + std::string lite_page_if_heavy = base::StringPrintf(
|
| + "%s;%s", lite_page_directive(), if_heavy_qualifier());
|
| + EXPECT_EQ(expected_lofi_preview_used, lite_page_if_heavy == header_value);
|
| + } else {
|
| + EXPECT_EQ(expected_lofi_preview_used,
|
| + header_value == lite_page_directive());
|
| + }
|
| }
|
|
|
| static void VerifyVideoHeader(bool expected_compressed_video_used,
|
| @@ -198,12 +212,12 @@ class ContentLoFiDeciderTest : public testing::Test {
|
| }
|
|
|
| static void VerifyLitePageIgnoreBlacklistHeader(
|
| - bool expected_lite_page_used,
|
| + bool expected_blacklist_directive_added,
|
| const net::HttpRequestHeaders& headers) {
|
| EXPECT_TRUE(headers.HasHeader(chrome_proxy_header()));
|
| std::string header_value;
|
| headers.GetHeader(chrome_proxy_header(), &header_value);
|
| - EXPECT_EQ(expected_lite_page_used,
|
| + EXPECT_EQ(expected_blacklist_directive_added,
|
| header_value.find(
|
| chrome_proxy_lite_page_ignore_blacklist_directive()) !=
|
| std::string::npos);
|
| @@ -243,8 +257,8 @@ TEST_F(ContentLoFiDeciderTest, LoFiFlags) {
|
| // No flags or field trials. The Lo-Fi header should not be added.
|
| net::HttpRequestHeaders headers;
|
| NotifyBeforeSendHeaders(&headers, request.get(), true);
|
| - VerifyLoFiHeader(false, headers);
|
| - VerifyLitePageHeader(false, headers);
|
| + VerifyLoFiHeader(false, false, headers);
|
| + VerifyLitePageHeader(false, false, headers);
|
| VerifyLitePageIgnoreBlacklistHeader(false, headers);
|
|
|
| // The Lo-Fi flag is "always-on", Lo-Fi is being used, and it's a main frame
|
| @@ -254,17 +268,12 @@ TEST_F(ContentLoFiDeciderTest, LoFiFlags) {
|
| switches::kDataReductionProxyLoFiValueAlwaysOn);
|
| headers.Clear();
|
| NotifyBeforeSendHeaders(&headers, request.get(), true);
|
| - VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_lite_page &&
|
| - !tests[i].is_main_frame,
|
| - headers);
|
| - VerifyLitePageHeader(tests[i].is_using_lofi &&
|
| - tests[i].is_using_lite_page &&
|
| - tests[i].is_main_frame,
|
| - headers);
|
| - VerifyLitePageIgnoreBlacklistHeader(tests[i].is_using_lofi &&
|
| - tests[i].is_using_lite_page &&
|
| - tests[i].is_main_frame,
|
| - headers);
|
| + VerifyLoFiHeader(!tests[i].is_using_lite_page && !tests[i].is_main_frame,
|
| + !tests[i].is_using_lofi, headers);
|
| + VerifyLitePageHeader(tests[i].is_using_lite_page && tests[i].is_main_frame,
|
| + !tests[i].is_using_lofi, headers);
|
| + VerifyLitePageIgnoreBlacklistHeader(
|
| + tests[i].is_using_lite_page && tests[i].is_main_frame, headers);
|
| DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
|
| // |lofi_requested| should be set to false when Lo-Fi is enabled using
|
| // flags.
|
| @@ -277,9 +286,9 @@ TEST_F(ContentLoFiDeciderTest, LoFiFlags) {
|
| tests[i].is_using_lofi);
|
| headers.Clear();
|
| NotifyBeforeSendHeaders(&headers, request.get(), true);
|
| - VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_lite_page,
|
| + VerifyLoFiHeader(!tests[i].is_using_lite_page, !tests[i].is_using_lofi,
|
| headers);
|
| - VerifyLitePageHeader(false, headers);
|
| + VerifyLitePageHeader(false, false, headers);
|
| VerifyLitePageIgnoreBlacklistHeader(false, headers);
|
|
|
| // The Lo-Fi flag is "cellular-only" and Lo-Fi is being used. Lo-Fi header
|
| @@ -289,9 +298,9 @@ TEST_F(ContentLoFiDeciderTest, LoFiFlags) {
|
| switches::kDataReductionProxyLoFiValueCellularOnly);
|
| headers.Clear();
|
| NotifyBeforeSendHeaders(&headers, request.get(), true);
|
| - VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_lite_page,
|
| + VerifyLoFiHeader(!tests[i].is_using_lite_page, !tests[i].is_using_lofi,
|
| headers);
|
| - VerifyLitePageHeader(false, headers);
|
| + VerifyLitePageHeader(false, false, headers);
|
| VerifyLitePageIgnoreBlacklistHeader(false, headers);
|
| data = DataReductionProxyData::GetData(*request);
|
| // |lofi_requested| should be set to false when Lo-Fi is enabled using
|
| @@ -305,9 +314,9 @@ TEST_F(ContentLoFiDeciderTest, LoFiFlags) {
|
| switches::kDataReductionProxyLoFiValueSlowConnectionsOnly);
|
| headers.Clear();
|
| NotifyBeforeSendHeaders(&headers, request.get(), true);
|
| - VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_lite_page,
|
| + VerifyLoFiHeader(!tests[i].is_using_lite_page, !tests[i].is_using_lofi,
|
| headers);
|
| - VerifyLitePageHeader(false, headers);
|
| + VerifyLitePageHeader(false, false, headers);
|
| VerifyLitePageIgnoreBlacklistHeader(false, headers);
|
| data = DataReductionProxyData::GetData(*request);
|
| // |lofi_requested| should be set to false when Lo-Fi is enabled using
|
| @@ -375,8 +384,8 @@ TEST_F(ContentLoFiDeciderTest, LoFiEnabledFieldTrial) {
|
| tests[i].resource_type == content::RESOURCE_TYPE_MEDIA ||
|
| tests[i].resource_type == content::RESOURCE_TYPE_CSP_REPORT);
|
|
|
| - VerifyLoFiHeader(tests[i].is_using_lofi && is_lofi_resource_type, headers);
|
| - VerifyLoFiPreviewHeader(false, headers);
|
| + VerifyLoFiHeader(is_lofi_resource_type, !tests[i].is_using_lofi, headers);
|
| + VerifyLitePageHeader(false, false, headers);
|
| VerifyLitePageIgnoreBlacklistHeader(false, headers);
|
| DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
|
| EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i;
|
| @@ -398,8 +407,8 @@ TEST_F(ContentLoFiDeciderTest, LoFiControlFieldTrial) {
|
| CreateRequest(tests[i].is_main_frame, tests[i].is_using_lofi);
|
| net::HttpRequestHeaders headers;
|
| NotifyBeforeSendHeaders(&headers, request.get(), true);
|
| - VerifyLoFiHeader(false, headers);
|
| - VerifyLitePageHeader(false, headers);
|
| + VerifyLoFiHeader(false, false, headers);
|
| + VerifyLitePageHeader(false, false, headers);
|
| VerifyLitePageIgnoreBlacklistHeader(false, headers);
|
| DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
|
| EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i;
|
| @@ -423,8 +432,8 @@ TEST_F(ContentLoFiDeciderTest, LitePageFieldTrial) {
|
| CreateRequest(tests[i].is_main_frame, tests[i].is_using_lofi);
|
| net::HttpRequestHeaders headers;
|
| NotifyBeforeSendHeaders(&headers, request.get(), true);
|
| - VerifyLoFiHeader(false, headers);
|
| - VerifyLitePageHeader(tests[i].is_using_lofi && tests[i].is_main_frame,
|
| + VerifyLoFiHeader(false, false, headers);
|
| + VerifyLitePageHeader(tests[i].is_main_frame, !tests[i].is_using_lofi,
|
| headers);
|
| VerifyLitePageIgnoreBlacklistHeader(false, headers);
|
| DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
|
| @@ -454,7 +463,6 @@ TEST_F(ContentLoFiDeciderTest, AutoLoFi) {
|
| for (size_t i = 0; i < arraysize(tests); ++i) {
|
| test_context_->config()->ResetLoFiStatusForTest();
|
| const bool expect_lofi_header = tests[i].auto_lofi_enabled_group &&
|
| - tests[i].network_prohibitively_slow &&
|
| !tests[i].is_main_frame;
|
|
|
| base::FieldTrialList field_trial_list(nullptr);
|
| @@ -476,7 +484,8 @@ TEST_F(ContentLoFiDeciderTest, AutoLoFi) {
|
| net::HttpRequestHeaders headers;
|
| NotifyBeforeSendHeaders(&headers, request.get(), true);
|
|
|
| - VerifyLoFiHeader(expect_lofi_header, headers);
|
| + VerifyLoFiHeader(expect_lofi_header, !tests[i].network_prohibitively_slow,
|
| + headers);
|
| }
|
| }
|
|
|
| @@ -529,7 +538,7 @@ TEST_F(ContentLoFiDeciderTest, SlowConnectionsFlag) {
|
| net::HttpRequestHeaders headers;
|
| NotifyBeforeSendHeaders(&headers, request.get(), true);
|
|
|
| - VerifyLoFiHeader(expect_lofi_header, headers);
|
| + VerifyLoFiHeader(expect_lofi_header, false, headers);
|
| }
|
| }
|
|
|
|
|