| 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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 case ServiceWorkerMetrics::EventType::FETCH_SUB_FRAME: | 59 case ServiceWorkerMetrics::EventType::FETCH_SUB_FRAME: |
| 60 return "_FETCH_SUB_FRAME"; | 60 return "_FETCH_SUB_FRAME"; |
| 61 case ServiceWorkerMetrics::EventType::FETCH_SHARED_WORKER: | 61 case ServiceWorkerMetrics::EventType::FETCH_SHARED_WORKER: |
| 62 return "_FETCH_SHARED_WORKER"; | 62 return "_FETCH_SHARED_WORKER"; |
| 63 case ServiceWorkerMetrics::EventType::FETCH_SUB_RESOURCE: | 63 case ServiceWorkerMetrics::EventType::FETCH_SUB_RESOURCE: |
| 64 return "_FETCH_SUB_RESOURCE"; | 64 return "_FETCH_SUB_RESOURCE"; |
| 65 case ServiceWorkerMetrics::EventType::UNKNOWN: | 65 case ServiceWorkerMetrics::EventType::UNKNOWN: |
| 66 return "_UNKNOWN"; | 66 return "_UNKNOWN"; |
| 67 case ServiceWorkerMetrics::EventType::FOREIGN_FETCH: | 67 case ServiceWorkerMetrics::EventType::FOREIGN_FETCH: |
| 68 return "_FOREIGN_FETCH"; | 68 return "_FOREIGN_FETCH"; |
| 69 case ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN: |
| 70 return "_NAVIGATION_HINT_LINK_MOUSE_DOWN"; |
| 71 case ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_TAP_UNCONFIRMED: |
| 72 return "_NAVIGATION_HINT_LINK_TAP_UNCONFIRMED"; |
| 73 case ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_TAP_DOWN: |
| 74 return "_NAVIGATION_HINT_LINK_TAP_DOWN"; |
| 69 case ServiceWorkerMetrics::EventType::NUM_TYPES: | 75 case ServiceWorkerMetrics::EventType::NUM_TYPES: |
| 70 NOTREACHED() << static_cast<int>(event_type); | 76 NOTREACHED() << static_cast<int>(event_type); |
| 71 } | 77 } |
| 72 return "_UNKNOWN"; | 78 return "_UNKNOWN"; |
| 73 } | 79 } |
| 74 | 80 |
| 75 // Use this for histograms with dynamically generated names, which | 81 // Use this for histograms with dynamically generated names, which |
| 76 // otherwise can't use the UMA_HISTOGRAM macro without code duplication. | 82 // otherwise can't use the UMA_HISTOGRAM macro without code duplication. |
| 77 void RecordSuffixedTimeHistogram(const std::string& name, | 83 void RecordSuffixedTimeHistogram(const std::string& name, |
| 78 const std::string& suffix, | 84 const std::string& suffix, |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 case EventType::FETCH_SUB_FRAME: | 157 case EventType::FETCH_SUB_FRAME: |
| 152 return "Fetch Sub Frame"; | 158 return "Fetch Sub Frame"; |
| 153 case EventType::FETCH_SHARED_WORKER: | 159 case EventType::FETCH_SHARED_WORKER: |
| 154 return "Fetch Shared Worker"; | 160 return "Fetch Shared Worker"; |
| 155 case EventType::FETCH_SUB_RESOURCE: | 161 case EventType::FETCH_SUB_RESOURCE: |
| 156 return "Fetch Subresource"; | 162 return "Fetch Subresource"; |
| 157 case EventType::UNKNOWN: | 163 case EventType::UNKNOWN: |
| 158 return "Unknown"; | 164 return "Unknown"; |
| 159 case EventType::FOREIGN_FETCH: | 165 case EventType::FOREIGN_FETCH: |
| 160 return "Foreign Fetch"; | 166 return "Foreign Fetch"; |
| 167 case EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN: |
| 168 return "Navigation Hint Link Mouse Down"; |
| 169 case EventType::NAVIGATION_HINT_LINK_TAP_UNCONFIRMED: |
| 170 return "Navigation Hint Link Tap Unconfiemed"; |
| 171 case EventType::NAVIGATION_HINT_LINK_TAP_DOWN: |
| 172 return "Navigation Hint Link Tap Down"; |
| 161 case EventType::NUM_TYPES: | 173 case EventType::NUM_TYPES: |
| 162 break; | 174 break; |
| 163 } | 175 } |
| 164 NOTREACHED() << "Got unexpected event type: " << static_cast<int>(event_type); | 176 NOTREACHED() << "Got unexpected event type: " << static_cast<int>(event_type); |
| 165 return "error"; | 177 return "error"; |
| 166 } | 178 } |
| 167 | 179 |
| 180 bool ServiceWorkerMetrics::IsNavigationHintEvent(EventType event_type) { |
| 181 return event_type == EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN || |
| 182 event_type == EventType::NAVIGATION_HINT_LINK_TAP_UNCONFIRMED || |
| 183 event_type == EventType::NAVIGATION_HINT_LINK_TAP_DOWN; |
| 184 } |
| 185 |
| 168 bool ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(Site site) { | 186 bool ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(Site site) { |
| 169 return site == ServiceWorkerMetrics::Site::NEW_TAB_PAGE; | 187 return site == ServiceWorkerMetrics::Site::NEW_TAB_PAGE; |
| 170 } | 188 } |
| 171 | 189 |
| 172 bool ServiceWorkerMetrics::ShouldExcludeURLFromHistogram(const GURL& url) { | 190 bool ServiceWorkerMetrics::ShouldExcludeURLFromHistogram(const GURL& url) { |
| 173 return ShouldExcludeSiteFromHistogram(SiteFromURL(url)); | 191 return ShouldExcludeSiteFromHistogram(SiteFromURL(url)); |
| 174 } | 192 } |
| 175 | 193 |
| 176 void ServiceWorkerMetrics::CountInitDiskCacheResult(bool result) { | 194 void ServiceWorkerMetrics::CountInitDiskCacheResult(bool result) { |
| 177 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.DiskCache.InitResult", result); | 195 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.DiskCache.InitResult", result); |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 UMA_HISTOGRAM_ENUMERATION( | 360 UMA_HISTOGRAM_ENUMERATION( |
| 343 "ServiceWorker.EventHandledRatioType.ForeignFetch", type, | 361 "ServiceWorker.EventHandledRatioType.ForeignFetch", type, |
| 344 NUM_EVENT_HANDLED_RATIO_TYPE); | 362 NUM_EVENT_HANDLED_RATIO_TYPE); |
| 345 break; | 363 break; |
| 346 default: | 364 default: |
| 347 // Do nothing. | 365 // Do nothing. |
| 348 break; | 366 break; |
| 349 } | 367 } |
| 350 } | 368 } |
| 351 | 369 |
| 370 void ServiceWorkerMetrics::RecordNavigationHintPrecision( |
| 371 EventType start_worker_purpose, |
| 372 bool event_fired) { |
| 373 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.NavigationHintPrecision", event_fired); |
| 374 switch (start_worker_purpose) { |
| 375 case EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN: |
| 376 UMA_HISTOGRAM_BOOLEAN( |
| 377 "ServiceWorker.NavigationHintPrecision.LINK_MOUSE_DOWN", event_fired); |
| 378 break; |
| 379 case EventType::NAVIGATION_HINT_LINK_TAP_UNCONFIRMED: |
| 380 UMA_HISTOGRAM_BOOLEAN( |
| 381 "ServiceWorker.NavigationHintPrecision.LINK_TAP_UNCONFIRMED", |
| 382 event_fired); |
| 383 break; |
| 384 case EventType::NAVIGATION_HINT_LINK_TAP_DOWN: |
| 385 UMA_HISTOGRAM_BOOLEAN( |
| 386 "ServiceWorker.NavigationHintPrecision.LINK_TAP_DOWN", event_fired); |
| 387 break; |
| 388 default: |
| 389 // Do nothing. |
| 390 break; |
| 391 } |
| 392 } |
| 393 |
| 352 void ServiceWorkerMetrics::RecordEventTimeout(EventType event) { | 394 void ServiceWorkerMetrics::RecordEventTimeout(EventType event) { |
| 353 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.RequestTimeouts.Count", | 395 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.RequestTimeouts.Count", |
| 354 static_cast<int>(event), | 396 static_cast<int>(event), |
| 355 static_cast<int>(EventType::NUM_TYPES)); | 397 static_cast<int>(EventType::NUM_TYPES)); |
| 356 } | 398 } |
| 357 | 399 |
| 358 void ServiceWorkerMetrics::RecordEventDuration(EventType event, | 400 void ServiceWorkerMetrics::RecordEventDuration(EventType event, |
| 359 base::TimeDelta time, | 401 base::TimeDelta time, |
| 360 bool was_handled) { | 402 bool was_handled) { |
| 361 switch (event) { | 403 switch (event) { |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.NotificationCloseEvent.Time", | 440 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.NotificationCloseEvent.Time", |
| 399 time); | 441 time); |
| 400 break; | 442 break; |
| 401 case EventType::PUSH: | 443 case EventType::PUSH: |
| 402 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.PushEvent.Time", time); | 444 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.PushEvent.Time", time); |
| 403 break; | 445 break; |
| 404 case EventType::MESSAGE: | 446 case EventType::MESSAGE: |
| 405 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.ExtendableMessageEvent.Time", | 447 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.ExtendableMessageEvent.Time", |
| 406 time); | 448 time); |
| 407 break; | 449 break; |
| 450 // Those navigation hints should not be sent as request events. |
| 451 case EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN: |
| 452 case EventType::NAVIGATION_HINT_LINK_TAP_UNCONFIRMED: |
| 453 case EventType::NAVIGATION_HINT_LINK_TAP_DOWN: |
| 408 | 454 |
| 409 case EventType::UNKNOWN: | 455 case EventType::UNKNOWN: |
| 410 case EventType::NUM_TYPES: | 456 case EventType::NUM_TYPES: |
| 411 NOTREACHED() << "Invalid event type"; | 457 NOTREACHED() << "Invalid event type"; |
| 412 break; | 458 break; |
| 413 } | 459 } |
| 414 } | 460 } |
| 415 | 461 |
| 416 void ServiceWorkerMetrics::RecordFetchEventStatus( | 462 void ServiceWorkerMetrics::RecordFetchEventStatus( |
| 417 bool is_main_resource, | 463 bool is_main_resource, |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 569 } else if (failure_count == 2) { | 615 } else if (failure_count == 2) { |
| 570 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_2", | 616 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_2", |
| 571 status, SERVICE_WORKER_ERROR_MAX_VALUE); | 617 status, SERVICE_WORKER_ERROR_MAX_VALUE); |
| 572 } else if (failure_count == 3) { | 618 } else if (failure_count == 3) { |
| 573 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_3", | 619 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_3", |
| 574 status, SERVICE_WORKER_ERROR_MAX_VALUE); | 620 status, SERVICE_WORKER_ERROR_MAX_VALUE); |
| 575 } | 621 } |
| 576 } | 622 } |
| 577 | 623 |
| 578 } // namespace content | 624 } // namespace content |
| OLD | NEW |