Index: components/data_reduction_proxy/content/browser/content_lofi_decider.cc |
diff --git a/components/data_reduction_proxy/content/browser/content_lofi_decider.cc b/components/data_reduction_proxy/content/browser/content_lofi_decider.cc |
index db658528852bd6d90293832d4622c779259addc5..c5e2b4daa0920501f6c7c13ed95d9d1665bd4a3c 100644 |
--- a/components/data_reduction_proxy/content/browser/content_lofi_decider.cc |
+++ b/components/data_reduction_proxy/content/browser/content_lofi_decider.cc |
@@ -8,6 +8,7 @@ |
#include "base/strings/string_split.h" |
#include "base/strings/string_util.h" |
+#include "base/strings/stringprintf.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 "content/public/browser/resource_request_info.h" |
@@ -38,6 +39,7 @@ bool ContentLoFiDecider::IsUsingLoFiMode(const net::URLRequest& request) const { |
void ContentLoFiDecider::MaybeSetAcceptTransformHeader( |
const net::URLRequest& request, |
+ bool is_previews_disabled, |
net::HttpRequestHeaders* headers) const { |
const content::ResourceRequestInfo* request_info = |
content::ResourceRequestInfo::ForRequest(&request); |
@@ -45,17 +47,6 @@ void ContentLoFiDecider::MaybeSetAcceptTransformHeader( |
if (!request_info) |
return; |
- content::ResourceType resource_type = request_info->GetResourceType(); |
- |
- // The Lo-Fi and Lite Page directives should not be added for users in the |
- // Lo-Fi field trial "Control" group. |
- bool lofi_enabled_via_flag_or_field_trial = |
- params::IsLoFiOnViaFlags() || params::IsIncludedInLoFiEnabledFieldTrial(); |
- |
- bool lite_page_via_flag_or_field_trial = |
- params::AreLitePagesEnabledViaFlags() || |
- params::IsIncludedInLitePageFieldTrial(); |
- |
// Previews only operate on HTTP. |
if (!request.url().SchemeIs("http")) |
return; |
@@ -64,14 +55,31 @@ void ContentLoFiDecider::MaybeSetAcceptTransformHeader( |
if (headers->HasHeader(chrome_proxy_accept_transform_header())) |
return; |
+ content::ResourceType resource_type = request_info->GetResourceType(); |
+ |
if (resource_type == content::RESOURCE_TYPE_MEDIA) { |
headers->SetHeader(chrome_proxy_accept_transform_header(), |
compressed_video_directive()); |
return; |
} |
- // User is not using Lo-Fi or is part of the "Control" group. |
- if (!request_info->IsUsingLoFi() || !lofi_enabled_via_flag_or_field_trial) |
+ // The Lo-Fi and Lite Page directives should not be added for users in the |
+ // Lo-Fi field trial "Control" group. |
+ bool lofi_enabled_via_flags_or_field_trial = |
+ params::IsLoFiOnViaFlags() || params::IsIncludedInLoFiEnabledFieldTrial(); |
+ |
+ bool lite_page_enabled_via_flags_or_field_trial = |
+ (params::IsLoFiOnViaFlags() && params::AreLitePagesEnabledViaFlags()) || |
+ params::IsIncludedInLitePageFieldTrial(); |
+ |
+ // User does not have previews enabled. |
+ if (!lofi_enabled_via_flags_or_field_trial && |
+ !lite_page_enabled_via_flags_or_field_trial) { |
+ return; |
+ } |
+ |
+ // Previews has been disabled. |
+ if (is_previews_disabled) |
return; |
// LoFi is not allowed on the main frame, stylesheet, script, font resource, |
@@ -84,20 +92,25 @@ void ContentLoFiDecider::MaybeSetAcceptTransformHeader( |
resource_type == content::RESOURCE_TYPE_MEDIA || |
resource_type == content::RESOURCE_TYPE_CSP_REPORT); |
- // If in the preview field trial or the preview flag is enabled, only add the |
- // "lite-page" directive on main frame requests. Do not add "empty-image" |
+ // If in the lite page field trial or the lite page flag is enabled, only add |
+ // the "lite-page" directive on main frame requests. Do not add "empty-image" |
// directives to other requests when Lite Page previews are enabled. |
+ // Add the "if-heavy" qualifier to allow the server to provide a preview when |
+ // the page is data heavy on if a preview was not otherwise triggered. |
std::string accept_transform_value; |
- if (lite_page_via_flag_or_field_trial) { |
+ if (lite_page_enabled_via_flags_or_field_trial) { |
if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME) |
accept_transform_value = lite_page_directive(); |
- } else if (resource_type_supports_empty_image) { |
- accept_transform_value = empty_image_directive(); |
+ } else if (lofi_enabled_via_flags_or_field_trial) { |
+ if (resource_type_supports_empty_image) |
+ accept_transform_value = empty_image_directive(); |
} |
- |
if (accept_transform_value.empty()) |
return; |
+ if (!request_info->IsUsingLoFi()) |
+ accept_transform_value += base::StringPrintf(";%s", if_heavy_qualifier()); |
+ |
headers->SetHeader(chrome_proxy_accept_transform_header(), |
accept_transform_value); |
} |