Chromium Code Reviews| 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..b892db9abd6c93f218d9dce2aa5c0ab9b766e0cd 100644 |
| --- a/chrome/browser/net/chrome_network_delegate.cc |
| +++ b/chrome/browser/net/chrome_network_delegate.cc |
| @@ -15,6 +15,7 @@ |
| #include "base/debug/trace_event.h" |
| #include "base/logging.h" |
| #include "base/metrics/histogram.h" |
| +#include "base/metrics/sparse_histogram.h" |
| #include "base/metrics/user_metrics.h" |
| #include "base/path_service.h" |
| #include "base/prefs/pref_member.h" |
| @@ -243,6 +244,27 @@ void ReportInvalidReferrerSend(const GURL& target_url, |
| NOTREACHED(); |
| } |
| +// Determine whether the specified |request| is for a main frame resource. Used |
| +// for histograms. |
| +bool IsMainFrameResourceRequest(const net::URLRequest* request) { |
| + const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request); |
| + return info && info->GetResourceType() == content::RESOURCE_TYPE_MAIN_FRAME; |
| +} |
| + |
| +// Record network errors that requests complete with, including OK and ABORTED. |
| +void RecordNetworkErrorHistograms(const net::URLRequest* request) { |
| + if (request->url().SchemeIs("http")) { |
| + UMA_HISTOGRAM_SPARSE_SLOWLY("Net.HttpRequestCompletionErrorCodes", |
| + std::abs(request->status().error())); |
| + |
| + if (IsMainFrameResourceRequest(request)) { |
| + UMA_HISTOGRAM_SPARSE_SLOWLY( |
| + "Net.HttpRequestCompletionErrorCodes.MainFrame", |
| + std::abs(request->status().error())); |
| + } |
| + } |
| +} |
| + |
| } // namespace |
| ChromeNetworkDelegate::ChromeNetworkDelegate( |
| @@ -549,7 +571,10 @@ 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); |
| + data_reduction_proxy_usage_stats_->OnUrlRequestCompleted( |
|
bengr
2014/12/09 23:44:13
After megjablon@'s CL lands, this will be in DataR
sclittle
2014/12/10 00:05:03
Darn. Being able to single out main frame resource
|
| + request, started, IsMainFrameResourceRequest(request)); |
| + |
| + RecordNetworkErrorHistograms(request); |
| TRACE_EVENT_ASYNC_END0("net", "URLRequest", request); |
| if (request->status().status() == net::URLRequestStatus::SUCCESS) { |