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

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.
falken 2015/07/03 04:45:00 Comment should also say why, as the CL description
kinuko 2015/07/05 09:19:04 Done.
27 // TOOD(kinuko): This should be temporary, revisit this once we have
28 // better idea about what should be excluded in the UMA.
29 // (UIThreadSearchTermsData::GoogleBaseURLValue() returns the google base
30 // URL, but not available in content layer)
31 const char google_like_scope_prefix[] = "https://www.google.";
32 return base::StartsWith(scope.spec(), google_like_scope_prefix,
33 base::CompareCase::INSENSITIVE_ASCII);
34 }
35
36 enum EventHandledRatioType {
37 EVENT_HANDLED_NONE,
38 EVENT_HANDLED_SOME,
39 EVENT_HANDLED_ALL,
40 NUM_EVENT_HANDLED_RATIO_TYPE,
41 };
42
24 } // namespace 43 } // namespace
25 44
26 void ServiceWorkerMetrics::CountInitDiskCacheResult(bool result) { 45 void ServiceWorkerMetrics::CountInitDiskCacheResult(bool result) {
27 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.DiskCache.InitResult", result); 46 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.DiskCache.InitResult", result);
28 } 47 }
29 48
30 void ServiceWorkerMetrics::CountReadResponseResult( 49 void ServiceWorkerMetrics::CountReadResponseResult(
31 ServiceWorkerMetrics::ReadResponseResult result) { 50 ServiceWorkerMetrics::ReadResponseResult result) {
32 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.DiskCache.ReadResponseResult", 51 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.DiskCache.ReadResponseResult",
33 result, NUM_READ_RESPONSE_RESULT_TYPES); 52 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, 134 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.ActivateEventStatus", status,
116 SERVICE_WORKER_ERROR_MAX_VALUE); 135 SERVICE_WORKER_ERROR_MAX_VALUE);
117 } 136 }
118 137
119 void ServiceWorkerMetrics::RecordInstallEventStatus( 138 void ServiceWorkerMetrics::RecordInstallEventStatus(
120 ServiceWorkerStatusCode status) { 139 ServiceWorkerStatusCode status) {
121 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.InstallEventStatus", status, 140 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.InstallEventStatus", status,
122 SERVICE_WORKER_ERROR_MAX_VALUE); 141 SERVICE_WORKER_ERROR_MAX_VALUE);
123 } 142 }
124 143
125 void ServiceWorkerMetrics::RecordEventStatus(size_t fired_events, 144 void ServiceWorkerMetrics::RecordEventHandledRatio(const GURL& scope,
126 size_t handled_events) { 145 EventType event,
127 if (!fired_events) 146 size_t handled_events,
147 size_t fired_events) {
148 if (!fired_events || ShouldExcludeForHistogram(scope))
128 return; 149 return;
129 int unhandled_ratio = (fired_events - handled_events) * 100 / fired_events; 150 EventHandledRatioType type = EVENT_HANDLED_SOME;
130 UMA_HISTOGRAM_PERCENTAGE("ServiceWorker.UnhandledEventRatio", 151 if (fired_events == handled_events)
131 unhandled_ratio); 152 type = EVENT_HANDLED_ALL;
153 else if (handled_events == 0)
154 type = EVENT_HANDLED_NONE;
155 // For now Fetch is the only type that is recorded.
156 DCHECK_EQ(EVENT_TYPE_FETCH, event);
157 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.EventHandledRatioType.Fetch", type,
158 NUM_EVENT_HANDLED_RATIO_TYPE);
132 } 159 }
133 160
134 void ServiceWorkerMetrics::RecordFetchEventStatus( 161 void ServiceWorkerMetrics::RecordFetchEventStatus(
135 bool is_main_resource, 162 bool is_main_resource,
136 ServiceWorkerStatusCode status) { 163 ServiceWorkerStatusCode status) {
137 if (is_main_resource) { 164 if (is_main_resource) {
138 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.FetchEvent.MainResource.Status", 165 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.FetchEvent.MainResource.Status",
139 status, SERVICE_WORKER_ERROR_MAX_VALUE); 166 status, SERVICE_WORKER_ERROR_MAX_VALUE);
140 } else { 167 } else {
141 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.FetchEvent.Subresource.Status", 168 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.FetchEvent.Subresource.Status",
142 status, SERVICE_WORKER_ERROR_MAX_VALUE); 169 status, SERVICE_WORKER_ERROR_MAX_VALUE);
143 } 170 }
144 } 171 }
145 172
146 void ServiceWorkerMetrics::RecordURLRequestJobResult( 173 void ServiceWorkerMetrics::RecordURLRequestJobResult(
147 bool is_main_resource, 174 bool is_main_resource,
148 URLRequestJobResult result) { 175 URLRequestJobResult result) {
149 if (is_main_resource) { 176 if (is_main_resource) {
150 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.MainResource.Result", 177 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.MainResource.Result",
151 result, NUM_REQUEST_JOB_RESULT_TYPES); 178 result, NUM_REQUEST_JOB_RESULT_TYPES);
152 } else { 179 } else {
153 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.Subresource.Result", 180 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.Subresource.Result",
154 result, NUM_REQUEST_JOB_RESULT_TYPES); 181 result, NUM_REQUEST_JOB_RESULT_TYPES);
155 } 182 }
156 } 183 }
157 184
158 } // namespace content 185 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698