| 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 1b8d9de53cbbeed13d99e642259b20ae3b19550b..d5947199817a05cc8c3bf233d97123d442546c49 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
|
| @@ -15,12 +15,14 @@
|
| #include "base/metrics/field_trial.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/stringprintf.h"
|
| +#include "base/test/scoped_feature_list.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"
|
| #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.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_features.h"
|
| #include "components/data_reduction_proxy/core/common/data_reduction_proxy_headers.h"
|
| #include "components/data_reduction_proxy/core/common/data_reduction_proxy_params.h"
|
| #include "components/data_reduction_proxy/core/common/data_reduction_proxy_params_test_utils.h"
|
| @@ -192,6 +194,25 @@ class ContentLoFiDeciderTest : public testing::Test {
|
| }
|
| }
|
|
|
| + static void VerifyAcceptTransformHeader(const net::URLRequest& request,
|
| + bool expected_accept_lite_page,
|
| + bool expected_accept_empty_image) {
|
| + std::unique_ptr<data_reduction_proxy::ContentLoFiDecider> lofi_decider(
|
| + new data_reduction_proxy::ContentLoFiDecider());
|
| + net::HttpRequestHeaders headers;
|
| + lofi_decider->MaybeSetAcceptTransformHeader(request, false, &headers);
|
| +
|
| + std::string header_value;
|
| + EXPECT_EQ(expected_accept_lite_page || expected_accept_empty_image,
|
| + headers.GetHeader(chrome_proxy_accept_transform_header(),
|
| + &header_value));
|
| + if (expected_accept_lite_page) {
|
| + EXPECT_TRUE(header_value == lite_page_directive());
|
| + } else if (expected_accept_empty_image) {
|
| + EXPECT_TRUE(header_value == empty_image_directive());
|
| + }
|
| + }
|
| +
|
| static void VerifyVideoHeader(bool expected_compressed_video_used,
|
| const net::HttpRequestHeaders& headers) {
|
| EXPECT_EQ(expected_compressed_video_used,
|
| @@ -306,6 +327,102 @@ TEST_F(ContentLoFiDeciderTest, LoFiFlags) {
|
| }
|
| }
|
|
|
| +TEST_F(ContentLoFiDeciderTest, MaybeSetAcceptTransformNoAcceptForPreviewsOff) {
|
| + // Turn on proxy-decides-transform feature for these unit tests.
|
| + base::test::ScopedFeatureList scoped_feature_list;
|
| + scoped_feature_list.InitAndEnableFeature(
|
| + features::kDataReductionProxyDecidesTransform);
|
| +
|
| + std::unique_ptr<net::URLRequest> request =
|
| + CreateRequest(true /* is main */, content::PREVIEWS_OFF);
|
| + VerifyAcceptTransformHeader(*request.get(), false /* lite-page */,
|
| + false /* empty-image */);
|
| +
|
| + request = CreateRequest(true /* is main */, content::PREVIEWS_NO_TRANSFORM);
|
| + VerifyAcceptTransformHeader(*request.get(), false /* lite-page */,
|
| + false /* empty-image */);
|
| +
|
| + request = CreateRequest(true /* is main */, content::PREVIEWS_UNSPECIFIED);
|
| + VerifyAcceptTransformHeader(*request.get(), false /* lite-page */,
|
| + false /* empty-image */);
|
| +}
|
| +
|
| +TEST_F(ContentLoFiDeciderTest, MaybeSetAcceptTransformNoAcceptForHttps) {
|
| + // Turn on proxy-decides-transform feature for these unit tests.
|
| + base::test::ScopedFeatureList scoped_feature_list;
|
| + scoped_feature_list.InitAndEnableFeature(
|
| + features::kDataReductionProxyDecidesTransform);
|
| +
|
| + content::PreviewsState both_previews_enabled =
|
| + content::SERVER_LITE_PAGE_ON | content::SERVER_LOFI_ON;
|
| +
|
| + // Verify no accept header for HTTPS.
|
| + std::unique_ptr<net::URLRequest> request =
|
| + CreateRequestByType(content::RESOURCE_TYPE_MAIN_FRAME, true /* https */,
|
| + both_previews_enabled);
|
| + VerifyAcceptTransformHeader(*request.get(), false /* lite-page */,
|
| + false /* empty-image */);
|
| +
|
| + request = CreateRequestByType(content::RESOURCE_TYPE_IMAGE, true /* https */,
|
| + both_previews_enabled);
|
| + VerifyAcceptTransformHeader(*request.get(), false /* lite-page */,
|
| + false /* empty-image */);
|
| +}
|
| +
|
| +TEST_F(ContentLoFiDeciderTest, MaybeSetAcceptTransformHeaderAcceptLitePage) {
|
| + // Turn on proxy-decides-transform feature for these unit tests.
|
| + base::test::ScopedFeatureList scoped_feature_list;
|
| + scoped_feature_list.InitAndEnableFeature(
|
| + features::kDataReductionProxyDecidesTransform);
|
| +
|
| + content::PreviewsState lite_page_enabled = content::SERVER_LITE_PAGE_ON;
|
| +
|
| + // Verify accepting lite-page per resource type.
|
| + std::unique_ptr<net::URLRequest> request =
|
| + CreateRequest(true /* is main */, lite_page_enabled);
|
| + VerifyAcceptTransformHeader(*request.get(), true /* lite-page */,
|
| + false /* empty-image */);
|
| +
|
| + request = CreateRequest(false /* is main */, lite_page_enabled);
|
| + VerifyAcceptTransformHeader(*request.get(), false /* lite-page */,
|
| + false /* empty-image */);
|
| +}
|
| +
|
| +TEST_F(ContentLoFiDeciderTest, MaybeSetAcceptTransformHeaderAcceptEmptyImage) {
|
| + // Turn on proxy-decides-transform feature for these unit tests.
|
| + base::test::ScopedFeatureList scoped_feature_list;
|
| + scoped_feature_list.InitAndEnableFeature(
|
| + features::kDataReductionProxyDecidesTransform);
|
| +
|
| + content::PreviewsState lofi_enabled = content::SERVER_LOFI_ON;
|
| +
|
| + // Verify accepting empty-image per resource type.
|
| + std::unique_ptr<net::URLRequest> request = CreateRequestByType(
|
| + content::RESOURCE_TYPE_MAIN_FRAME, false /* https */, lofi_enabled);
|
| + VerifyAcceptTransformHeader(*request.get(), false /* lite-page */,
|
| + false /* empty-image */);
|
| +
|
| + request = CreateRequestByType(content::RESOURCE_TYPE_IMAGE, false /* https */,
|
| + lofi_enabled);
|
| + VerifyAcceptTransformHeader(*request.get(), false /* lite-page */,
|
| + true /* empty-image */);
|
| +
|
| + request = CreateRequestByType(content::RESOURCE_TYPE_FAVICON,
|
| + false /* https */, lofi_enabled);
|
| + VerifyAcceptTransformHeader(*request.get(), false /* lite-page */,
|
| + true /* empty-image */);
|
| +
|
| + request = CreateRequestByType(content::RESOURCE_TYPE_SCRIPT,
|
| + false /* https */, lofi_enabled);
|
| + VerifyAcceptTransformHeader(*request.get(), false /* lite-page */,
|
| + false /* empty-image */);
|
| +
|
| + request = CreateRequestByType(content::RESOURCE_TYPE_STYLESHEET,
|
| + false /* https */, lofi_enabled);
|
| + VerifyAcceptTransformHeader(*request.get(), false /* lite-page */,
|
| + false /* empty-image */);
|
| +}
|
| +
|
| TEST_F(ContentLoFiDeciderTest, LoFiEnabledFieldTrial) {
|
| base::FieldTrialList field_trial_list(nullptr);
|
| base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
|
| @@ -399,6 +516,11 @@ TEST_F(ContentLoFiDeciderTest, LoFiControlFieldTrial) {
|
| }
|
|
|
| TEST_F(ContentLoFiDeciderTest, LitePageFieldTrial) {
|
| + // Turn off proxy-decides-transform feature for these unit tests.
|
| + base::test::ScopedFeatureList scoped_feature_list;
|
| + scoped_feature_list.InitAndDisableFeature(
|
| + features::kDataReductionProxyDecidesTransform);
|
| +
|
| base::FieldTrialList field_trial_list(nullptr);
|
| base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
|
| "Enabled_Preview");
|
| @@ -426,6 +548,11 @@ TEST_F(ContentLoFiDeciderTest, LitePageFieldTrial) {
|
| }
|
|
|
| TEST_F(ContentLoFiDeciderTest, LitePageFieldTrialFallbackDisabled) {
|
| + // Turn off proxy-decides-transform feature for these unit tests.
|
| + base::test::ScopedFeatureList scoped_feature_list;
|
| + scoped_feature_list.InitAndDisableFeature(
|
| + features::kDataReductionProxyDecidesTransform);
|
| +
|
| base::FieldTrialList field_trial_list(nullptr);
|
| base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
|
| "Enabled_Preview");
|
| @@ -465,6 +592,11 @@ TEST_F(ContentLoFiDeciderTest, LitePageFieldTrialFallbackDisabled) {
|
| }
|
|
|
| TEST_F(ContentLoFiDeciderTest, AutoLoFi) {
|
| + // Turn off proxy-decides-transform feature for these unit tests.
|
| + base::test::ScopedFeatureList scoped_feature_list;
|
| + scoped_feature_list.InitAndDisableFeature(
|
| + features::kDataReductionProxyDecidesTransform);
|
| +
|
| const struct {
|
| bool auto_lofi_enabled_group;
|
| bool auto_lofi_control_group;
|
| @@ -513,6 +645,11 @@ TEST_F(ContentLoFiDeciderTest, AutoLoFi) {
|
| }
|
|
|
| TEST_F(ContentLoFiDeciderTest, SlowConnectionsFlag) {
|
| + // Turn off proxy-decides-transform feature for these unit tests.
|
| + base::test::ScopedFeatureList scoped_feature_list;
|
| + scoped_feature_list.InitAndDisableFeature(
|
| + features::kDataReductionProxyDecidesTransform);
|
| +
|
| const struct {
|
| bool slow_connections_flag_enabled;
|
| bool network_prohibitively_slow;
|
|
|