| 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(
|
| 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))
|
| + 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(
|
|
|