| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/service_worker/service_worker_metrics.h" | 5 #include "content/browser/service_worker/service_worker_metrics.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/metrics/histogram_macros.h" | 10 #include "base/metrics/histogram_macros.h" |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 base::HistogramBase::kUmaTargetedHistogramFlag); | 137 base::HistogramBase::kUmaTargetedHistogramFlag); |
| 138 histogram_pointer->Add(status); | 138 histogram_pointer->Add(status); |
| 139 } | 139 } |
| 140 | 140 |
| 141 void RecordURLMetricOnUI(const GURL& url) { | 141 void RecordURLMetricOnUI(const GURL& url) { |
| 142 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 142 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 143 GetContentClient()->browser()->RecordURLMetric( | 143 GetContentClient()->browser()->RecordURLMetric( |
| 144 "ServiceWorker.ControlledPageUrl", url); | 144 "ServiceWorker.ControlledPageUrl", url); |
| 145 } | 145 } |
| 146 | 146 |
| 147 ServiceWorkerMetrics::Site SiteFromURL(const GURL& gurl) { | |
| 148 // UIThreadSearchTermsData::GoogleBaseURLValue() returns the google base | |
| 149 // URL, but not available in content layer. | |
| 150 static const char google_like_scope_prefix[] = "https://www.google."; | |
| 151 static const char ntp_scope_path[] = "/_/chrome/"; | |
| 152 if (base::StartsWith(gurl.spec(), google_like_scope_prefix, | |
| 153 base::CompareCase::INSENSITIVE_ASCII) && | |
| 154 base::StartsWith(gurl.path(), ntp_scope_path, | |
| 155 base::CompareCase::SENSITIVE)) { | |
| 156 return ServiceWorkerMetrics::Site::NEW_TAB_PAGE; | |
| 157 } | |
| 158 | |
| 159 return ServiceWorkerMetrics::Site::OTHER; | |
| 160 } | |
| 161 | |
| 162 enum EventHandledRatioType { | 147 enum EventHandledRatioType { |
| 163 EVENT_HANDLED_NONE, | 148 EVENT_HANDLED_NONE, |
| 164 EVENT_HANDLED_SOME, | 149 EVENT_HANDLED_SOME, |
| 165 EVENT_HANDLED_ALL, | 150 EVENT_HANDLED_ALL, |
| 166 NUM_EVENT_HANDLED_RATIO_TYPE, | 151 NUM_EVENT_HANDLED_RATIO_TYPE, |
| 167 }; | 152 }; |
| 168 | 153 |
| 169 } // namespace | 154 } // namespace |
| 170 | 155 |
| 171 const char* ServiceWorkerMetrics::EventTypeToString(EventType event_type) { | 156 const char* ServiceWorkerMetrics::EventTypeToString(EventType event_type) { |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 return "Navigation Hint Link Tap Unconfirmed"; | 191 return "Navigation Hint Link Tap Unconfirmed"; |
| 207 case EventType::NAVIGATION_HINT_LINK_TAP_DOWN: | 192 case EventType::NAVIGATION_HINT_LINK_TAP_DOWN: |
| 208 return "Navigation Hint Link Tap Down"; | 193 return "Navigation Hint Link Tap Down"; |
| 209 case EventType::NUM_TYPES: | 194 case EventType::NUM_TYPES: |
| 210 break; | 195 break; |
| 211 } | 196 } |
| 212 NOTREACHED() << "Got unexpected event type: " << static_cast<int>(event_type); | 197 NOTREACHED() << "Got unexpected event type: " << static_cast<int>(event_type); |
| 213 return "error"; | 198 return "error"; |
| 214 } | 199 } |
| 215 | 200 |
| 201 ServiceWorkerMetrics::Site ServiceWorkerMetrics::SiteFromURL(const GURL& url) { |
| 202 // UIThreadSearchTermsData::GoogleBaseURLValue() returns the google base |
| 203 // URL, but not available in content layer. |
| 204 static const char google_like_scope_prefix[] = "https://www.google."; |
| 205 static const char ntp_scope_path[] = "/_/chrome/"; |
| 206 if (base::StartsWith(url.spec(), google_like_scope_prefix, |
| 207 base::CompareCase::INSENSITIVE_ASCII) && |
| 208 base::StartsWith(url.path(), ntp_scope_path, |
| 209 base::CompareCase::SENSITIVE)) { |
| 210 return ServiceWorkerMetrics::Site::NEW_TAB_PAGE; |
| 211 } |
| 212 |
| 213 return ServiceWorkerMetrics::Site::OTHER; |
| 214 } |
| 215 |
| 216 bool ServiceWorkerMetrics::IsNavigationHintEvent(EventType event_type) { | 216 bool ServiceWorkerMetrics::IsNavigationHintEvent(EventType event_type) { |
| 217 return event_type == EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN || | 217 return event_type == EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN || |
| 218 event_type == EventType::NAVIGATION_HINT_LINK_TAP_UNCONFIRMED || | 218 event_type == EventType::NAVIGATION_HINT_LINK_TAP_UNCONFIRMED || |
| 219 event_type == EventType::NAVIGATION_HINT_LINK_TAP_DOWN; | 219 event_type == EventType::NAVIGATION_HINT_LINK_TAP_DOWN; |
| 220 } | 220 } |
| 221 | 221 |
| 222 bool ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(Site site) { | 222 bool ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(Site site) { |
| 223 return site == ServiceWorkerMetrics::Site::NEW_TAB_PAGE; | 223 return site == ServiceWorkerMetrics::Site::NEW_TAB_PAGE; |
| 224 } | 224 } |
| 225 | 225 |
| 226 bool ServiceWorkerMetrics::ShouldExcludeURLFromHistogram(const GURL& url) { | |
| 227 return ShouldExcludeSiteFromHistogram(SiteFromURL(url)); | |
| 228 } | |
| 229 | |
| 230 void ServiceWorkerMetrics::CountInitDiskCacheResult(bool result) { | 226 void ServiceWorkerMetrics::CountInitDiskCacheResult(bool result) { |
| 231 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.DiskCache.InitResult", result); | 227 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.DiskCache.InitResult", result); |
| 232 } | 228 } |
| 233 | 229 |
| 234 void ServiceWorkerMetrics::CountReadResponseResult( | 230 void ServiceWorkerMetrics::CountReadResponseResult( |
| 235 ServiceWorkerMetrics::ReadResponseResult result) { | 231 ServiceWorkerMetrics::ReadResponseResult result) { |
| 236 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.DiskCache.ReadResponseResult", | 232 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.DiskCache.ReadResponseResult", |
| 237 result, NUM_READ_RESPONSE_RESULT_TYPES); | 233 result, NUM_READ_RESPONSE_RESULT_TYPES); |
| 238 } | 234 } |
| 239 | 235 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 UMA_HISTOGRAM_SPARSE_SLOWLY("ServiceWorker.Storage.PurgeResourceResult", | 267 UMA_HISTOGRAM_SPARSE_SLOWLY("ServiceWorker.Storage.PurgeResourceResult", |
| 272 std::abs(net_error)); | 268 std::abs(net_error)); |
| 273 } | 269 } |
| 274 | 270 |
| 275 void ServiceWorkerMetrics::RecordDeleteAndStartOverResult( | 271 void ServiceWorkerMetrics::RecordDeleteAndStartOverResult( |
| 276 DeleteAndStartOverResult result) { | 272 DeleteAndStartOverResult result) { |
| 277 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.Storage.DeleteAndStartOverResult", | 273 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.Storage.DeleteAndStartOverResult", |
| 278 result, NUM_DELETE_AND_START_OVER_RESULT_TYPES); | 274 result, NUM_DELETE_AND_START_OVER_RESULT_TYPES); |
| 279 } | 275 } |
| 280 | 276 |
| 281 void ServiceWorkerMetrics::CountControlledPageLoad(const GURL& url, | 277 void ServiceWorkerMetrics::CountControlledPageLoad(Site site, |
| 282 bool has_fetch_handler, | 278 const GURL& url, |
| 283 bool is_main_frame_load) { | 279 bool is_main_frame_load) { |
| 284 Site site = SiteFromURL(url); | 280 DCHECK_NE(site, Site::OTHER); |
| 285 if (site == Site::OTHER) { | |
| 286 site = (has_fetch_handler) ? Site::WITH_FETCH_HANDLER | |
| 287 : Site::WITHOUT_FETCH_HANDLER; | |
| 288 } | |
| 289 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.PageLoad", static_cast<int>(site), | 281 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.PageLoad", static_cast<int>(site), |
| 290 static_cast<int>(Site::NUM_TYPES)); | 282 static_cast<int>(Site::NUM_TYPES)); |
| 291 if (is_main_frame_load) { | 283 if (is_main_frame_load) { |
| 292 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.MainFramePageLoad", | 284 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.MainFramePageLoad", |
| 293 static_cast<int>(site), | 285 static_cast<int>(site), |
| 294 static_cast<int>(Site::NUM_TYPES)); | 286 static_cast<int>(Site::NUM_TYPES)); |
| 295 } | 287 } |
| 296 | 288 |
| 297 if (ShouldExcludeSiteFromHistogram(site)) | 289 if (ShouldExcludeSiteFromHistogram(site)) |
| 298 return; | 290 return; |
| (...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 688 } else if (failure_count == 2) { | 680 } else if (failure_count == 2) { |
| 689 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_2", | 681 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_2", |
| 690 status, SERVICE_WORKER_ERROR_MAX_VALUE); | 682 status, SERVICE_WORKER_ERROR_MAX_VALUE); |
| 691 } else if (failure_count == 3) { | 683 } else if (failure_count == 3) { |
| 692 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_3", | 684 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_3", |
| 693 status, SERVICE_WORKER_ERROR_MAX_VALUE); | 685 status, SERVICE_WORKER_ERROR_MAX_VALUE); |
| 694 } | 686 } |
| 695 } | 687 } |
| 696 | 688 |
| 697 } // namespace content | 689 } // namespace content |
| OLD | NEW |