Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(171)

Side by Side Diff: content/browser/service_worker/service_worker_metrics.cc

Issue 2039743003: Introduce ServiceWorker.ActivatedWorkerPreparationForMainFrame.Time UMA. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: incorporated falken's comment Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
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::NUM_TYPES: 69 case ServiceWorkerMetrics::EventType::NUM_TYPES:
70 NOTREACHED() << static_cast<int>(event_type); 70 NOTREACHED() << static_cast<int>(event_type);
71 } 71 }
72 return "_UNKNOWN"; 72 return "_UNKNOWN";
73 } 73 }
74 74
75 std::string GetWorkerPreparationSuffix(
76 EmbeddedWorkerStatus initial_worker_status,
77 ServiceWorkerMetrics::StartSituation start_situation) {
78 switch (initial_worker_status) {
79 case EmbeddedWorkerStatus::STOPPED: {
80 switch (start_situation) {
81 case ServiceWorkerMetrics::StartSituation::DURING_STARTUP:
82 return "_StartWorkerDuringStartup";
83 case ServiceWorkerMetrics::StartSituation::NEW_PROCESS:
84 return "_StartWorkerNewProcess";
85 case ServiceWorkerMetrics::StartSituation::EXISTING_PROCESS:
86 return "_StartWorkerExistingProcess";
87 default:
88 NOTREACHED() << static_cast<int>(start_situation);
89 }
90 }
91 case EmbeddedWorkerStatus::STARTING:
92 return "_StartingWorker";
93 case EmbeddedWorkerStatus::RUNNING:
94 return "_RunningWorker";
95 case EmbeddedWorkerStatus::STOPPING:
96 return "_StoppingWorker";
97 }
98 NOTREACHED();
99 return "_UNKNOWN";
100 }
101
75 // Use this for histograms with dynamically generated names, which 102 // Use this for histograms with dynamically generated names, which
76 // otherwise can't use the UMA_HISTOGRAM macro without code duplication. 103 // otherwise can't use the UMA_HISTOGRAM macro without code duplication.
77 void RecordSuffixedTimeHistogram(const std::string& name, 104 void RecordSuffixedTimeHistogram(const std::string& name,
78 const std::string& suffix, 105 const std::string& suffix,
79 base::TimeDelta sample) { 106 base::TimeDelta sample) {
80 const std::string name_with_suffix = name + suffix; 107 const std::string name_with_suffix = name + suffix;
81 // This unrolls UMA_HISTOGRAM_MEDIUM_TIMES. 108 // This unrolls UMA_HISTOGRAM_MEDIUM_TIMES.
82 base::HistogramBase* histogram_pointer = base::Histogram::FactoryTimeGet( 109 base::HistogramBase* histogram_pointer = base::Histogram::FactoryTimeGet(
83 name_with_suffix, base::TimeDelta::FromMilliseconds(10), 110 name_with_suffix, base::TimeDelta::FromMilliseconds(10),
84 base::TimeDelta::FromMinutes(3), 50, 111 base::TimeDelta::FromMinutes(3), 50,
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 time); 308 time);
282 RecordSuffixedTimeHistogram( 309 RecordSuffixedTimeHistogram(
283 "ServiceWorker.StartWorker.Time", 310 "ServiceWorker.StartWorker.Time",
284 StartSituationToSuffix(start_situation) + EventTypeToSuffix(purpose), 311 StartSituationToSuffix(start_situation) + EventTypeToSuffix(purpose),
285 time); 312 time);
286 } else { 313 } else {
287 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.StartNewWorker.Time", time); 314 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.StartNewWorker.Time", time);
288 } 315 }
289 } 316 }
290 317
318 void ServiceWorkerMetrics::RecordActivatedWorkerPreparationTimeForMainFrame(
319 base::TimeDelta time,
320 EmbeddedWorkerStatus initial_worker_status,
321 StartSituation start_situation) {
322 std::string name =
323 "ServiceWorker.ActivatedWorkerPreparationForMainFrame.Time";
324 UMA_HISTOGRAM_MEDIUM_TIMES(name, time);
325 RecordSuffixedTimeHistogram(
326 name, GetWorkerPreparationSuffix(initial_worker_status, start_situation),
327 time);
328 }
329
291 void ServiceWorkerMetrics::RecordWorkerStopped(StopStatus status) { 330 void ServiceWorkerMetrics::RecordWorkerStopped(StopStatus status) {
292 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.WorkerStopped", 331 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.WorkerStopped",
293 static_cast<int>(status), 332 static_cast<int>(status),
294 static_cast<int>(StopStatus::NUM_TYPES)); 333 static_cast<int>(StopStatus::NUM_TYPES));
295 } 334 }
296 335
297 void ServiceWorkerMetrics::RecordStopWorkerTime(base::TimeDelta time) { 336 void ServiceWorkerMetrics::RecordStopWorkerTime(base::TimeDelta time) {
298 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.StopWorker.Time", time); 337 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.StopWorker.Time", time);
299 } 338 }
300 339
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 } else if (failure_count == 2) { 608 } else if (failure_count == 2) {
570 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_2", 609 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_2",
571 status, SERVICE_WORKER_ERROR_MAX_VALUE); 610 status, SERVICE_WORKER_ERROR_MAX_VALUE);
572 } else if (failure_count == 3) { 611 } else if (failure_count == 3) {
573 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_3", 612 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_3",
574 status, SERVICE_WORKER_ERROR_MAX_VALUE); 613 status, SERVICE_WORKER_ERROR_MAX_VALUE);
575 } 614 }
576 } 615 }
577 616
578 } // namespace content 617 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698