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

Unified Diff: chrome/browser/net/chrome_network_delegate.cc

Issue 734263003: Move data reduction proxy logic out of chrome and android webview network delegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Test fix Created 6 years 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: chrome/browser/net/chrome_network_delegate.cc
diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc
index ae84c3eb7eb7b887cbf8ad2baf8febf69a305fa7..5a79df93a6a956d70f40f44c0d29fd73f1467289 100644
--- a/chrome/browser/net/chrome_network_delegate.cc
+++ b/chrome/browser/net/chrome_network_delegate.cc
@@ -34,11 +34,6 @@
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/task_manager/task_manager.h"
#include "chrome/common/pref_names.h"
-#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_auth_request_handler.h"
-#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_metrics.h"
-#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_statistics_prefs.h"
-#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats.h"
-#include "components/data_reduction_proxy/core/common/data_reduction_proxy_params.h"
#include "components/domain_reliability/monitor.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_frame_host.h"
@@ -51,10 +46,6 @@
#include "net/cookies/cookie_options.h"
#include "net/http/http_request_headers.h"
#include "net/http/http_response_headers.h"
-#include "net/proxy/proxy_config.h"
-#include "net/proxy/proxy_info.h"
-#include "net/proxy/proxy_retry_info.h"
-#include "net/proxy/proxy_server.h"
#include "net/url_request/url_request.h"
#include "net/url_request/url_request_context.h"
@@ -115,90 +106,6 @@ void ForceGoogleSafeSearchCallbackWrapper(
callback.Run(rv);
}
-void UpdateContentLengthPrefs(
- int received_content_length,
- int original_content_length,
- data_reduction_proxy::DataReductionProxyRequestType request_type,
- Profile* profile,
- data_reduction_proxy::DataReductionProxyStatisticsPrefs* statistics_prefs) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- DCHECK_GE(received_content_length, 0);
- DCHECK_GE(original_content_length, 0);
-
- // Can be NULL in a unit test.
- if (!g_browser_process)
- return;
-
- // Ignore off-the-record data.
- if (!g_browser_process->profile_manager()->IsValidProfile(profile) ||
- profile->IsOffTheRecord()) {
- return;
- }
- data_reduction_proxy::UpdateContentLengthPrefs(
- received_content_length,
- original_content_length,
- profile->GetPrefs(),
- request_type, statistics_prefs);
-}
-
-void StoreAccumulatedContentLength(
- int received_content_length,
- int original_content_length,
- data_reduction_proxy::DataReductionProxyRequestType request_type,
- Profile* profile,
- data_reduction_proxy::DataReductionProxyStatisticsPrefs* statistics_prefs) {
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- base::Bind(&UpdateContentLengthPrefs,
- received_content_length,
- original_content_length,
- request_type,
- profile,
- statistics_prefs));
-}
-
-void RecordContentLengthHistograms(
- int64 received_content_length,
- int64 original_content_length,
- const base::TimeDelta& freshness_lifetime) {
- // Add the current resource to these histograms only when a valid
- // X-Original-Content-Length header is present.
- if (original_content_length >= 0) {
- UMA_HISTOGRAM_COUNTS("Net.HttpContentLengthWithValidOCL",
- received_content_length);
- UMA_HISTOGRAM_COUNTS("Net.HttpOriginalContentLengthWithValidOCL",
- original_content_length);
- UMA_HISTOGRAM_COUNTS("Net.HttpContentLengthDifferenceWithValidOCL",
- original_content_length - received_content_length);
- } else {
- // Presume the original content length is the same as the received content
- // length if the X-Original-Content-Header is not present.
- original_content_length = received_content_length;
- }
- UMA_HISTOGRAM_COUNTS("Net.HttpContentLength", received_content_length);
- UMA_HISTOGRAM_COUNTS("Net.HttpOriginalContentLength",
- original_content_length);
- UMA_HISTOGRAM_COUNTS("Net.HttpContentLengthDifference",
- original_content_length - received_content_length);
- UMA_HISTOGRAM_CUSTOM_COUNTS("Net.HttpContentFreshnessLifetime",
- freshness_lifetime.InSeconds(),
- base::TimeDelta::FromHours(1).InSeconds(),
- base::TimeDelta::FromDays(30).InSeconds(),
- 100);
- if (freshness_lifetime.InSeconds() <= 0)
- return;
- UMA_HISTOGRAM_COUNTS("Net.HttpContentLengthCacheable",
- received_content_length);
- if (freshness_lifetime.InHours() < 4)
- return;
- UMA_HISTOGRAM_COUNTS("Net.HttpContentLengthCacheable4Hours",
- received_content_length);
-
- if (freshness_lifetime.InHours() < 24)
- return;
- UMA_HISTOGRAM_COUNTS("Net.HttpContentLengthCacheable24Hours",
- received_content_length);
-}
-
#if defined(OS_ANDROID)
void RecordPrecacheStatsOnUIThread(const GURL& url,
const base::Time& fetch_time, int64 size,
@@ -254,19 +161,12 @@ ChromeNetworkDelegate::ChromeNetworkDelegate(
force_safe_search_(NULL),
force_google_safe_search_(NULL),
force_youtube_safety_mode_(NULL),
- data_reduction_proxy_enabled_(NULL),
#if defined(ENABLE_CONFIGURATION_POLICY)
url_blacklist_manager_(NULL),
#endif
domain_reliability_monitor_(NULL),
- received_content_length_(0),
- original_content_length_(0),
first_request_(true),
- prerender_tracker_(NULL),
- data_reduction_proxy_params_(NULL),
- data_reduction_proxy_usage_stats_(NULL),
- data_reduction_proxy_auth_request_handler_(NULL),
- data_reduction_proxy_statistics_prefs_(NULL) {
+ prerender_tracker_(NULL) {
DCHECK(enable_referrers);
extensions_delegate_.reset(
ChromeExtensionsNetworkDelegate::Create(event_router));
@@ -347,36 +247,6 @@ void ChromeNetworkDelegate::AllowAccessToAllFiles() {
g_allow_file_access_ = true;
}
-// static
-// TODO(megjablon): Use data_reduction_proxy_delayed_pref_service to read prefs.
-// Until updated the pref values may be up to an hour behind on desktop.
-base::Value* ChromeNetworkDelegate::HistoricNetworkStatsInfoToValue(
- PrefService* prefs) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- int64 total_received = prefs->GetInt64(
- data_reduction_proxy::prefs::kHttpReceivedContentLength);
- int64 total_original = prefs->GetInt64(
- data_reduction_proxy::prefs::kHttpOriginalContentLength);
-
- base::DictionaryValue* dict = new base::DictionaryValue();
- // Use strings to avoid overflow. base::Value only supports 32-bit integers.
- dict->SetString("historic_received_content_length",
- base::Int64ToString(total_received));
- dict->SetString("historic_original_content_length",
- base::Int64ToString(total_original));
- return dict;
-}
-
-base::Value* ChromeNetworkDelegate::SessionNetworkStatsInfoToValue() const {
- base::DictionaryValue* dict = new base::DictionaryValue();
- // Use strings to avoid overflow. base::Value only supports 32-bit integers.
- dict->SetString("session_received_content_length",
- base::Int64ToString(received_content_length_));
- dict->SetString("session_original_content_length",
- base::Int64ToString(original_content_length_));
- return dict;
-}
-
int ChromeNetworkDelegate::OnBeforeURLRequest(
net::URLRequest* request,
const net::CompletionCallback& callback,
@@ -434,29 +304,6 @@ int ChromeNetworkDelegate::OnBeforeURLRequest(
return rv;
}
-void ChromeNetworkDelegate::OnResolveProxy(
- const GURL& url,
- int load_flags,
- const net::ProxyService& proxy_service,
- net::ProxyInfo* result) {
- if (!on_resolve_proxy_handler_.is_null() &&
- !proxy_config_getter_.is_null()) {
- on_resolve_proxy_handler_.Run(url, load_flags,
- proxy_config_getter_.Run(),
- proxy_service.config(),
- proxy_service.proxy_retry_info(),
- data_reduction_proxy_params_, result);
- }
-}
-
-void ChromeNetworkDelegate::OnProxyFallback(const net::ProxyServer& bad_proxy,
- int net_error) {
- if (data_reduction_proxy_usage_stats_) {
- data_reduction_proxy_usage_stats_->OnProxyFallback(
- bad_proxy, net_error);
- }
-}
-
int ChromeNetworkDelegate::OnBeforeSendHeaders(
net::URLRequest* request,
const net::CompletionCallback& callback,
@@ -471,16 +318,6 @@ int ChromeNetworkDelegate::OnBeforeSendHeaders(
return extensions_delegate_->OnBeforeSendHeaders(request, callback, headers);
}
-void ChromeNetworkDelegate::OnBeforeSendProxyHeaders(
- net::URLRequest* request,
- const net::ProxyInfo& proxy_info,
- net::HttpRequestHeaders* headers) {
- if (data_reduction_proxy_auth_request_handler_) {
- data_reduction_proxy_auth_request_handler_->MaybeAddRequestHeader(
- request, proxy_info.proxy_server(), headers);
- }
-}
-
void ChromeNetworkDelegate::OnSendHeaders(
net::URLRequest* request,
const net::HttpRequestHeaders& headers) {
@@ -548,17 +385,14 @@ void ChromeNetworkDelegate::OnRawBytesRead(const net::URLRequest& request,
void ChromeNetworkDelegate::OnCompleted(net::URLRequest* request,
bool started) {
- if (data_reduction_proxy_usage_stats_)
- data_reduction_proxy_usage_stats_->OnUrlRequestCompleted(request, started);
-
TRACE_EVENT_ASYNC_END0("net", "URLRequest", request);
if (request->status().status() == net::URLRequestStatus::SUCCESS) {
+#if defined(OS_ANDROID)
// For better accuracy, we use the actual bytes read instead of the length
// specified with the Content-Length header, which may be inaccurate,
// or missing, as is the case with chunked encoding.
int64 received_content_length = request->received_response_content_length();
-#if defined(OS_ANDROID)
if (precache::PrecacheManager::IsPrecachingEnabled()) {
// Record precache metrics when a fetch is completed successfully, if
// precaching is enabled.
@@ -569,48 +403,6 @@ void ChromeNetworkDelegate::OnCompleted(net::URLRequest* request,
request->was_cached(), profile_));
}
#endif // defined(OS_ANDROID)
-
- // Only record for http or https urls.
- bool is_http = request->url().SchemeIs("http");
- bool is_https = request->url().SchemeIs("https");
-
- if (!request->was_cached() && // Don't record cached content
- received_content_length && // Zero-byte responses aren't useful.
- (is_http || is_https)) { // Only record for HTTP or HTTPS urls.
- int64 original_content_length =
- request->response_info().headers->GetInt64HeaderValue(
- "x-original-content-length");
- data_reduction_proxy::DataReductionProxyRequestType request_type =
- data_reduction_proxy::GetDataReductionProxyRequestType(request);
-
- base::TimeDelta freshness_lifetime =
- request->response_info().headers->GetFreshnessLifetimes(
- request->response_info().response_time).freshness;
- int64 adjusted_original_content_length =
- data_reduction_proxy::GetAdjustedOriginalContentLength(
- request_type, original_content_length,
- received_content_length);
- AccumulateContentLength(received_content_length,
- adjusted_original_content_length,
- request_type);
- RecordContentLengthHistograms(received_content_length,
- original_content_length,
- freshness_lifetime);
-
- if (data_reduction_proxy_enabled_ &&
- data_reduction_proxy_usage_stats_ &&
- !proxy_config_getter_.is_null()) {
- data_reduction_proxy_usage_stats_->RecordBytesHistograms(
- request,
- *data_reduction_proxy_enabled_,
- proxy_config_getter_.Run());
- }
- DVLOG(2) << __FUNCTION__
- << " received content length: " << received_content_length
- << " original content length: " << original_content_length
- << " url: " << request->url();
- }
-
extensions_delegate_->OnCompleted(request, started);
} else if (request->status().status() == net::URLRequestStatus::FAILED ||
request->status().status() == net::URLRequestStatus::CANCELED) {
@@ -822,20 +614,3 @@ bool ChromeNetworkDelegate::OnCancelURLRequestWithPolicyViolatingReferrerHeader(
referrer_url, callstack));
return true;
}
-
-void ChromeNetworkDelegate::AccumulateContentLength(
- int64 received_content_length,
- int64 original_content_length,
- data_reduction_proxy::DataReductionProxyRequestType request_type) {
- DCHECK_GE(received_content_length, 0);
- DCHECK_GE(original_content_length, 0);
- if (data_reduction_proxy_statistics_prefs_) {
- StoreAccumulatedContentLength(received_content_length,
- original_content_length,
- request_type,
- reinterpret_cast<Profile*>(profile_),
- data_reduction_proxy_statistics_prefs_);
- }
- received_content_length_ += received_content_length;
- original_content_length_ += original_content_length;
-}
« no previous file with comments | « chrome/browser/net/chrome_network_delegate.h ('k') | chrome/browser/profiles/off_the_record_profile_io_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698