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

Side by Side Diff: content/browser/service_worker/service_worker_metrics.cc

Issue 1178043002: Update ServiceWorker event handled status histogram (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: per-event metrics, exclude NTP etc Created 5 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/service_worker/service_worker_metrics.h" 5 #include "content/browser/service_worker/service_worker_metrics.h"
6 6
7 #include "base/metrics/histogram_macros.h" 7 #include "base/metrics/histogram_macros.h"
8 #include "base/metrics/user_metrics_action.h" 8 #include "base/metrics/user_metrics_action.h"
9 #include "base/strings/string_util.h"
9 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
10 #include "content/public/browser/content_browser_client.h" 11 #include "content/public/browser/content_browser_client.h"
11 #include "content/public/browser/user_metrics.h" 12 #include "content/public/browser/user_metrics.h"
12 #include "content/public/common/content_client.h" 13 #include "content/public/common/content_client.h"
13 14
14 namespace content { 15 namespace content {
15 16
16 namespace { 17 namespace {
17 18
18 void RecordURLMetricOnUI(const GURL& url) { 19 void RecordURLMetricOnUI(const GURL& url) {
19 DCHECK_CURRENTLY_ON(BrowserThread::UI); 20 DCHECK_CURRENTLY_ON(BrowserThread::UI);
20 GetContentClient()->browser()->RecordURLMetric( 21 GetContentClient()->browser()->RecordURLMetric(
21 "ServiceWorker.ControlledPageUrl", url); 22 "ServiceWorker.ControlledPageUrl", url);
22 } 23 }
23 24
25 // Exclude NTP scope from UMA for now.
26 // TOOD(kinuko): This should be temporary, revisit this once we have
27 // better idea about what should be excluded in the UMA.
28 // (UIThreadSearchTermsData::GoogleBaseURLValue() returns the google base
29 // URL, but not available in content layer)
30 bool IsGoogleLikeScope(const GURL& scope) {
31 const char google_like_scope_prefix[] = "https://www.google.";
32 return base::StartsWithASCII(scope.spec(), google_like_scope_prefix,
33 false /* case sensitive */);
falken 2015/06/25 09:31:39 StartsWithASCII with the bool param is now depreca
kinuko 2015/07/02 14:27:26 Done.
34 }
35
36 enum EventHandledStatus {
37 EVENT_HANDLED,
38 EVENT_NOT_HANDLED,
39 EVENT_HANDLED_STATUS_MAX,
falken 2015/06/25 09:31:39 nit: I slightly prefer NUM_TYPES over MAX. Some ot
kinuko 2015/07/02 14:27:26 Done.
40 };
41
42 enum PerWorkerEventHandledStatus {
43 NO_EVENTS_HANDLED,
44 SOME_EVENTS_HANDLED,
45 ALL_EVENTS_HANDLED,
46 PER_WORKER_EVENT_HANDLED_STATUS_MAX,
47 };
48
24 } // namespace 49 } // namespace
25 50
26 void ServiceWorkerMetrics::CountInitDiskCacheResult(bool result) { 51 void ServiceWorkerMetrics::CountInitDiskCacheResult(bool result) {
27 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.DiskCache.InitResult", result); 52 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.DiskCache.InitResult", result);
28 } 53 }
29 54
30 void ServiceWorkerMetrics::CountReadResponseResult( 55 void ServiceWorkerMetrics::CountReadResponseResult(
31 ServiceWorkerMetrics::ReadResponseResult result) { 56 ServiceWorkerMetrics::ReadResponseResult result) {
32 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.DiskCache.ReadResponseResult", 57 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.DiskCache.ReadResponseResult",
33 result, NUM_READ_RESPONSE_RESULT_TYPES); 58 result, NUM_READ_RESPONSE_RESULT_TYPES);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.ActivateEventStatus", status, 131 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.ActivateEventStatus", status,
107 SERVICE_WORKER_ERROR_MAX_VALUE); 132 SERVICE_WORKER_ERROR_MAX_VALUE);
108 } 133 }
109 134
110 void ServiceWorkerMetrics::RecordInstallEventStatus( 135 void ServiceWorkerMetrics::RecordInstallEventStatus(
111 ServiceWorkerStatusCode status) { 136 ServiceWorkerStatusCode status) {
112 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.InstallEventStatus", status, 137 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.InstallEventStatus", status,
113 SERVICE_WORKER_ERROR_MAX_VALUE); 138 SERVICE_WORKER_ERROR_MAX_VALUE);
114 } 139 }
115 140
116 void ServiceWorkerMetrics::RecordEventStatus(size_t fired_events, 141 void ServiceWorkerMetrics::RecordPerWorkerEventHandledStatus(
117 size_t handled_events) { 142 const GURL& scope,
118 if (!fired_events) 143 EventType event,
144 size_t fired_events,
145 size_t handled_events) {
146 if (!fired_events || IsGoogleLikeScope(scope))
119 return; 147 return;
120 int unhandled_ratio = (fired_events - handled_events) * 100 / fired_events; 148 PerWorkerEventHandledStatus status = SOME_EVENTS_HANDLED;
121 UMA_HISTOGRAM_PERCENTAGE("ServiceWorker.UnhandledEventRatio", 149 if (fired_events == handled_events)
122 unhandled_ratio); 150 status = ALL_EVENTS_HANDLED;
151 else if (handled_events == 0)
152 status = NO_EVENTS_HANDLED;
153 // For now Fetch is the only type that is recorded.
154 DCHECK_EQ(EVENT_TYPE_FETCH, event);
155 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.EventHandledStatus.PerWorker.Fetch",
156 status, PER_WORKER_EVENT_HANDLED_STATUS_MAX);
157 }
158
159 void ServiceWorkerMetrics::RecordEventHandledStatus(const GURL& scope,
160 EventType event,
161 bool handled) {
162 if (IsGoogleLikeScope(scope))
163 return;
164 EventHandledStatus handled_status =
165 handled ? EVENT_HANDLED : EVENT_NOT_HANDLED;
166 // For now Fetch is the only type that is recorded.
167 DCHECK_EQ(EVENT_TYPE_FETCH, event);
168 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.EventHandledStatus.Fetch",
169 handled_status, EVENT_HANDLED_STATUS_MAX);
123 } 170 }
124 171
125 void ServiceWorkerMetrics::RecordFetchEventStatus( 172 void ServiceWorkerMetrics::RecordFetchEventStatus(
126 bool is_main_resource, 173 bool is_main_resource,
127 ServiceWorkerStatusCode status) { 174 ServiceWorkerStatusCode status) {
128 if (is_main_resource) { 175 if (is_main_resource) {
129 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.FetchEvent.MainResource.Status", 176 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.FetchEvent.MainResource.Status",
130 status, SERVICE_WORKER_ERROR_MAX_VALUE); 177 status, SERVICE_WORKER_ERROR_MAX_VALUE);
131 } else { 178 } else {
132 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.FetchEvent.Subresource.Status", 179 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.FetchEvent.Subresource.Status",
133 status, SERVICE_WORKER_ERROR_MAX_VALUE); 180 status, SERVICE_WORKER_ERROR_MAX_VALUE);
134 } 181 }
135 } 182 }
136 183
137 void ServiceWorkerMetrics::RecordURLRequestJobResult( 184 void ServiceWorkerMetrics::RecordURLRequestJobResult(
138 bool is_main_resource, 185 bool is_main_resource,
139 URLRequestJobResult result) { 186 URLRequestJobResult result) {
140 if (is_main_resource) { 187 if (is_main_resource) {
141 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.MainResource.Result", 188 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.MainResource.Result",
142 result, NUM_REQUEST_JOB_RESULT_TYPES); 189 result, NUM_REQUEST_JOB_RESULT_TYPES);
143 } else { 190 } else {
144 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.Subresource.Result", 191 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.Subresource.Result",
145 result, NUM_REQUEST_JOB_RESULT_TYPES); 192 result, NUM_REQUEST_JOB_RESULT_TYPES);
146 } 193 }
147 } 194 }
148 195
149 } // namespace content 196 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698