| 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 8c806f149d43d2e7e7bf6ac5103fca734bbea0d1..4f045a9a3a08c6bd66769e15b54b7d832d01198b 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
|
| @@ -107,39 +107,27 @@ class ContentLoFiDeciderTest : public testing::Test {
|
| previews_state);
|
| }
|
|
|
| - std::unique_ptr<net::URLRequest> CreateRequest(bool is_main_frame,
|
| - bool is_using_lofi) {
|
| + std::unique_ptr<net::URLRequest> CreateRequest(
|
| + bool is_main_frame,
|
| + content::PreviewsState previews_state) {
|
| std::unique_ptr<net::URLRequest> request = context_.CreateRequest(
|
| GURL("http://www.google.com/"), net::IDLE, &delegate_);
|
| AllocateRequestInfoForTesting(
|
| request.get(), (is_main_frame ? content::RESOURCE_TYPE_MAIN_FRAME
|
| : content::RESOURCE_TYPE_SUB_FRAME),
|
| - is_using_lofi ? content::SERVER_LOFI_ON : content::PREVIEWS_OFF);
|
| + previews_state);
|
| return request;
|
| }
|
|
|
| std::unique_ptr<net::URLRequest> CreateRequestByType(
|
| content::ResourceType resource_type,
|
| bool scheme_is_https,
|
| - bool is_using_lofi) {
|
| + content::PreviewsState previews_state) {
|
| std::unique_ptr<net::URLRequest> request =
|
| context_.CreateRequest(GURL(scheme_is_https ? "https://www.google.com/"
|
| : "http://www.google.com/"),
|
| net::IDLE, &delegate_);
|
| - AllocateRequestInfoForTesting(
|
| - request.get(), resource_type,
|
| - is_using_lofi ? content::SERVER_LOFI_ON : content::PREVIEWS_OFF);
|
| - return request;
|
| - }
|
| -
|
| - std::unique_ptr<net::URLRequest> CreateNoTransformRequest(
|
| - bool is_main_frame) {
|
| - std::unique_ptr<net::URLRequest> request = context_.CreateRequest(
|
| - GURL("http://www.google.com/"), net::IDLE, &delegate_);
|
| - AllocateRequestInfoForTesting(
|
| - request.get(), (is_main_frame ? content::RESOURCE_TYPE_MAIN_FRAME
|
| - : content::RESOURCE_TYPE_SUB_FRAME),
|
| - content::PREVIEWS_NO_TRANSFORM);
|
| + AllocateRequestInfoForTesting(request.get(), resource_type, previews_state);
|
| return request;
|
| }
|
|
|
| @@ -168,16 +156,6 @@ class ContentLoFiDeciderTest : public testing::Test {
|
| request, data_reduction_proxy_info, proxy_retry_info, headers);
|
| }
|
|
|
| - static void VerifyLitePageHeader(bool expected_lite_page_used,
|
| - const net::HttpRequestHeaders& headers) {
|
| - if (expected_lite_page_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_lite_page_used,
|
| - header_value.find(lite_page_directive()) != std::string::npos);
|
| - }
|
| -
|
| static void VerifyLoFiHeader(bool expected_lofi_used,
|
| bool expected_if_heavy,
|
| const net::HttpRequestHeaders& headers) {
|
| @@ -256,8 +234,16 @@ TEST_F(ContentLoFiDeciderTest, LoFiFlags) {
|
| };
|
|
|
| for (size_t i = 0; i < arraysize(tests); ++i) {
|
| + content::PreviewsState previews_state = content::PREVIEWS_UNSPECIFIED;
|
| + if (tests[i].is_using_lofi)
|
| + previews_state |= content::SERVER_LOFI_ON;
|
| + if (tests[i].is_using_lite_page)
|
| + previews_state |= content::SERVER_LITE_PAGE_ON;
|
| + if (previews_state == content::PREVIEWS_UNSPECIFIED)
|
| + previews_state = content::PREVIEWS_OFF;
|
| +
|
| std::unique_ptr<net::URLRequest> request =
|
| - CreateRequest(tests[i].is_main_frame, tests[i].is_using_lofi);
|
| + CreateRequest(tests[i].is_main_frame, previews_state);
|
| base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
| command_line->InitFromArgv(command_line->argv());
|
| if (tests[i].is_using_lite_page) {
|
| @@ -278,10 +264,12 @@ TEST_F(ContentLoFiDeciderTest, LoFiFlags) {
|
| switches::kDataReductionProxyLoFiValueAlwaysOn);
|
| headers.Clear();
|
| NotifyBeforeSendHeaders(&headers, request.get(), true);
|
| - VerifyLoFiHeader(!tests[i].is_using_lite_page && !tests[i].is_main_frame,
|
| - !tests[i].is_using_lofi, headers);
|
| + VerifyLoFiHeader(!tests[i].is_main_frame && !tests[i].is_using_lite_page,
|
| + !tests[i].is_main_frame && !tests[i].is_using_lofi &&
|
| + !tests[i].is_using_lite_page,
|
| + headers);
|
| VerifyLitePageHeader(tests[i].is_using_lite_page && tests[i].is_main_frame,
|
| - !tests[i].is_using_lofi, headers);
|
| + false, headers);
|
| VerifyLitePageIgnoreBlacklistHeader(
|
| tests[i].is_using_lite_page && tests[i].is_main_frame, headers);
|
| DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
|
| @@ -292,9 +280,7 @@ TEST_F(ContentLoFiDeciderTest, LoFiFlags) {
|
| // The Lo-Fi flag is "always-on" and Lo-Fi is being used. Lo-Fi header
|
| // should be added.
|
| AllocateRequestInfoForTesting(
|
| - request.get(), content::RESOURCE_TYPE_SUB_FRAME,
|
| - tests[i].is_using_lofi ? content::SERVER_LOFI_ON
|
| - : content::PREVIEWS_OFF);
|
| + request.get(), content::RESOURCE_TYPE_SUB_FRAME, previews_state);
|
| headers.Clear();
|
| NotifyBeforeSendHeaders(&headers, request.get(), true);
|
| VerifyLoFiHeader(!tests[i].is_using_lite_page, !tests[i].is_using_lofi,
|
| @@ -383,8 +369,10 @@ TEST_F(ContentLoFiDeciderTest, LoFiEnabledFieldTrial) {
|
| {true, content::RESOURCE_TYPE_PLUGIN_RESOURCE}};
|
|
|
| for (size_t i = 0; i < arraysize(tests); ++i) {
|
| - std::unique_ptr<net::URLRequest> request = CreateRequestByType(
|
| - tests[i].resource_type, false, tests[i].is_using_lofi);
|
| + std::unique_ptr<net::URLRequest> request =
|
| + CreateRequestByType(tests[i].resource_type, false,
|
| + tests[i].is_using_lofi ? content::SERVER_LOFI_ON
|
| + : content::PREVIEWS_OFF);
|
| net::HttpRequestHeaders headers;
|
| NotifyBeforeSendHeaders(&headers, request.get(), true);
|
| bool is_lofi_resource_type =
|
| @@ -414,8 +402,9 @@ TEST_F(ContentLoFiDeciderTest, LoFiControlFieldTrial) {
|
| } tests[] = {{false, false}, {false, true}, {true, false}, {true, true}};
|
|
|
| for (size_t i = 0; i < arraysize(tests); ++i) {
|
| - std::unique_ptr<net::URLRequest> request =
|
| - CreateRequest(tests[i].is_main_frame, tests[i].is_using_lofi);
|
| + std::unique_ptr<net::URLRequest> request = CreateRequest(
|
| + tests[i].is_main_frame, tests[i].is_using_lofi ? content::SERVER_LOFI_ON
|
| + : content::PREVIEWS_OFF);
|
| net::HttpRequestHeaders headers;
|
| NotifyBeforeSendHeaders(&headers, request.get(), true);
|
| VerifyLoFiHeader(false, false, headers);
|
| @@ -432,7 +421,7 @@ TEST_F(ContentLoFiDeciderTest, LitePageFieldTrial) {
|
| "Enabled_Preview");
|
| // Enable Lo-Fi.
|
| const struct {
|
| - bool is_using_lofi;
|
| + bool is_using_lite_page;
|
| bool is_main_frame;
|
| } tests[] = {
|
| {false, false}, {true, false}, {false, true}, {true, true},
|
| @@ -440,15 +429,60 @@ TEST_F(ContentLoFiDeciderTest, LitePageFieldTrial) {
|
|
|
| for (size_t i = 0; i < arraysize(tests); ++i) {
|
| std::unique_ptr<net::URLRequest> request =
|
| - CreateRequest(tests[i].is_main_frame, tests[i].is_using_lofi);
|
| + CreateRequest(tests[i].is_main_frame, tests[i].is_using_lite_page
|
| + ? content::SERVER_LITE_PAGE_ON
|
| + : content::PREVIEWS_OFF);
|
| net::HttpRequestHeaders headers;
|
| NotifyBeforeSendHeaders(&headers, request.get(), true);
|
| VerifyLoFiHeader(false, false, headers);
|
| - VerifyLitePageHeader(tests[i].is_main_frame, !tests[i].is_using_lofi,
|
| + VerifyLitePageHeader(tests[i].is_main_frame, !tests[i].is_using_lite_page,
|
| headers);
|
| VerifyLitePageIgnoreBlacklistHeader(false, headers);
|
| DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
|
| - EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i;
|
| + EXPECT_EQ(tests[i].is_using_lite_page, data->lofi_requested()) << i;
|
| + }
|
| +}
|
| +
|
| +TEST_F(ContentLoFiDeciderTest, LitePageFieldTrialFallbackToLoFi) {
|
| + base::FieldTrialList field_trial_list(nullptr);
|
| + base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
|
| + "Enabled_Preview");
|
| + // Enable Lo-Fi.
|
| + const struct {
|
| + bool is_using_lofi;
|
| + bool is_using_lite_page;
|
| + bool is_main_frame;
|
| + } tests[] = {
|
| + {false, false, false}, {false, false, true}, {true, false, true},
|
| + {true, false, false}, {false, true, false}, {false, true, true},
|
| + {true, true, true}, {true, true, false},
|
| + };
|
| +
|
| + for (size_t i = 0; i < arraysize(tests); ++i) {
|
| + content::PreviewsState previews_state = content::PREVIEWS_UNSPECIFIED;
|
| + if (tests[i].is_using_lofi)
|
| + previews_state |= content::SERVER_LOFI_ON;
|
| + if (tests[i].is_using_lite_page)
|
| + previews_state |= content::SERVER_LITE_PAGE_ON;
|
| + if (previews_state == content::PREVIEWS_UNSPECIFIED)
|
| + previews_state = content::PREVIEWS_OFF;
|
| +
|
| + std::unique_ptr<net::URLRequest> request =
|
| + CreateRequest(tests[i].is_main_frame, previews_state);
|
| + net::HttpRequestHeaders headers;
|
| + NotifyBeforeSendHeaders(&headers, request.get(), true);
|
| + VerifyLoFiHeader(!tests[i].is_main_frame && !tests[i].is_using_lite_page,
|
| + !tests[i].is_main_frame && !tests[i].is_using_lofi &&
|
| + !tests[i].is_using_lite_page,
|
| + headers);
|
| + VerifyLitePageHeader(tests[i].is_main_frame,
|
| + tests[i].is_main_frame && !tests[i].is_using_lite_page,
|
| + headers);
|
| + VerifyLitePageIgnoreBlacklistHeader(false, headers);
|
| + DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
|
| + EXPECT_EQ(tests[i].is_using_lofi || tests[i].is_using_lite_page,
|
| + data->lofi_requested())
|
| + << i;
|
| }
|
| }
|
|
|
| @@ -559,14 +593,14 @@ TEST_F(ContentLoFiDeciderTest, ProxyIsNotDataReductionProxy) {
|
| "Enabled");
|
| // Enable Lo-Fi.
|
| const struct {
|
| - bool is_using_lofi;
|
| + content::PreviewsState previews_state;
|
| } tests[] = {
|
| - {false}, {true},
|
| + {content::PREVIEWS_OFF}, {content::SERVER_LOFI_ON},
|
| };
|
|
|
| for (size_t i = 0; i < arraysize(tests); ++i) {
|
| std::unique_ptr<net::URLRequest> request =
|
| - CreateRequest(false, tests[i].is_using_lofi);
|
| + CreateRequest(false, tests[i].previews_state);
|
| net::HttpRequestHeaders headers;
|
| NotifyBeforeSendHeaders(&headers, request.get(), false);
|
| std::string header_value;
|
| @@ -702,7 +736,8 @@ TEST_F(ContentLoFiDeciderTest, NoTransformDoesNotAddHeader) {
|
| base::FieldTrialList field_trial_list(nullptr);
|
| base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
|
| "Enabled");
|
| - std::unique_ptr<net::URLRequest> request = CreateNoTransformRequest(false);
|
| + std::unique_ptr<net::URLRequest> request =
|
| + CreateRequest(false, content::PREVIEWS_NO_TRANSFORM);
|
| net::HttpRequestHeaders headers;
|
| NotifyBeforeSendHeaders(&headers, request.get(), true);
|
| EXPECT_FALSE(headers.HasHeader(chrome_proxy_accept_transform_header()));
|
|
|