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

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: Created 5 years, 5 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 bool ShouldExcludeForHistogram(const GURL& scope) {
26 // Exclude NTP scope from UMA for now as it tends to dominate the stats
27 // and makes the results largely skewed.
28 // TOOD(kinuko): This should be temporary, revisit this once we have
29 // better idea about what should be excluded in the UMA.
30 // (UIThreadSearchTermsData::GoogleBaseURLValue() returns the google base
31 // URL, but not available in content layer)
32 const char google_like_scope_prefix[] = "https://www.google.";
33 return base::StartsWith(scope.spec(), google_like_scope_prefix,
34 base::CompareCase::INSENSITIVE_ASCII);
35 }
36
37 enum EventHandledRatioType {
38 EVENT_HANDLED_NONE,
39 EVENT_HANDLED_SOME,
40 EVENT_HANDLED_ALL,
41 NUM_EVENT_HANDLED_RATIO_TYPE,
42 };
43
24 } // namespace 44 } // namespace
25 45
26 void ServiceWorkerMetrics::CountInitDiskCacheResult(bool result) { 46 void ServiceWorkerMetrics::CountInitDiskCacheResult(bool result) {
27 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.DiskCache.InitResult", result); 47 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.DiskCache.InitResult", result);
28 } 48 }
29 49
30 void ServiceWorkerMetrics::CountReadResponseResult( 50 void ServiceWorkerMetrics::CountReadResponseResult(
31 ServiceWorkerMetrics::ReadResponseResult result) { 51 ServiceWorkerMetrics::ReadResponseResult result) {
32 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.DiskCache.ReadResponseResult", 52 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.DiskCache.ReadResponseResult",
33 result, NUM_READ_RESPONSE_RESULT_TYPES); 53 result, NUM_READ_RESPONSE_RESULT_TYPES);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.ActivateEventStatus", status, 135 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.ActivateEventStatus", status,
116 SERVICE_WORKER_ERROR_MAX_VALUE); 136 SERVICE_WORKER_ERROR_MAX_VALUE);
117 } 137 }
118 138
119 void ServiceWorkerMetrics::RecordInstallEventStatus( 139 void ServiceWorkerMetrics::RecordInstallEventStatus(
120 ServiceWorkerStatusCode status) { 140 ServiceWorkerStatusCode status) {
121 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.InstallEventStatus", status, 141 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.InstallEventStatus", status,
122 SERVICE_WORKER_ERROR_MAX_VALUE); 142 SERVICE_WORKER_ERROR_MAX_VALUE);
123 } 143 }
124 144
125 void ServiceWorkerMetrics::RecordEventStatus(size_t fired_events, 145 void ServiceWorkerMetrics::RecordEventHandledRatio(const GURL& scope,
126 size_t handled_events) { 146 EventType event,
127 if (!fired_events) 147 size_t handled_events,
148 size_t fired_events) {
149 if (!fired_events || ShouldExcludeForHistogram(scope))
128 return; 150 return;
129 int unhandled_ratio = (fired_events - handled_events) * 100 / fired_events; 151 EventHandledRatioType type = EVENT_HANDLED_SOME;
130 UMA_HISTOGRAM_PERCENTAGE("ServiceWorker.UnhandledEventRatio", 152 if (fired_events == handled_events)
131 unhandled_ratio); 153 type = EVENT_HANDLED_ALL;
154 else if (handled_events == 0)
155 type = EVENT_HANDLED_NONE;
156 // For now Fetch is the only type that is recorded.
157 DCHECK_EQ(EVENT_TYPE_FETCH, event);
158 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.EventHandledRatioType.Fetch", type,
159 NUM_EVENT_HANDLED_RATIO_TYPE);
132 } 160 }
133 161
134 void ServiceWorkerMetrics::RecordFetchEventStatus( 162 void ServiceWorkerMetrics::RecordFetchEventStatus(
135 bool is_main_resource, 163 bool is_main_resource,
136 ServiceWorkerStatusCode status) { 164 ServiceWorkerStatusCode status) {
137 if (is_main_resource) { 165 if (is_main_resource) {
138 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.FetchEvent.MainResource.Status", 166 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.FetchEvent.MainResource.Status",
139 status, SERVICE_WORKER_ERROR_MAX_VALUE); 167 status, SERVICE_WORKER_ERROR_MAX_VALUE);
140 } else { 168 } else {
141 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.FetchEvent.Subresource.Status", 169 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.FetchEvent.Subresource.Status",
142 status, SERVICE_WORKER_ERROR_MAX_VALUE); 170 status, SERVICE_WORKER_ERROR_MAX_VALUE);
143 } 171 }
144 } 172 }
145 173
146 void ServiceWorkerMetrics::RecordURLRequestJobResult( 174 void ServiceWorkerMetrics::RecordURLRequestJobResult(
147 bool is_main_resource, 175 bool is_main_resource,
148 URLRequestJobResult result) { 176 URLRequestJobResult result) {
149 if (is_main_resource) { 177 if (is_main_resource) {
150 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.MainResource.Result", 178 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.MainResource.Result",
151 result, NUM_REQUEST_JOB_RESULT_TYPES); 179 result, NUM_REQUEST_JOB_RESULT_TYPES);
152 } else { 180 } else {
153 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.Subresource.Result", 181 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.Subresource.Result",
154 result, NUM_REQUEST_JOB_RESULT_TYPES); 182 result, NUM_REQUEST_JOB_RESULT_TYPES);
155 } 183 }
156 } 184 }
157 185
158 } // namespace content 186 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/service_worker/service_worker_metrics.h ('k') | content/browser/service_worker/service_worker_version.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698