| 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 "base/metrics/histogram_macros.h" | 7 #include "base/metrics/histogram_macros.h" |
| 8 #include "base/metrics/sparse_histogram.h" | 8 #include "base/metrics/sparse_histogram.h" |
| 9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
| 10 #include "content/common/service_worker/service_worker_types.h" | 10 #include "content/common/service_worker/service_worker_types.h" |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 case EventType::NOTIFICATION_CLOSE: | 61 case EventType::NOTIFICATION_CLOSE: |
| 62 return "Notification Close"; | 62 return "Notification Close"; |
| 63 case EventType::PUSH: | 63 case EventType::PUSH: |
| 64 return "Push"; | 64 return "Push"; |
| 65 case EventType::GEOFENCING: | 65 case EventType::GEOFENCING: |
| 66 return "Geofencing"; | 66 return "Geofencing"; |
| 67 case EventType::SERVICE_PORT_CONNECT: | 67 case EventType::SERVICE_PORT_CONNECT: |
| 68 return "Service Port Connect"; | 68 return "Service Port Connect"; |
| 69 case EventType::MESSAGE: | 69 case EventType::MESSAGE: |
| 70 return "Message"; | 70 return "Message"; |
| 71 case EventType::FETCH_MAIN_FRAME: |
| 72 return "Fetch Main Frame"; |
| 73 case EventType::FETCH_SUB_FRAME: |
| 74 return "Fetch Sub Frame"; |
| 75 case EventType::FETCH_SHARED_WORKER: |
| 76 return "Fetch Shared Worker"; |
| 77 case EventType::FETCH_SUB_RESOURCE: |
| 78 return "Fetch Subresource"; |
| 79 case EventType::UNKNOWN: |
| 80 return "Unknown"; |
| 71 case EventType::NUM_TYPES: | 81 case EventType::NUM_TYPES: |
| 72 break; | 82 break; |
| 73 } | 83 } |
| 74 NOTREACHED() << "Got unexpected event type: " << static_cast<int>(event_type); | 84 NOTREACHED() << "Got unexpected event type: " << static_cast<int>(event_type); |
| 75 return "Unknown"; | 85 return "error"; |
| 76 } | 86 } |
| 77 | 87 |
| 78 bool ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(Site site) { | 88 bool ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(Site site) { |
| 79 return site == ServiceWorkerMetrics::Site::NEW_TAB_PAGE; | 89 return site == ServiceWorkerMetrics::Site::NEW_TAB_PAGE; |
| 80 } | 90 } |
| 81 | 91 |
| 82 bool ServiceWorkerMetrics::ShouldExcludeURLFromHistogram(const GURL& url) { | 92 bool ServiceWorkerMetrics::ShouldExcludeURLFromHistogram(const GURL& url) { |
| 83 return ShouldExcludeSiteFromHistogram(SiteFromURL(url)); | 93 return ShouldExcludeSiteFromHistogram(SiteFromURL(url)); |
| 84 } | 94 } |
| 85 | 95 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 static_cast<int>(Site::NUM_TYPES)); | 150 static_cast<int>(Site::NUM_TYPES)); |
| 141 | 151 |
| 142 if (ShouldExcludeSiteFromHistogram(site)) | 152 if (ShouldExcludeSiteFromHistogram(site)) |
| 143 return; | 153 return; |
| 144 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 154 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| 145 base::Bind(&RecordURLMetricOnUI, url)); | 155 base::Bind(&RecordURLMetricOnUI, url)); |
| 146 } | 156 } |
| 147 | 157 |
| 148 void ServiceWorkerMetrics::RecordStartWorkerStatus( | 158 void ServiceWorkerMetrics::RecordStartWorkerStatus( |
| 149 ServiceWorkerStatusCode status, | 159 ServiceWorkerStatusCode status, |
| 160 EventType purpose, |
| 150 bool is_installed) { | 161 bool is_installed) { |
| 151 if (is_installed) { | 162 if (is_installed) { |
| 152 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.Status", status, | 163 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.Status", status, |
| 153 SERVICE_WORKER_ERROR_MAX_VALUE); | 164 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 165 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.Purpose", |
| 166 static_cast<int>(purpose), |
| 167 static_cast<int>(EventType::NUM_TYPES)); |
| 168 if (status == SERVICE_WORKER_ERROR_TIMEOUT) { |
| 169 UMA_HISTOGRAM_ENUMERATION( |
| 170 "ServiceWorker.StartWorker.Timeout.StartPurpose", |
| 171 static_cast<int>(purpose), static_cast<int>(EventType::NUM_TYPES)); |
| 172 } |
| 154 } else { | 173 } else { |
| 155 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartNewWorker.Status", status, | 174 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartNewWorker.Status", status, |
| 156 SERVICE_WORKER_ERROR_MAX_VALUE); | 175 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 157 } | 176 } |
| 158 } | 177 } |
| 159 | 178 |
| 160 void ServiceWorkerMetrics::RecordStartWorkerTime(const base::TimeDelta& time, | 179 void ServiceWorkerMetrics::RecordStartWorkerTime(const base::TimeDelta& time, |
| 161 bool is_installed) { | 180 bool is_installed) { |
| 162 if (is_installed) | 181 if (is_installed) |
| 163 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.StartWorker.Time", time); | 182 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.StartWorker.Time", time); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 const base::TimeDelta& time, | 234 const base::TimeDelta& time, |
| 216 bool was_handled) { | 235 bool was_handled) { |
| 217 switch (event) { | 236 switch (event) { |
| 218 case EventType::ACTIVATE: | 237 case EventType::ACTIVATE: |
| 219 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.ActivateEvent.Time", time); | 238 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.ActivateEvent.Time", time); |
| 220 break; | 239 break; |
| 221 case EventType::INSTALL: | 240 case EventType::INSTALL: |
| 222 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.InstallEvent.Time", time); | 241 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.InstallEvent.Time", time); |
| 223 break; | 242 break; |
| 224 case EventType::FETCH: | 243 case EventType::FETCH: |
| 244 case EventType::FETCH_MAIN_FRAME: |
| 245 case EventType::FETCH_SUB_FRAME: |
| 246 case EventType::FETCH_SHARED_WORKER: |
| 247 case EventType::FETCH_SUB_RESOURCE: |
| 225 if (was_handled) { | 248 if (was_handled) { |
| 226 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.FetchEvent.HasResponse.Time", | 249 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.FetchEvent.HasResponse.Time", |
| 227 time); | 250 time); |
| 228 } else { | 251 } else { |
| 229 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.FetchEvent.Fallback.Time", | 252 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.FetchEvent.Fallback.Time", |
| 230 time); | 253 time); |
| 231 } | 254 } |
| 232 break; | 255 break; |
| 233 case EventType::SYNC: | 256 case EventType::SYNC: |
| 234 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.BackgroundSyncEvent.Time", | 257 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.BackgroundSyncEvent.Time", |
| (...skipping 13 matching lines...) Expand all Loading... |
| 248 case EventType::MESSAGE: | 271 case EventType::MESSAGE: |
| 249 // TODO(nhiroki): Record event duration for Message event after | 272 // TODO(nhiroki): Record event duration for Message event after |
| 250 // ExtendableMessageEvent is enabled by default (crbug.com/543198). | 273 // ExtendableMessageEvent is enabled by default (crbug.com/543198). |
| 251 break; | 274 break; |
| 252 | 275 |
| 253 // For now event duration for these events is not recorded. | 276 // For now event duration for these events is not recorded. |
| 254 case EventType::GEOFENCING: | 277 case EventType::GEOFENCING: |
| 255 case EventType::SERVICE_PORT_CONNECT: | 278 case EventType::SERVICE_PORT_CONNECT: |
| 256 break; | 279 break; |
| 257 | 280 |
| 281 case EventType::UNKNOWN: |
| 258 case EventType::NUM_TYPES: | 282 case EventType::NUM_TYPES: |
| 259 NOTREACHED() << "Invalid event type"; | 283 NOTREACHED() << "Invalid event type"; |
| 260 break; | 284 break; |
| 261 } | 285 } |
| 262 } | 286 } |
| 263 | 287 |
| 264 void ServiceWorkerMetrics::RecordFetchEventStatus( | 288 void ServiceWorkerMetrics::RecordFetchEventStatus( |
| 265 bool is_main_resource, | 289 bool is_main_resource, |
| 266 ServiceWorkerStatusCode status) { | 290 ServiceWorkerStatusCode status) { |
| 267 if (is_main_resource) { | 291 if (is_main_resource) { |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.FallbackedRequestMode", | 327 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.FallbackedRequestMode", |
| 304 mode, FETCH_REQUEST_MODE_LAST + 1); | 328 mode, FETCH_REQUEST_MODE_LAST + 1); |
| 305 } | 329 } |
| 306 | 330 |
| 307 void ServiceWorkerMetrics::RecordTimeBetweenEvents( | 331 void ServiceWorkerMetrics::RecordTimeBetweenEvents( |
| 308 const base::TimeDelta& time) { | 332 const base::TimeDelta& time) { |
| 309 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.TimeBetweenEvents", time); | 333 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.TimeBetweenEvents", time); |
| 310 } | 334 } |
| 311 | 335 |
| 312 } // namespace content | 336 } // namespace content |
| OLD | NEW |