| Index: content/browser/service_worker/service_worker_metrics.cc
|
| diff --git a/content/browser/service_worker/service_worker_metrics.cc b/content/browser/service_worker/service_worker_metrics.cc
|
| index 5095b53b9877f5d8cb2e2fb7e6f63995efc3db61..eaf8071ffa4f87e00f6e4352b14509e80400d36f 100644
|
| --- a/content/browser/service_worker/service_worker_metrics.cc
|
| +++ b/content/browser/service_worker/service_worker_metrics.cc
|
| @@ -10,6 +10,7 @@
|
| #include "base/metrics/histogram_macros.h"
|
| #include "base/metrics/sparse_histogram.h"
|
| #include "base/strings/string_util.h"
|
| +#include "content/browser/service_worker/embedded_worker_status.h"
|
| #include "content/common/service_worker/service_worker_types.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/content_browser_client.h"
|
| @@ -72,6 +73,33 @@ std::string EventTypeToSuffix(ServiceWorkerMetrics::EventType event_type) {
|
| return "_UNKNOWN";
|
| }
|
|
|
| +std::string GetWorkerPreparationSuffix(
|
| + EmbeddedWorkerStatus initial_worker_status,
|
| + ServiceWorkerMetrics::StartSituation start_situation) {
|
| + switch (initial_worker_status) {
|
| + case EmbeddedWorkerStatus::STOPPED: {
|
| + switch (start_situation) {
|
| + case ServiceWorkerMetrics::StartSituation::DURING_STARTUP:
|
| + return "_StartWorkerDuringStartup";
|
| + case ServiceWorkerMetrics::StartSituation::NEW_PROCESS:
|
| + return "_StartWorkerNewProcess";
|
| + case ServiceWorkerMetrics::StartSituation::EXISTING_PROCESS:
|
| + return "_StartWorkerExistingProcess";
|
| + default:
|
| + NOTREACHED() << static_cast<int>(start_situation);
|
| + }
|
| + }
|
| + case EmbeddedWorkerStatus::STARTING:
|
| + return "_StartingWorker";
|
| + case EmbeddedWorkerStatus::RUNNING:
|
| + return "_RunningWorker";
|
| + case EmbeddedWorkerStatus::STOPPING:
|
| + return "_StoppingWorker";
|
| + }
|
| + NOTREACHED();
|
| + return "_UNKNOWN";
|
| +}
|
| +
|
| // Use this for histograms with dynamically generated names, which
|
| // otherwise can't use the UMA_HISTOGRAM macro without code duplication.
|
| void RecordSuffixedTimeHistogram(const std::string& name,
|
| @@ -288,6 +316,18 @@ void ServiceWorkerMetrics::RecordStartWorkerTime(base::TimeDelta time,
|
| }
|
| }
|
|
|
| +void ServiceWorkerMetrics::RecordActivatedWorkerPreparationTimeForMainFrame(
|
| + base::TimeDelta time,
|
| + EmbeddedWorkerStatus initial_worker_status,
|
| + StartSituation start_situation) {
|
| + std::string name =
|
| + "ServiceWorker.ActivatedWorkerPreparationForMainFrame.Time";
|
| + UMA_HISTOGRAM_MEDIUM_TIMES(name, time);
|
| + RecordSuffixedTimeHistogram(
|
| + name, GetWorkerPreparationSuffix(initial_worker_status, start_situation),
|
| + time);
|
| +}
|
| +
|
| void ServiceWorkerMetrics::RecordWorkerStopped(StopStatus status) {
|
| UMA_HISTOGRAM_ENUMERATION("ServiceWorker.WorkerStopped",
|
| static_cast<int>(status),
|
|
|