| 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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 case EventType::FETCH_SUB_FRAME: | 101 case EventType::FETCH_SUB_FRAME: |
| 102 return "Fetch Sub Frame"; | 102 return "Fetch Sub Frame"; |
| 103 case EventType::FETCH_SHARED_WORKER: | 103 case EventType::FETCH_SHARED_WORKER: |
| 104 return "Fetch Shared Worker"; | 104 return "Fetch Shared Worker"; |
| 105 case EventType::FETCH_SUB_RESOURCE: | 105 case EventType::FETCH_SUB_RESOURCE: |
| 106 return "Fetch Subresource"; | 106 return "Fetch Subresource"; |
| 107 case EventType::UNKNOWN: | 107 case EventType::UNKNOWN: |
| 108 return "Unknown"; | 108 return "Unknown"; |
| 109 case EventType::FOREIGN_FETCH: | 109 case EventType::FOREIGN_FETCH: |
| 110 return "Foreign Fetch"; | 110 return "Foreign Fetch"; |
| 111 case EventType::DEPRECATED_FETCH: | |
| 112 case EventType::NUM_TYPES: | 111 case EventType::NUM_TYPES: |
| 113 break; | 112 break; |
| 114 } | 113 } |
| 115 NOTREACHED() << "Got unexpected event type: " << static_cast<int>(event_type); | 114 NOTREACHED() << "Got unexpected event type: " << static_cast<int>(event_type); |
| 116 return "error"; | 115 return "error"; |
| 117 } | 116 } |
| 118 | 117 |
| 119 bool ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(Site site) { | 118 bool ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(Site site) { |
| 120 return site == ServiceWorkerMetrics::Site::NEW_TAB_PAGE; | 119 return site == ServiceWorkerMetrics::Site::NEW_TAB_PAGE; |
| 121 } | 120 } |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 if (ShouldExcludeSiteFromHistogram(site)) | 182 if (ShouldExcludeSiteFromHistogram(site)) |
| 184 return; | 183 return; |
| 185 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 184 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| 186 base::Bind(&RecordURLMetricOnUI, url)); | 185 base::Bind(&RecordURLMetricOnUI, url)); |
| 187 } | 186 } |
| 188 | 187 |
| 189 void ServiceWorkerMetrics::RecordStartWorkerStatus( | 188 void ServiceWorkerMetrics::RecordStartWorkerStatus( |
| 190 ServiceWorkerStatusCode status, | 189 ServiceWorkerStatusCode status, |
| 191 EventType purpose, | 190 EventType purpose, |
| 192 bool is_installed) { | 191 bool is_installed) { |
| 193 if (is_installed) { | 192 if (!is_installed) { |
| 194 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.Status", status, | 193 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartNewWorker.Status", status, |
| 195 SERVICE_WORKER_ERROR_MAX_VALUE); | 194 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 196 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.Purpose", | 195 return; |
| 196 } |
| 197 |
| 198 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.Status", status, |
| 199 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 200 switch (purpose) { |
| 201 case EventType::ACTIVATE: |
| 202 UMA_HISTOGRAM_ENUMERATION( |
| 203 "ServiceWorker.StartWorker.StatusByPurpose_ACTIVATE", status, |
| 204 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 205 break; |
| 206 case EventType::INSTALL: |
| 207 UMA_HISTOGRAM_ENUMERATION( |
| 208 "ServiceWorker.StartWorker.StatusByPurpose_INSTALL", status, |
| 209 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 210 break; |
| 211 case EventType::SYNC: |
| 212 UMA_HISTOGRAM_ENUMERATION( |
| 213 "ServiceWorker.StartWorker.StatusByPurpose_SYNC", status, |
| 214 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 215 break; |
| 216 case EventType::NOTIFICATION_CLICK: |
| 217 UMA_HISTOGRAM_ENUMERATION( |
| 218 "ServiceWorker.StartWorker.StatusByPurpose_NOTIFICATION_CLICK", |
| 219 status, SERVICE_WORKER_ERROR_MAX_VALUE); |
| 220 break; |
| 221 case EventType::PUSH: |
| 222 UMA_HISTOGRAM_ENUMERATION( |
| 223 "ServiceWorker.StartWorker.StatusByPurpose_PUSH", status, |
| 224 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 225 break; |
| 226 case EventType::GEOFENCING: |
| 227 UMA_HISTOGRAM_ENUMERATION( |
| 228 "ServiceWorker.StartWorker.StatusByPurpose_GEOFENCING", status, |
| 229 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 230 break; |
| 231 case EventType::MESSAGE: |
| 232 UMA_HISTOGRAM_ENUMERATION( |
| 233 "ServiceWorker.StartWorker.StatusByPurpose_MESSAGE", status, |
| 234 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 235 break; |
| 236 case EventType::NOTIFICATION_CLOSE: |
| 237 UMA_HISTOGRAM_ENUMERATION( |
| 238 "ServiceWorker.StartWorker.StatusByPurpose_NOTIFICATION_CLOSE", |
| 239 status, SERVICE_WORKER_ERROR_MAX_VALUE); |
| 240 break; |
| 241 case EventType::FETCH_MAIN_FRAME: |
| 242 UMA_HISTOGRAM_ENUMERATION( |
| 243 "ServiceWorker.StartWorker.StatusByPurpose_FETCH_MAIN_FRAME", status, |
| 244 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 245 break; |
| 246 case EventType::FETCH_SUB_FRAME: |
| 247 UMA_HISTOGRAM_ENUMERATION( |
| 248 "ServiceWorker.StartWorker.StatusByPurpose_FETCH_SUB_FRAME", status, |
| 249 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 250 break; |
| 251 case EventType::FETCH_SHARED_WORKER: |
| 252 UMA_HISTOGRAM_ENUMERATION( |
| 253 "ServiceWorker.StartWorker.StatusByPurpose_FETCH_SHARED_WORKER", |
| 254 status, SERVICE_WORKER_ERROR_MAX_VALUE); |
| 255 break; |
| 256 case EventType::FETCH_SUB_RESOURCE: |
| 257 UMA_HISTOGRAM_ENUMERATION( |
| 258 "ServiceWorker.StartWorker.StatusByPurpose_FETCH_SUB_RESOURCE", |
| 259 status, SERVICE_WORKER_ERROR_MAX_VALUE); |
| 260 break; |
| 261 case EventType::UNKNOWN: |
| 262 UMA_HISTOGRAM_ENUMERATION( |
| 263 "ServiceWorker.StartWorker.StatusByPurpose_UNKNOWN", status, |
| 264 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 265 break; |
| 266 case EventType::FOREIGN_FETCH: |
| 267 UMA_HISTOGRAM_ENUMERATION( |
| 268 "ServiceWorker.StartWorker.StatusByPurpose_FOREIGN_FETCH", status, |
| 269 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 270 break; |
| 271 case EventType::NUM_TYPES: |
| 272 NOTREACHED(); |
| 273 break; |
| 274 } |
| 275 |
| 276 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.Purpose", |
| 277 static_cast<int>(purpose), |
| 278 static_cast<int>(EventType::NUM_TYPES)); |
| 279 if (status == SERVICE_WORKER_ERROR_TIMEOUT) { |
| 280 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.Timeout.StartPurpose", |
| 197 static_cast<int>(purpose), | 281 static_cast<int>(purpose), |
| 198 static_cast<int>(EventType::NUM_TYPES)); | 282 static_cast<int>(EventType::NUM_TYPES)); |
| 199 if (status == SERVICE_WORKER_ERROR_TIMEOUT) { | |
| 200 UMA_HISTOGRAM_ENUMERATION( | |
| 201 "ServiceWorker.StartWorker.Timeout.StartPurpose", | |
| 202 static_cast<int>(purpose), static_cast<int>(EventType::NUM_TYPES)); | |
| 203 } | |
| 204 } else { | |
| 205 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartNewWorker.Status", status, | |
| 206 SERVICE_WORKER_ERROR_MAX_VALUE); | |
| 207 } | 283 } |
| 208 } | 284 } |
| 209 | 285 |
| 210 void ServiceWorkerMetrics::RecordStartWorkerTime( | 286 void ServiceWorkerMetrics::RecordStartWorkerTime( |
| 211 base::TimeDelta time, | 287 base::TimeDelta time, |
| 212 bool is_installed, | 288 bool is_installed, |
| 213 StartSituation start_situation) { | 289 StartSituation start_situation) { |
| 214 if (is_installed) { | 290 if (is_installed) { |
| 215 std::string name = "ServiceWorker.StartWorker.Time"; | 291 std::string name = "ServiceWorker.StartWorker.Time"; |
| 216 UMA_HISTOGRAM_MEDIUM_TIMES(name, time); | 292 UMA_HISTOGRAM_MEDIUM_TIMES(name, time); |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 328 break; | 404 break; |
| 329 case EventType::MESSAGE: | 405 case EventType::MESSAGE: |
| 330 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.ExtendableMessageEvent.Time", | 406 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.ExtendableMessageEvent.Time", |
| 331 time); | 407 time); |
| 332 break; | 408 break; |
| 333 | 409 |
| 334 // For now event duration for these events is not recorded. | 410 // For now event duration for these events is not recorded. |
| 335 case EventType::GEOFENCING: | 411 case EventType::GEOFENCING: |
| 336 break; | 412 break; |
| 337 | 413 |
| 338 case EventType::DEPRECATED_FETCH: | |
| 339 case EventType::UNKNOWN: | 414 case EventType::UNKNOWN: |
| 340 case EventType::NUM_TYPES: | 415 case EventType::NUM_TYPES: |
| 341 NOTREACHED() << "Invalid event type"; | 416 NOTREACHED() << "Invalid event type"; |
| 342 break; | 417 break; |
| 343 } | 418 } |
| 344 } | 419 } |
| 345 | 420 |
| 346 void ServiceWorkerMetrics::RecordFetchEventStatus( | 421 void ServiceWorkerMetrics::RecordFetchEventStatus( |
| 347 bool is_main_resource, | 422 bool is_main_resource, |
| 348 ServiceWorkerStatusCode status) { | 423 ServiceWorkerStatusCode status) { |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 } else if (failure_count == 2) { | 574 } else if (failure_count == 2) { |
| 500 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_2", | 575 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_2", |
| 501 status, SERVICE_WORKER_ERROR_MAX_VALUE); | 576 status, SERVICE_WORKER_ERROR_MAX_VALUE); |
| 502 } else if (failure_count == 3) { | 577 } else if (failure_count == 3) { |
| 503 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_3", | 578 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_3", |
| 504 status, SERVICE_WORKER_ERROR_MAX_VALUE); | 579 status, SERVICE_WORKER_ERROR_MAX_VALUE); |
| 505 } | 580 } |
| 506 } | 581 } |
| 507 | 582 |
| 508 } // namespace content | 583 } // namespace content |
| OLD | NEW |