Chromium Code Reviews| 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 3f724500f50e536f83965e8fa9ba1be83786488d..8d3a43bbdfde681cff9d0b0e86c3a68184743444 100644 |
| --- a/content/browser/service_worker/service_worker_metrics.cc |
| +++ b/content/browser/service_worker/service_worker_metrics.cc |
| @@ -110,12 +110,47 @@ std::string GetWorkerPreparationSuffix( |
| return "_UNKNOWN"; |
| } |
| +std::string GetSiteSuffix(ServiceWorkerMetrics::Site site) { |
| + switch (site) { |
| + case ServiceWorkerMetrics::Site::OTHER: |
| + case ServiceWorkerMetrics::Site::WITH_FETCH_HANDLER: |
| + case ServiceWorkerMetrics::Site::WITHOUT_FETCH_HANDLER: |
| + return ""; |
| + case ServiceWorkerMetrics::Site::NEW_TAB_PAGE: |
| + return ".ntp"; |
| + case ServiceWorkerMetrics::Site::PLUS: |
| + return ".plus"; |
| + case ServiceWorkerMetrics::Site::INBOX: |
| + return ".inbox"; |
| + case ServiceWorkerMetrics::Site::DOCS: |
| + return ".docs"; |
| + case ServiceWorkerMetrics::Site::NUM_TYPES: |
| + NOTREACHED() << static_cast<int>(site); |
| + } |
| + NOTREACHED(); |
| + return ""; |
| +} |
| + |
| // 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, |
| const std::string& suffix, |
| base::TimeDelta sample) { |
| const std::string name_with_suffix = name + suffix; |
| + // This unrolls UMA_HISTOGRAM_TIMES. |
| + base::HistogramBase* histogram_pointer = base::Histogram::FactoryTimeGet( |
| + name_with_suffix, base::TimeDelta::FromMilliseconds(1), |
| + base::TimeDelta::FromSeconds(10), 50, |
| + base::HistogramBase::kUmaTargetedHistogramFlag); |
| + histogram_pointer->AddTime(sample); |
| +} |
| + |
| +// Use this for histograms with dynamically generated names, which |
| +// otherwise can't use the UMA_MEDIUM_HISTOGRAM macro without code duplication. |
| +void RecordSuffixedMediumTimeHistogram(const std::string& name, |
| + const std::string& suffix, |
| + base::TimeDelta sample) { |
| + const std::string name_with_suffix = name + suffix; |
| // This unrolls UMA_HISTOGRAM_MEDIUM_TIMES. |
| base::HistogramBase* histogram_pointer = base::Histogram::FactoryTimeGet( |
| name_with_suffix, base::TimeDelta::FromMilliseconds(10), |
| @@ -336,9 +371,9 @@ void ServiceWorkerMetrics::RecordStartWorkerTime(base::TimeDelta time, |
| if (is_installed) { |
| std::string name = "ServiceWorker.StartWorker.Time"; |
| UMA_HISTOGRAM_MEDIUM_TIMES(name, time); |
| - RecordSuffixedTimeHistogram(name, StartSituationToSuffix(start_situation), |
| - time); |
| - RecordSuffixedTimeHistogram( |
| + RecordSuffixedMediumTimeHistogram( |
| + name, StartSituationToSuffix(start_situation), time); |
| + RecordSuffixedMediumTimeHistogram( |
| "ServiceWorker.StartWorker.Time", |
| StartSituationToSuffix(start_situation) + EventTypeToSuffix(purpose), |
| time); |
| @@ -354,7 +389,7 @@ void ServiceWorkerMetrics::RecordActivatedWorkerPreparationTimeForMainFrame( |
| std::string name = |
| "ServiceWorker.ActivatedWorkerPreparationForMainFrame.Time"; |
| UMA_HISTOGRAM_MEDIUM_TIMES(name, time); |
| - RecordSuffixedTimeHistogram( |
| + RecordSuffixedMediumTimeHistogram( |
| name, GetWorkerPreparationSuffix(initial_worker_status, start_situation), |
| time); |
| } |
| @@ -420,6 +455,16 @@ void ServiceWorkerMetrics::RecordEventHandledRatio(EventType event, |
| } |
| } |
| +void ServiceWorkerMetrics::RecordFetchEventDispatchingDelay( |
|
shimazu
2016/08/18 04:58:53
I think this could be open to other events.
If do
horo
2016/08/22 14:57:35
Done.
|
| + base::TimeDelta time, |
| + Site site_for_metrics) { |
| + const std::string name = "ServiceWorker.FetchEvent.DispatchingDelay"; |
| + UMA_HISTOGRAM_TIMES(name, time); |
| + const std::string site_suffix = GetSiteSuffix(site_for_metrics); |
| + if (!site_suffix.empty()) |
| + RecordSuffixedTimeHistogram(name, site_suffix, time); |
| +} |
| + |
| void ServiceWorkerMetrics::RecordNavigationHintPrecision( |
| EventType start_worker_purpose, |
| bool frame_fetch_event_fired) { |
| @@ -581,16 +626,16 @@ void ServiceWorkerMetrics::RecordTimeToSendStartWorker( |
| StartSituation situation) { |
| std::string name = "EmbeddedWorkerInstance.Start.TimeToSendStartWorker"; |
| UMA_HISTOGRAM_MEDIUM_TIMES(name, duration); |
| - RecordSuffixedTimeHistogram(name, StartSituationToSuffix(situation), |
| - duration); |
| + RecordSuffixedMediumTimeHistogram(name, StartSituationToSuffix(situation), |
| + duration); |
| } |
| void ServiceWorkerMetrics::RecordTimeToURLJob(base::TimeDelta duration, |
| StartSituation situation) { |
| std::string name = "EmbeddedWorkerInstance.Start.TimeToURLJob"; |
| UMA_HISTOGRAM_MEDIUM_TIMES(name, duration); |
| - RecordSuffixedTimeHistogram(name, StartSituationToSuffix(situation), |
| - duration); |
| + RecordSuffixedMediumTimeHistogram(name, StartSituationToSuffix(situation), |
| + duration); |
| } |
| void ServiceWorkerMetrics::RecordTimeToLoad(base::TimeDelta duration, |
| @@ -601,20 +646,20 @@ void ServiceWorkerMetrics::RecordTimeToLoad(base::TimeDelta duration, |
| case LoadSource::NETWORK: |
| name = "EmbeddedWorkerInstance.Start.TimeToLoad.Network"; |
| UMA_HISTOGRAM_MEDIUM_TIMES(name, duration); |
| - RecordSuffixedTimeHistogram(name, StartSituationToSuffix(situation), |
| - duration); |
| + RecordSuffixedMediumTimeHistogram(name, StartSituationToSuffix(situation), |
| + duration); |
| break; |
| case LoadSource::HTTP_CACHE: |
| name = "EmbeddedWorkerInstance.Start.TimeToLoad.HttpCache"; |
| UMA_HISTOGRAM_MEDIUM_TIMES(name, duration); |
| - RecordSuffixedTimeHistogram(name, StartSituationToSuffix(situation), |
| - duration); |
| + RecordSuffixedMediumTimeHistogram(name, StartSituationToSuffix(situation), |
| + duration); |
| break; |
| case LoadSource::SERVICE_WORKER_STORAGE: |
| name = "EmbeddedWorkerInstance.Start.TimeToLoad.InstalledScript"; |
| UMA_HISTOGRAM_MEDIUM_TIMES(name, duration); |
| - RecordSuffixedTimeHistogram(name, StartSituationToSuffix(situation), |
| - duration); |
| + RecordSuffixedMediumTimeHistogram(name, StartSituationToSuffix(situation), |
| + duration); |
| break; |
| default: |
| NOTREACHED() << static_cast<int>(source); |
| @@ -625,8 +670,8 @@ void ServiceWorkerMetrics::RecordTimeToStartThread(base::TimeDelta duration, |
| StartSituation situation) { |
| std::string name = "EmbeddedWorkerInstance.Start.TimeToStartThread"; |
| UMA_HISTOGRAM_MEDIUM_TIMES(name, duration); |
| - RecordSuffixedTimeHistogram(name, StartSituationToSuffix(situation), |
| - duration); |
| + RecordSuffixedMediumTimeHistogram(name, StartSituationToSuffix(situation), |
| + duration); |
| } |
| void ServiceWorkerMetrics::RecordTimeToEvaluateScript( |
| @@ -634,8 +679,8 @@ void ServiceWorkerMetrics::RecordTimeToEvaluateScript( |
| StartSituation situation) { |
| std::string name = "EmbeddedWorkerInstance.Start.TimeToEvaluateScript"; |
| UMA_HISTOGRAM_MEDIUM_TIMES(name, duration); |
| - RecordSuffixedTimeHistogram(name, StartSituationToSuffix(situation), |
| - duration); |
| + RecordSuffixedMediumTimeHistogram(name, StartSituationToSuffix(situation), |
| + duration); |
| } |
| const char* ServiceWorkerMetrics::LoadSourceToString(LoadSource source) { |