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 c2d86087832232aa15d3638efab8cbb4f2affcc4..e2459fd76c08e702fdc0ffa84095881d4b0f0cf5 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 "base/time/time.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" |
@@ -110,12 +111,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), |
@@ -330,9 +366,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); |
@@ -348,7 +384,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); |
} |
@@ -427,6 +463,16 @@ void ServiceWorkerMetrics::RecordEventHandledRatio(EventType event, |
} |
} |
+void ServiceWorkerMetrics::RecordEventDispatchingDelay(EventType event_type, |
+ base::TimeDelta time, |
+ Site site_for_metrics) { |
+ const std::string name = "ServiceWorker.EventDispatchingDelay"; |
+ UMA_HISTOGRAM_TIMES(name, time); |
+ const std::string event_type_suffix = EventTypeToSuffix(event_type); |
+ const std::string site_suffix = GetSiteSuffix(site_for_metrics); |
+ RecordSuffixedTimeHistogram(name, event_type_suffix + site_suffix, time); |
+} |
+ |
void ServiceWorkerMetrics::RecordNavigationHintPrecision( |
EventType start_worker_purpose, |
bool frame_fetch_event_fired) { |
@@ -588,16 +634,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, |
@@ -608,20 +654,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); |
@@ -632,8 +678,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( |
@@ -641,8 +687,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) { |