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

Unified Diff: content/browser/service_worker/service_worker_metrics.cc

Issue 2218943002: Introduce ServiceWorker.EventDispatchingDelay UMA (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: incorporated mpearson@'s comment Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
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) {
« no previous file with comments | « content/browser/service_worker/service_worker_metrics.h ('k') | content/browser/service_worker/service_worker_register_job.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698