Index: chrome/browser/android/offline_pages/background_loader_offliner.cc |
diff --git a/chrome/browser/android/offline_pages/background_loader_offliner.cc b/chrome/browser/android/offline_pages/background_loader_offliner.cc |
index 9b163c5ee7c1e196bcf3eca650134188c3371e59..9cd60c6e843d1350ee771d357c87cf8e05eaabe5 100644 |
--- a/chrome/browser/android/offline_pages/background_loader_offliner.cc |
+++ b/chrome/browser/android/offline_pages/background_loader_offliner.cc |
@@ -44,6 +44,23 @@ class OfflinerData : public content::WebContentsUserData<OfflinerData> { |
BackgroundLoaderOffliner* offliner_; |
}; |
+std::string AddHistogramSuffix(const ClientId& client_id, |
+ const char* histogram_name) { |
+ if (client_id.name_space.empty()) { |
+ NOTREACHED(); |
+ return histogram_name; |
+ } |
+ std::string adjusted_histogram_name(histogram_name); |
+ adjusted_histogram_name += "." + client_id.name_space; |
+ return adjusted_histogram_name; |
+} |
+ |
+void RecordErrorCauseUMA(const ClientId& client_id, net::Error error_code) { |
+ UMA_HISTOGRAM_SPARSE_SLOWLY( |
+ AddHistogramSuffix(client_id, |
+ "OfflinePages.Background.BackgroundLoadingFailedCode"), |
+ std::abs(error_code)); |
+} |
} // namespace |
BackgroundLoaderOffliner::BackgroundLoaderOffliner( |
@@ -231,7 +248,8 @@ void BackgroundLoaderOffliner::DidFinishNavigation( |
// If there was an error of any kind (certificate, client, DNS, etc), |
// Mark as error page. Resetting here causes RecordNavigationMetrics to crash. |
if (navigation_handle->IsErrorPage()) { |
- // TODO(chili): we need to UMA this. |
+ RecordErrorCauseUMA(pending_request_->client_id(), |
+ navigation_handle->GetNetErrorCode()); |
switch (navigation_handle->GetNetErrorCode()) { |
case net::ERR_ACCESS_DENIED: |
case net::ERR_ADDRESS_INVALID: |