summaryrefslogtreecommitdiff
path: root/chromium/content/browser/service_worker/service_worker_metrics.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/service_worker/service_worker_metrics.h')
-rw-r--r--chromium/content/browser/service_worker/service_worker_metrics.h80
1 files changed, 61 insertions, 19 deletions
diff --git a/chromium/content/browser/service_worker/service_worker_metrics.h b/chromium/content/browser/service_worker/service_worker_metrics.h
index 83dfb2ac5f8..e14d1ad3789 100644
--- a/chromium/content/browser/service_worker/service_worker_metrics.h
+++ b/chromium/content/browser/service_worker/service_worker_metrics.h
@@ -18,6 +18,7 @@ namespace content {
class ServiceWorkerMetrics {
public:
+ // Used for UMA. Append-only.
enum ReadResponseResult {
READ_OK,
READ_HEADERS_ERROR,
@@ -25,6 +26,7 @@ class ServiceWorkerMetrics {
NUM_READ_RESPONSE_RESULT_TYPES,
};
+ // Used for UMA. Append-only.
enum WriteResponseResult {
WRITE_OK,
WRITE_HEADERS_ERROR,
@@ -32,6 +34,7 @@ class ServiceWorkerMetrics {
NUM_WRITE_RESPONSE_RESULT_TYPES,
};
+ // Used for UMA. Append-only.
enum DeleteAndStartOverResult {
DELETE_OK,
DELETE_DATABASE_ERROR,
@@ -39,6 +42,7 @@ class ServiceWorkerMetrics {
NUM_DELETE_AND_START_OVER_RESULT_TYPES,
};
+ // Used for UMA. Append-only.
enum URLRequestJobResult {
REQUEST_JOB_FALLBACK_RESPONSE,
REQUEST_JOB_FALLBACK_FOR_CORS,
@@ -74,22 +78,43 @@ class ServiceWorkerMetrics {
// Used for UMA. Append-only.
enum class EventType {
- ACTIVATE,
- INSTALL,
- FETCH,
- SYNC,
- NOTIFICATION_CLICK,
- PUSH,
- GEOFENCING,
- SERVICE_PORT_CONNECT,
+ ACTIVATE = 0,
+ INSTALL = 1,
+ DEPRECATED_FETCH = 2, // Deprecated, use a more specific FETCH_ type.
+ SYNC = 3,
+ NOTIFICATION_CLICK = 4,
+ PUSH = 5,
+ GEOFENCING = 6,
+ // SERVICE_PORT_CONNECT = 7,
+ MESSAGE = 8,
+ NOTIFICATION_CLOSE = 9,
+ FETCH_MAIN_FRAME = 10,
+ FETCH_SUB_FRAME = 11,
+ FETCH_SHARED_WORKER = 12,
+ FETCH_SUB_RESOURCE = 13,
+ UNKNOWN = 14, // Used when event type is not known.
+ FOREIGN_FETCH = 15,
// Add new events to record here.
-
NUM_TYPES
};
// Used for UMA. Append only.
enum class Site { OTHER, NEW_TAB_PAGE, NUM_TYPES };
+ // Not used for UMA.
+ enum class StartSituation {
+ UNKNOWN,
+ DURING_STARTUP,
+ EXISTING_PROCESS,
+ NEW_PROCESS
+ };
+
+ // Not used for UMA.
+ enum class LoadSource { NETWORK, HTTP_CACHE, SERVICE_WORKER_STORAGE };
+
+ // Converts an event type to a string. Used for tracing.
+ static const char* EventTypeToString(EventType event_type);
+
// Excludes NTP scope from UMA for now as it tends to dominate the stats and
// makes the results largely skewed. Some metrics don't follow this policy
// and hence don't call this function.
@@ -117,18 +142,20 @@ class ServiceWorkerMetrics {
// Records the result of trying to start a worker. |is_installed| indicates
// whether the version has been installed.
static void RecordStartWorkerStatus(ServiceWorkerStatusCode status,
+ EventType purpose,
bool is_installed);
// Records the time taken to successfully start a worker. |is_installed|
// indicates whether the version has been installed.
- static void RecordStartWorkerTime(const base::TimeDelta& time,
- bool is_installed);
+ static void RecordStartWorkerTime(base::TimeDelta time,
+ bool is_installed,
+ StartSituation start_situation);
// Records the result of trying to stop a worker.
static void RecordWorkerStopped(StopStatus status);
// Records the time taken to successfully stop a worker.
- static void RecordStopWorkerTime(const base::TimeDelta& time);
+ static void RecordStopWorkerTime(base::TimeDelta time);
static void RecordActivateEventStatus(ServiceWorkerStatusCode status);
static void RecordInstallEventStatus(ServiceWorkerStatusCode status);
@@ -143,17 +170,14 @@ class ServiceWorkerMetrics {
static void RecordEventTimeout(EventType event);
// Records the amount of time spent handling an event.
- static void RecordEventDuration(EventType event, const base::TimeDelta& time);
+ static void RecordEventDuration(EventType event,
+ base::TimeDelta time,
+ bool was_handled);
// Records the result of dispatching a fetch event to a service worker.
static void RecordFetchEventStatus(bool is_main_resource,
ServiceWorkerStatusCode status);
- // Records the amount of time spent handling a fetch event with the given
- // result.
- static void RecordFetchEventTime(ServiceWorkerFetchEventResult result,
- const base::TimeDelta& time);
-
// Records result of a ServiceWorkerURLRequestJob that was forwarded to
// the service worker.
static void RecordURLRequestJobResult(bool is_main_resource,
@@ -171,7 +195,25 @@ class ServiceWorkerMetrics {
// Called at the beginning of each ServiceWorkerVersion::Dispatch*Event
// function. Records the time elapsed since idle (generally the time since the
// previous event ended).
- static void RecordTimeBetweenEvents(const base::TimeDelta& time);
+ static void RecordTimeBetweenEvents(base::TimeDelta time);
+
+ // The following record steps of EmbeddedWorkerInstance's start sequence.
+ static void RecordProcessCreated(bool is_new_process);
+ static void RecordTimeToSendStartWorker(base::TimeDelta duration,
+ StartSituation start_situation);
+ static void RecordTimeToURLJob(base::TimeDelta duration,
+ StartSituation start_situation);
+ static void RecordTimeToLoad(base::TimeDelta duration,
+ LoadSource source,
+ StartSituation start_situation);
+ static void RecordTimeToStartThread(base::TimeDelta duration,
+ StartSituation start_situation);
+ static void RecordTimeToEvaluateScript(base::TimeDelta duration,
+ StartSituation start_situation);
+
+ static const char* LoadSourceToString(LoadSource source);
+ static StartSituation GetStartSituation(bool is_browser_startup_complete,
+ bool is_new_process);
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(ServiceWorkerMetrics);