OLD | NEW |
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/sparse_histogram.h" | 8 #include "base/metrics/sparse_histogram.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "content/common/service_worker/service_worker_types.h" | 10 #include "content/common/service_worker/service_worker_types.h" |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 case EventType::NOTIFICATION_CLOSE: | 61 case EventType::NOTIFICATION_CLOSE: |
62 return "Notification Close"; | 62 return "Notification Close"; |
63 case EventType::PUSH: | 63 case EventType::PUSH: |
64 return "Push"; | 64 return "Push"; |
65 case EventType::GEOFENCING: | 65 case EventType::GEOFENCING: |
66 return "Geofencing"; | 66 return "Geofencing"; |
67 case EventType::SERVICE_PORT_CONNECT: | 67 case EventType::SERVICE_PORT_CONNECT: |
68 return "Service Port Connect"; | 68 return "Service Port Connect"; |
69 case EventType::MESSAGE: | 69 case EventType::MESSAGE: |
70 return "Message"; | 70 return "Message"; |
| 71 case EventType::FETCH_MAIN_FRAME: |
| 72 return "Fetch Main Frame"; |
| 73 case EventType::FETCH_SUB_FRAME: |
| 74 return "Fetch Sub Frame"; |
| 75 case EventType::FETCH_SHARED_WORKER: |
| 76 return "Fetch Shared Worker"; |
| 77 case EventType::FETCH_SUB_RESOURCE: |
| 78 return "Fetch Subresource"; |
| 79 case EventType::UNKNOWN: |
| 80 return "Unknown"; |
71 case EventType::NUM_TYPES: | 81 case EventType::NUM_TYPES: |
72 break; | 82 break; |
73 } | 83 } |
74 NOTREACHED() << "Got unexpected event type: " << static_cast<int>(event_type); | 84 NOTREACHED() << "Got unexpected event type: " << static_cast<int>(event_type); |
75 return "Unknown"; | 85 return "error"; |
76 } | 86 } |
77 | 87 |
78 bool ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(Site site) { | 88 bool ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(Site site) { |
79 return site == ServiceWorkerMetrics::Site::NEW_TAB_PAGE; | 89 return site == ServiceWorkerMetrics::Site::NEW_TAB_PAGE; |
80 } | 90 } |
81 | 91 |
82 bool ServiceWorkerMetrics::ShouldExcludeURLFromHistogram(const GURL& url) { | 92 bool ServiceWorkerMetrics::ShouldExcludeURLFromHistogram(const GURL& url) { |
83 return ShouldExcludeSiteFromHistogram(SiteFromURL(url)); | 93 return ShouldExcludeSiteFromHistogram(SiteFromURL(url)); |
84 } | 94 } |
85 | 95 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 static_cast<int>(Site::NUM_TYPES)); | 150 static_cast<int>(Site::NUM_TYPES)); |
141 | 151 |
142 if (ShouldExcludeSiteFromHistogram(site)) | 152 if (ShouldExcludeSiteFromHistogram(site)) |
143 return; | 153 return; |
144 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 154 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
145 base::Bind(&RecordURLMetricOnUI, url)); | 155 base::Bind(&RecordURLMetricOnUI, url)); |
146 } | 156 } |
147 | 157 |
148 void ServiceWorkerMetrics::RecordStartWorkerStatus( | 158 void ServiceWorkerMetrics::RecordStartWorkerStatus( |
149 ServiceWorkerStatusCode status, | 159 ServiceWorkerStatusCode status, |
| 160 EventType purpose, |
150 bool is_installed) { | 161 bool is_installed) { |
151 if (is_installed) { | 162 if (is_installed) { |
152 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.Status", status, | 163 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.Status", status, |
153 SERVICE_WORKER_ERROR_MAX_VALUE); | 164 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 165 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.Purpose", |
| 166 static_cast<int>(purpose), |
| 167 static_cast<int>(EventType::NUM_TYPES)); |
| 168 if (status == SERVICE_WORKER_ERROR_TIMEOUT) { |
| 169 UMA_HISTOGRAM_ENUMERATION( |
| 170 "ServiceWorker.StartWorker.Timeout.StartPurpose", |
| 171 static_cast<int>(purpose), static_cast<int>(EventType::NUM_TYPES)); |
| 172 } |
154 } else { | 173 } else { |
155 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartNewWorker.Status", status, | 174 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartNewWorker.Status", status, |
156 SERVICE_WORKER_ERROR_MAX_VALUE); | 175 SERVICE_WORKER_ERROR_MAX_VALUE); |
157 } | 176 } |
158 } | 177 } |
159 | 178 |
160 void ServiceWorkerMetrics::RecordStartWorkerTime(const base::TimeDelta& time, | 179 void ServiceWorkerMetrics::RecordStartWorkerTime(const base::TimeDelta& time, |
161 bool is_installed) { | 180 bool is_installed) { |
162 if (is_installed) | 181 if (is_installed) |
163 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.StartWorker.Time", time); | 182 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.StartWorker.Time", time); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 const base::TimeDelta& time, | 234 const base::TimeDelta& time, |
216 bool was_handled) { | 235 bool was_handled) { |
217 switch (event) { | 236 switch (event) { |
218 case EventType::ACTIVATE: | 237 case EventType::ACTIVATE: |
219 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.ActivateEvent.Time", time); | 238 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.ActivateEvent.Time", time); |
220 break; | 239 break; |
221 case EventType::INSTALL: | 240 case EventType::INSTALL: |
222 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.InstallEvent.Time", time); | 241 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.InstallEvent.Time", time); |
223 break; | 242 break; |
224 case EventType::FETCH: | 243 case EventType::FETCH: |
| 244 case EventType::FETCH_MAIN_FRAME: |
| 245 case EventType::FETCH_SUB_FRAME: |
| 246 case EventType::FETCH_SHARED_WORKER: |
| 247 case EventType::FETCH_SUB_RESOURCE: |
225 if (was_handled) { | 248 if (was_handled) { |
226 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.FetchEvent.HasResponse.Time", | 249 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.FetchEvent.HasResponse.Time", |
227 time); | 250 time); |
228 } else { | 251 } else { |
229 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.FetchEvent.Fallback.Time", | 252 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.FetchEvent.Fallback.Time", |
230 time); | 253 time); |
231 } | 254 } |
232 break; | 255 break; |
233 case EventType::SYNC: | 256 case EventType::SYNC: |
234 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.BackgroundSyncEvent.Time", | 257 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.BackgroundSyncEvent.Time", |
(...skipping 13 matching lines...) Expand all Loading... |
248 case EventType::MESSAGE: | 271 case EventType::MESSAGE: |
249 // TODO(nhiroki): Record event duration for Message event after | 272 // TODO(nhiroki): Record event duration for Message event after |
250 // ExtendableMessageEvent is enabled by default (crbug.com/543198). | 273 // ExtendableMessageEvent is enabled by default (crbug.com/543198). |
251 break; | 274 break; |
252 | 275 |
253 // For now event duration for these events is not recorded. | 276 // For now event duration for these events is not recorded. |
254 case EventType::GEOFENCING: | 277 case EventType::GEOFENCING: |
255 case EventType::SERVICE_PORT_CONNECT: | 278 case EventType::SERVICE_PORT_CONNECT: |
256 break; | 279 break; |
257 | 280 |
| 281 case EventType::UNKNOWN: |
258 case EventType::NUM_TYPES: | 282 case EventType::NUM_TYPES: |
259 NOTREACHED() << "Invalid event type"; | 283 NOTREACHED() << "Invalid event type"; |
260 break; | 284 break; |
261 } | 285 } |
262 } | 286 } |
263 | 287 |
264 void ServiceWorkerMetrics::RecordFetchEventStatus( | 288 void ServiceWorkerMetrics::RecordFetchEventStatus( |
265 bool is_main_resource, | 289 bool is_main_resource, |
266 ServiceWorkerStatusCode status) { | 290 ServiceWorkerStatusCode status) { |
267 if (is_main_resource) { | 291 if (is_main_resource) { |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.FallbackedRequestMode", | 327 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.URLRequestJob.FallbackedRequestMode", |
304 mode, FETCH_REQUEST_MODE_LAST + 1); | 328 mode, FETCH_REQUEST_MODE_LAST + 1); |
305 } | 329 } |
306 | 330 |
307 void ServiceWorkerMetrics::RecordTimeBetweenEvents( | 331 void ServiceWorkerMetrics::RecordTimeBetweenEvents( |
308 const base::TimeDelta& time) { | 332 const base::TimeDelta& time) { |
309 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.TimeBetweenEvents", time); | 333 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.TimeBetweenEvents", time); |
310 } | 334 } |
311 | 335 |
312 } // namespace content | 336 } // namespace content |
OLD | NEW |