Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options.cc |
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options.cc |
index 6a52cdf18446ea1cabf8224b51949a8aadafcf55..b165acad2990bb090d92a7f69eb0054cde629a40 100644 |
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options.cc |
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options.cc |
@@ -161,25 +161,26 @@ void DataReductionProxyRequestOptions::UpdateVersion() { |
} |
void DataReductionProxyRequestOptions::MayRegenerateHeaderBasedOnLoFi( |
- const net::URLRequest* request) { |
+ bool is_using_lofi_mode) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
- if (!data_reduction_proxy_config_) |
- return; |
- |
- bool lofi_now_enabled = |
- !(request && request->load_flags() & net::LOAD_BYPASS_CACHE) && |
- data_reduction_proxy_config_->ShouldUseLoFiHeaderForRequests(); |
+ // The Lo-Fi directive should not be added for users in the Lo-Fi field |
+ // trial "Control" group. Check that the user is in a group that should |
+ // get "q=low". |
+ bool lofi_enabled_via_flag_or_field_trial = |
+ params::IsLoFiOnViaFlags() || params::IsIncludedInLoFiEnabledFieldTrial(); |
// Lo-Fi was not enabled, but now is. Add the header option. |
- if (lofi_.empty() && lofi_now_enabled) { |
+ if (lofi_.empty() && is_using_lofi_mode && |
+ lofi_enabled_via_flag_or_field_trial) { |
lofi_ = "low"; |
RegenerateRequestHeaderValue(); |
return; |
} |
// Lo-Fi was enabled, but no longer is. Remove the header option. |
- if (!lofi_.empty() && !lofi_now_enabled) { |
+ if (!lofi_.empty() && |
+ (!is_using_lofi_mode || !lofi_enabled_via_flag_or_field_trial)) { |
lofi_ = std::string(); |
RegenerateRequestHeaderValue(); |
return; |
@@ -188,7 +189,7 @@ void DataReductionProxyRequestOptions::MayRegenerateHeaderBasedOnLoFi( |
// User was not part of Lo-Fi active control experiment, but now is. |
if (std::find(experiments_.begin(), experiments_.end(), |
std::string(kLoFiExperimentID)) == experiments_.end() && |
- data_reduction_proxy_config_->IsInLoFiActiveControlExperiment()) { |
+ is_using_lofi_mode && params::IsIncludedInLoFiControlFieldTrial()) { |
experiments_.push_back(kLoFiExperimentID); |
RegenerateRequestHeaderValue(); |
DCHECK(std::find(experiments_.begin(), experiments_.end(), |
@@ -200,7 +201,7 @@ void DataReductionProxyRequestOptions::MayRegenerateHeaderBasedOnLoFi( |
auto it = std::find(experiments_.begin(), experiments_.end(), |
std::string(kLoFiExperimentID)); |
if (it != experiments_.end() && |
- !data_reduction_proxy_config_->IsInLoFiActiveControlExperiment()) { |
+ (!is_using_lofi_mode || !params::IsIncludedInLoFiControlFieldTrial())) { |
experiments_.erase(it); |
RegenerateRequestHeaderValue(); |
DCHECK(std::find(experiments_.begin(), experiments_.end(), |
@@ -248,31 +249,34 @@ void DataReductionProxyRequestOptions::RandBytes(void* output, |
void DataReductionProxyRequestOptions::MaybeAddRequestHeader( |
net::URLRequest* request, |
const net::ProxyServer& proxy_server, |
- net::HttpRequestHeaders* request_headers) { |
+ net::HttpRequestHeaders* request_headers, |
+ bool is_using_lofi_mode) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
if (!proxy_server.is_valid()) |
return; |
if (proxy_server.is_direct()) |
return; |
MaybeAddRequestHeaderImpl(request, proxy_server.host_port_pair(), false, |
- request_headers); |
+ request_headers, is_using_lofi_mode); |
} |
void DataReductionProxyRequestOptions::MaybeAddProxyTunnelRequestHandler( |
const net::HostPortPair& proxy_server, |
net::HttpRequestHeaders* request_headers) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
- MaybeAddRequestHeaderImpl(nullptr, proxy_server, true, request_headers); |
+ MaybeAddRequestHeaderImpl(nullptr, proxy_server, true, request_headers, |
+ false); |
} |
void DataReductionProxyRequestOptions::SetHeader( |
const net::URLRequest* request, |
- net::HttpRequestHeaders* headers) { |
+ net::HttpRequestHeaders* headers, |
+ bool is_using_lofi_mode) { |
base::Time now = Now(); |
// Authorization credentials must be regenerated if they are expired. |
if (!use_assigned_credentials_ && (now > credentials_expiration_time_)) |
UpdateCredentials(); |
- MayRegenerateHeaderBasedOnLoFi(request); |
+ MayRegenerateHeaderBasedOnLoFi(is_using_lofi_mode); |
const char kChromeProxyHeader[] = "Chrome-Proxy"; |
std::string header_value; |
if (headers->HasHeader(kChromeProxyHeader)) { |
@@ -392,13 +396,14 @@ void DataReductionProxyRequestOptions::MaybeAddRequestHeaderImpl( |
const net::URLRequest* request, |
const net::HostPortPair& proxy_server, |
bool expect_ssl, |
- net::HttpRequestHeaders* request_headers) { |
+ net::HttpRequestHeaders* request_headers, |
+ bool is_using_lofi_mode) { |
if (proxy_server.IsEmpty()) |
return; |
if (data_reduction_proxy_config_->IsDataReductionProxy(proxy_server, NULL) && |
data_reduction_proxy_config_->UsingHTTPTunnel(proxy_server) == |
expect_ssl) { |
- SetHeader(request, request_headers); |
+ SetHeader(request, request_headers, is_using_lofi_mode); |
} |
} |