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

Unified Diff: components/data_reduction_proxy/content/browser/content_lofi_decider_unittest.cc

Issue 2642793005: Create a Lite Page bit for previews and fallback to Lo-Fi (Closed)
Patch Set: remove unused frame_messages.h code Created 3 years, 10 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/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..4e5dcf9cd6a4074b7b1adfd37fd9599717ee96b3 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,28 @@ 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);
+ request.get(),
+ (is_main_frame ? content::RESOURCE_TYPE_MAIN_FRAME
+ : content::RESOURCE_TYPE_SUB_FRAME),
+ 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 +157,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 +235,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 +265,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 +281,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,
@@ -340,6 +327,11 @@ TEST_F(ContentLoFiDeciderTest, LoFiEnabledFieldTrial) {
base::FieldTrialList field_trial_list(nullptr);
base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
"Enabled");
+ // Add the Lite Page fallback field trial. Having this enabled when not in the
+ // Enabled_Previews group should not affect how Lo-Fi works.
+ base::FieldTrialList::CreateFieldTrial(
+ params::GetLitePageFallbackFieldTrialName(), "Enabled");
+
// Enable Lo-Fi.
const struct {
bool is_using_lofi;
@@ -383,8 +375,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 +408,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 +427,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 +435,103 @@ 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, LitePageFieldTrialFallbackEnabled) {
+ base::FieldTrialList field_trial_list(nullptr);
+ base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
+ "Enabled_Preview");
+ base::FieldTrialList::CreateFieldTrial(
+ params::GetLitePageFallbackFieldTrialName(), "Enabled");
+
+ // 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;
+ }
+}
+
+TEST_F(ContentLoFiDeciderTest, LitePageFieldTrialFallbackDisabled) {
+ 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(false, false, 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 +642,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 +785,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()));

Powered by Google App Engine
This is Rietveld 408576698