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 5a79df93a6a956d70f40f44c0d29fd73f1467289..563a4be74e816d2d17e499120a2386a1844a114b 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" |
| @@ -40,6 +41,7 @@ |
| #include "content/public/browser/render_view_host.h" |
| #include "content/public/browser/resource_request_info.h" |
| #include "net/base/host_port_pair.h" |
| +#include "net/base/load_flags.h" |
| #include "net/base/net_errors.h" |
| #include "net/base/net_log.h" |
| #include "net/cookies/canonical_cookie.h" |
| @@ -150,6 +152,21 @@ void ReportInvalidReferrerSend(const GURL& target_url, |
| NOTREACHED(); |
| } |
| +// Record network errors that HTTP 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 (request->load_flags() & net::LOAD_MAIN_FRAME) { |
| + UMA_HISTOGRAM_SPARSE_SLOWLY( |
| + "Net.HttpRequestCompletionErrorCodes.MainFrame", |
|
mmenke
2014/12/12 21:09:30
Not needed. See Net.ErrorCodesForMainFrame3 and N
sclittle
2014/12/12 22:10:20
Please clarify, for "not needed", are you referrin
mmenke
2014/12/15 16:55:43
Ahh...you're right, they're different, I missed th
|
| + std::abs(request->status().error())); |
| + } |
| + } |
| +} |
| + |
| } // namespace |
| ChromeNetworkDelegate::ChromeNetworkDelegate( |
| @@ -385,6 +402,8 @@ void ChromeNetworkDelegate::OnRawBytesRead(const net::URLRequest& request, |
| void ChromeNetworkDelegate::OnCompleted(net::URLRequest* request, |
| bool started) { |
| + RecordNetworkErrorHistograms(request); |
| + |
| TRACE_EVENT_ASYNC_END0("net", "URLRequest", request); |
| if (request->status().status() == net::URLRequestStatus::SUCCESS) { |
| #if defined(OS_ANDROID) |