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

Unified Diff: components/data_reduction_proxy/core/browser/data_reduction_proxy_config.cc

Issue 1310743003: Consistently use LoFi for an entire page (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: using UserData and adressing nasko comments Created 5 years, 3 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/core/browser/data_reduction_proxy_config.cc
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.cc
index 146af5c18ede27f1acdf2b1450d4c143e75df2cf..f3442194e13bfcd9838ed2096f04107d0e10334e 100644
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.cc
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.cc
@@ -77,87 +77,6 @@ bool FindProxyInList(const std::vector<net::ProxyServer>& proxy_list,
return false;
}
-// Following UMA is plotted to measure how frequently Lo-Fi state changes.
-// Too frequent changes are undesirable.
-void RecordAutoLoFiRequestHeaderStateChange(
- net::NetworkChangeNotifier::ConnectionType connection_type,
- bool previous_header_low,
- bool current_header_low) {
- // Auto Lo-Fi request header state changes.
- // Possible Lo-Fi header directives are empty ("") and low ("q=low").
- // This enum must remain synchronized with the enum of the same name in
- // metrics/histograms/histograms.xml.
- enum AutoLoFiRequestHeaderState {
- AUTO_LOFI_REQUEST_HEADER_STATE_EMPTY_TO_EMPTY = 0,
- AUTO_LOFI_REQUEST_HEADER_STATE_EMPTY_TO_LOW = 1,
- AUTO_LOFI_REQUEST_HEADER_STATE_LOW_TO_EMPTY = 2,
- AUTO_LOFI_REQUEST_HEADER_STATE_LOW_TO_LOW = 3,
- AUTO_LOFI_REQUEST_HEADER_STATE_INDEX_BOUNDARY
- };
-
- AutoLoFiRequestHeaderState state;
- if (!previous_header_low) {
- if (current_header_low)
- state = AUTO_LOFI_REQUEST_HEADER_STATE_EMPTY_TO_LOW;
- else
- state = AUTO_LOFI_REQUEST_HEADER_STATE_EMPTY_TO_EMPTY;
- } else {
- if (current_header_low) {
- // Low to low in useful in checking how many consecutive page loads
- // are done with Lo-Fi enabled.
- state = AUTO_LOFI_REQUEST_HEADER_STATE_LOW_TO_LOW;
- } else {
- state = AUTO_LOFI_REQUEST_HEADER_STATE_LOW_TO_EMPTY;
- }
- }
-
- switch (connection_type) {
- case net::NetworkChangeNotifier::CONNECTION_UNKNOWN:
- UMA_HISTOGRAM_ENUMERATION(
- "DataReductionProxy.AutoLoFiRequestHeaderState.Unknown", state,
- AUTO_LOFI_REQUEST_HEADER_STATE_INDEX_BOUNDARY);
- break;
- case net::NetworkChangeNotifier::CONNECTION_ETHERNET:
- UMA_HISTOGRAM_ENUMERATION(
- "DataReductionProxy.AutoLoFiRequestHeaderState.Ethernet", state,
- AUTO_LOFI_REQUEST_HEADER_STATE_INDEX_BOUNDARY);
- break;
- case net::NetworkChangeNotifier::CONNECTION_WIFI:
- UMA_HISTOGRAM_ENUMERATION(
- "DataReductionProxy.AutoLoFiRequestHeaderState.WiFi", state,
- AUTO_LOFI_REQUEST_HEADER_STATE_INDEX_BOUNDARY);
- break;
- case net::NetworkChangeNotifier::CONNECTION_2G:
- UMA_HISTOGRAM_ENUMERATION(
- "DataReductionProxy.AutoLoFiRequestHeaderState.2G", state,
- AUTO_LOFI_REQUEST_HEADER_STATE_INDEX_BOUNDARY);
- break;
- case net::NetworkChangeNotifier::CONNECTION_3G:
- UMA_HISTOGRAM_ENUMERATION(
- "DataReductionProxy.AutoLoFiRequestHeaderState.3G", state,
- AUTO_LOFI_REQUEST_HEADER_STATE_INDEX_BOUNDARY);
- break;
- case net::NetworkChangeNotifier::CONNECTION_4G:
- UMA_HISTOGRAM_ENUMERATION(
- "DataReductionProxy.AutoLoFiRequestHeaderState.4G", state,
- AUTO_LOFI_REQUEST_HEADER_STATE_INDEX_BOUNDARY);
- break;
- case net::NetworkChangeNotifier::CONNECTION_NONE:
- UMA_HISTOGRAM_ENUMERATION(
- "DataReductionProxy.AutoLoFiRequestHeaderState.None", state,
- AUTO_LOFI_REQUEST_HEADER_STATE_INDEX_BOUNDARY);
- break;
- case net::NetworkChangeNotifier::CONNECTION_BLUETOOTH:
- UMA_HISTOGRAM_ENUMERATION(
- "DataReductionProxy.AutoLoFiRequestHeaderState.Bluetooth", state,
- AUTO_LOFI_REQUEST_HEADER_STATE_INDEX_BOUNDARY);
- break;
- default:
- NOTREACHED();
- break;
- }
-}
-
} // namespace
namespace data_reduction_proxy {
@@ -243,7 +162,7 @@ DataReductionProxyConfig::DataReductionProxyConfig(
network_quality_last_updated_(base::TimeTicks()),
network_prohibitively_slow_(false),
connection_type_(net::NetworkChangeNotifier::GetConnectionType()),
- lofi_status_(LOFI_STATUS_TEMPORARILY_OFF),
+ lofi_off_(false),
last_main_frame_request_(base::TimeTicks::Now()),
network_quality_at_last_main_frame_request_(
NETWORK_QUALITY_AT_LAST_MAIN_FRAME_REQUEST_UNKNOWN) {
@@ -462,38 +381,6 @@ bool DataReductionProxyConfig::IsIncludedInLoFiControlFieldTrial() const {
kControl;
}
-LoFiStatus DataReductionProxyConfig::GetLoFiStatus() const {
- DCHECK(thread_checker_.CalledOnValidThread());
- return lofi_status_;
-}
-
-// static
-bool DataReductionProxyConfig::ShouldUseLoFiHeaderForRequests(
- LoFiStatus lofi_status) {
- switch (lofi_status) {
- case LOFI_STATUS_OFF:
- case LOFI_STATUS_TEMPORARILY_OFF:
- case LOFI_STATUS_ACTIVE_CONTROL:
- case LOFI_STATUS_INACTIVE_CONTROL:
- case LOFI_STATUS_INACTIVE:
- return false;
- // Lo-Fi header can be used only if Lo-Fi is not temporarily off and either
- // the user has enabled Lo-Fi through flags, or session is in Lo-Fi enabled
- // group with network quality prohibitively slow.
- case LOFI_STATUS_ACTIVE_FROM_FLAGS:
- case LOFI_STATUS_ACTIVE:
- return true;
- default:
- NOTREACHED() << lofi_status;
- }
- return false;
-}
-
-bool DataReductionProxyConfig::ShouldUseLoFiHeaderForRequests() const {
- DCHECK(thread_checker_.CalledOnValidThread());
- return ShouldUseLoFiHeaderForRequests(lofi_status_);
-}
-
void DataReductionProxyConfig::PopulateAutoLoFiParams() {
std::string field_trial = params::GetLoFiFieldTrialName();
@@ -763,7 +650,7 @@ void DataReductionProxyConfig::SecureProxyCheck(
void DataReductionProxyConfig::SetLoFiModeOff() {
DCHECK(thread_checker_.CalledOnValidThread());
- lofi_status_ = LOFI_STATUS_OFF;
+ lofi_off_ = true;
}
void DataReductionProxyConfig::RecordAutoLoFiAccuracyRate(
@@ -863,8 +750,7 @@ void DataReductionProxyConfig::RecordAutoLoFiAccuracyRate(
}
}
-void DataReductionProxyConfig::UpdateLoFiStatusOnMainFrameRequest(
- bool user_temporarily_disabled_lofi,
+bool DataReductionProxyConfig::ShouldTurnOnLoFiOnMainFrameRequest(
const net::NetworkQualityEstimator* network_quality_estimator) {
DCHECK(thread_checker_.CalledOnValidThread());
@@ -882,77 +768,33 @@ void DataReductionProxyConfig::UpdateLoFiStatusOnMainFrameRequest(
network_quality_at_last_main_frame_request_ =
NETWORK_QUALITY_AT_LAST_MAIN_FRAME_REQUEST_UNKNOWN;
- // If Lo-Fi has been permanently turned off, its status can't change.
- if (lofi_status_ == LOFI_STATUS_OFF)
- return;
-
- // If the user has temporarily disabled Lo-Fi on a main frame request, it will
- // remain disabled until next main frame request.
- if (user_temporarily_disabled_lofi) {
- switch (lofi_status_) {
- // Turn off Lo-Fi temporarily (until next main frame request) if it was
- // enabled from flags or because the session is in Lo-Fi enabled group.
- case LOFI_STATUS_ACTIVE_FROM_FLAGS:
- case LOFI_STATUS_ACTIVE:
- case LOFI_STATUS_INACTIVE:
- lofi_status_ = LOFI_STATUS_TEMPORARILY_OFF;
- return;
- // Lo-Fi is already temporarily off, so no need to change state.
- case LOFI_STATUS_TEMPORARILY_OFF:
- // If the current session does not have Lo-Fi switch, is not in Auto Lo-Fi
- // enabled group and is in Auto Lo-Fi control group, then we do not need
- // to temporarily disable Lo-Fi because it would never be used.
- case LOFI_STATUS_ACTIVE_CONTROL:
- case LOFI_STATUS_INACTIVE_CONTROL:
- return;
-
- default:
- NOTREACHED() << "Unexpected Lo-Fi status = " << lofi_status_;
- }
- }
+ // If Lo-Fi has been turned off, its status can't change.
+ if (lofi_off_)
+ return false;
- if (params::IsLoFiAlwaysOnViaFlags()) {
- lofi_status_ = LOFI_STATUS_ACTIVE_FROM_FLAGS;
- return;
- }
+ if (params::IsLoFiAlwaysOnViaFlags())
+ return true;
if (params::IsLoFiCellularOnlyViaFlags()) {
if (net::NetworkChangeNotifier::IsConnectionCellular(
bengr 2015/09/21 17:56:08 How about return net::NetworkChangeNotifier::IsCon
megjablon 2015/09/22 20:35:52 Done.
net::NetworkChangeNotifier::GetConnectionType())) {
- lofi_status_ = LOFI_STATUS_ACTIVE_FROM_FLAGS;
- return;
+ return true;
}
- lofi_status_ = LOFI_STATUS_TEMPORARILY_OFF;
- return;
+ return false;
}
- // Store the previous state of Lo-Fi, so that change in Lo-Fi status can be
- // recorded properly. This is not needed for the control group, because it
- // is only used to report changes in request headers, and the request headers
- // are never modified in the control group.
- LoFiStatus previous_lofi_status = lofi_status_;
-
if (params::IsLoFiSlowConnectionsOnlyViaFlags() ||
- IsIncludedInLoFiEnabledFieldTrial()) {
- lofi_status_ = IsNetworkQualityProhibitivelySlow(network_quality_estimator)
- ? LOFI_STATUS_ACTIVE
- : LOFI_STATUS_INACTIVE;
- RecordAutoLoFiRequestHeaderStateChange(
- connection_type_, ShouldUseLoFiHeaderForRequests(previous_lofi_status),
- ShouldUseLoFiHeaderForRequests(lofi_status_));
- return;
- }
-
- if (IsIncludedInLoFiControlFieldTrial()) {
- lofi_status_ = IsNetworkQualityProhibitivelySlow(network_quality_estimator)
- ? LOFI_STATUS_ACTIVE_CONTROL
- : LOFI_STATUS_INACTIVE_CONTROL;
- return;
+ IsIncludedInLoFiEnabledFieldTrial() ||
+ IsIncludedInLoFiControlFieldTrial()) {
+ if (IsNetworkQualityProhibitivelySlow(network_quality_estimator))
bengr 2015/09/21 17:56:08 Same here: return IsNetworkQuality...
megjablon 2015/09/22 20:35:52 Done.
+ return true;
+ return false;
}
// If Lo-Fi is not enabled through command line and the user is not in
- // Lo-Fi field trials, we set Lo-Fi to permanent off.
- lofi_status_ = LOFI_STATUS_OFF;
+ // Lo-Fi field trials, set Lo-Fi to off.
+ lofi_off_ = true;
+ return false;
}
void DataReductionProxyConfig::GetNetworkList(

Powered by Google App Engine
This is Rietveld 408576698