| Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc
|
| diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc
|
| index 7598a203dce9fcebdbbb5b6d58c9a808ca96d97f..9b3a9b6a23e252f9884878b991777c82316accb0 100644
|
| --- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc
|
| +++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc
|
| @@ -16,6 +16,7 @@
|
| #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_io_data.h"
|
| #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options.h"
|
| #include "components/data_reduction_proxy/core/common/data_reduction_proxy_event_creator.h"
|
| +#include "components/data_reduction_proxy/core/common/lofi_decider.h"
|
| #include "net/base/load_flags.h"
|
| #include "net/http/http_response_headers.h"
|
| #include "net/proxy/proxy_info.h"
|
| @@ -27,8 +28,6 @@
|
|
|
| namespace {
|
|
|
| -class NetworkQualityEstimator;
|
| -
|
| // |lofi_low_header_added| is set to true iff Lo-Fi "q=low" request header can
|
| // be added to the Chrome proxy headers.
|
| // |received_content_length| is the number of prefilter bytes received.
|
| @@ -175,25 +174,23 @@ void DataReductionProxyNetworkDelegate::OnBeforeSendProxyHeadersInternal(
|
| net::HttpRequestHeaders* headers) {
|
| DCHECK(data_reduction_proxy_config_);
|
|
|
| - // TODO(bengr): Investigate a better approach to update the network
|
| - // quality so that state of Lo-Fi is stored per page.
|
| - net::NetworkQualityEstimator* network_quality_estimator = nullptr;
|
| - if (request && request->context())
|
| - network_quality_estimator = request->context()->network_quality_estimator();
|
| -
|
| - if (request && ((request->load_flags() & net::LOAD_MAIN_FRAME) != 0)) {
|
| - data_reduction_proxy_config_->UpdateLoFiStatusOnMainFrameRequest(
|
| - ((request->load_flags() & net::LOAD_BYPASS_CACHE) != 0),
|
| - network_quality_estimator);
|
| - if (data_reduction_proxy_io_data_) {
|
| + bool is_using_lofi_mode = false;
|
| +
|
| + if (data_reduction_proxy_io_data_ &&
|
| + data_reduction_proxy_io_data_->lofi_decider() && request) {
|
| + LoFiDecider* lofi_decider = data_reduction_proxy_io_data_->lofi_decider();
|
| + is_using_lofi_mode = lofi_decider->IsUsingLoFiMode(*request);
|
| +
|
| + if ((request->load_flags() & net::LOAD_MAIN_FRAME) != 0) {
|
| + // TODO(megjablon): Need to switch to per page.
|
| data_reduction_proxy_io_data_->SetLoFiModeActiveOnMainFrame(
|
| - data_reduction_proxy_config_->ShouldUseLoFiHeaderForRequests());
|
| + is_using_lofi_mode);
|
| }
|
| }
|
|
|
| if (data_reduction_proxy_request_options_) {
|
| data_reduction_proxy_request_options_->MaybeAddRequestHeader(
|
| - request, proxy_info.proxy_server(), headers);
|
| + request, proxy_info.proxy_server(), headers, is_using_lofi_mode);
|
| }
|
| }
|
|
|
| @@ -256,13 +253,13 @@ void DataReductionProxyNetworkDelegate::OnCompletedInternal(
|
|
|
| DCHECK(data_reduction_proxy_config_);
|
|
|
| - // TODO(bengr): Investigate a better approach to record the Lo-Fi
|
| - // histogram. State of Lo-Fi should be stored per page.
|
| RecordContentLengthHistograms(
|
| // |data_reduction_proxy_io_data_| can be NULL for Webview.
|
| data_reduction_proxy_io_data_ &&
|
| data_reduction_proxy_io_data_->IsEnabled() &&
|
| - data_reduction_proxy_config_->ShouldUseLoFiHeaderForRequests(),
|
| + data_reduction_proxy_io_data_->lofi_decider() &&
|
| + data_reduction_proxy_io_data_->lofi_decider()->IsUsingLoFiMode(
|
| + *request),
|
| received_content_length, original_content_length, freshness_lifetime);
|
| experiments_stats_->RecordBytes(request->request_time(), request_type,
|
| received_content_length,
|
|
|