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

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

Issue 2778173002: Revert of "Speculatively launch Service Workers on mouse/touch events." (Closed)
Patch Set: rebase Created 3 years, 8 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 <limits> 7 #include <limits>
8 #include <string> 8 #include <string>
9 9
10 #include "base/metrics/histogram_macros.h" 10 #include "base/metrics/histogram_macros.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 case ServiceWorkerMetrics::EventType::FETCH_SUB_RESOURCE: 65 case ServiceWorkerMetrics::EventType::FETCH_SUB_RESOURCE:
66 return "_FETCH_SUB_RESOURCE"; 66 return "_FETCH_SUB_RESOURCE";
67 case ServiceWorkerMetrics::EventType::UNKNOWN: 67 case ServiceWorkerMetrics::EventType::UNKNOWN:
68 return "_UNKNOWN"; 68 return "_UNKNOWN";
69 case ServiceWorkerMetrics::EventType::FOREIGN_FETCH: 69 case ServiceWorkerMetrics::EventType::FOREIGN_FETCH:
70 return "_FOREIGN_FETCH"; 70 return "_FOREIGN_FETCH";
71 case ServiceWorkerMetrics::EventType::FETCH_WAITUNTIL: 71 case ServiceWorkerMetrics::EventType::FETCH_WAITUNTIL:
72 return "_FETCH_WAITUNTIL"; 72 return "_FETCH_WAITUNTIL";
73 case ServiceWorkerMetrics::EventType::FOREIGN_FETCH_WAITUNTIL: 73 case ServiceWorkerMetrics::EventType::FOREIGN_FETCH_WAITUNTIL:
74 return "_FOREIGN_FETCH_WAITUNTIL"; 74 return "_FOREIGN_FETCH_WAITUNTIL";
75 case ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN:
76 return "_NAVIGATION_HINT_LINK_MOUSE_DOWN";
77 case ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_TAP_UNCONFIRMED:
78 return "_NAVIGATION_HINT_LINK_TAP_UNCONFIRMED";
79 case ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_TAP_DOWN:
80 return "_NAVIGATION_HINT_LINK_TAP_DOWN";
81 case ServiceWorkerMetrics::EventType::EXTERNAL_REQUEST: 75 case ServiceWorkerMetrics::EventType::EXTERNAL_REQUEST:
82 return "_EXTERNAL_REQUEST"; 76 return "_EXTERNAL_REQUEST";
83 case ServiceWorkerMetrics::EventType::PAYMENT_REQUEST: 77 case ServiceWorkerMetrics::EventType::PAYMENT_REQUEST:
84 return "_PAYMENT_REQUEST"; 78 return "_PAYMENT_REQUEST";
85 case ServiceWorkerMetrics::EventType::BACKGROUND_FETCH_ABORT: 79 case ServiceWorkerMetrics::EventType::BACKGROUND_FETCH_ABORT:
86 return "_BACKGROUND_FETCH_ABORT"; 80 return "_BACKGROUND_FETCH_ABORT";
87 case ServiceWorkerMetrics::EventType::BACKGROUND_FETCH_CLICK: 81 case ServiceWorkerMetrics::EventType::BACKGROUND_FETCH_CLICK:
88 return "_BACKGROUND_FETCH_CLICK"; 82 return "_BACKGROUND_FETCH_CLICK";
89 case ServiceWorkerMetrics::EventType::BACKGROUND_FETCH_FAIL: 83 case ServiceWorkerMetrics::EventType::BACKGROUND_FETCH_FAIL:
90 return "_BACKGROUND_FETCH_FAIL"; 84 return "_BACKGROUND_FETCH_FAIL";
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 base::HistogramBase::kUmaTargetedHistogramFlag); 206 base::HistogramBase::kUmaTargetedHistogramFlag);
213 histogram_pointer->Add(status); 207 histogram_pointer->Add(status);
214 } 208 }
215 209
216 void RecordURLMetricOnUI(const GURL& url) { 210 void RecordURLMetricOnUI(const GURL& url) {
217 DCHECK_CURRENTLY_ON(BrowserThread::UI); 211 DCHECK_CURRENTLY_ON(BrowserThread::UI);
218 GetContentClient()->browser()->RecordURLMetric( 212 GetContentClient()->browser()->RecordURLMetric(
219 "ServiceWorker.ControlledPageUrl", url); 213 "ServiceWorker.ControlledPageUrl", url);
220 } 214 }
221 215
222 // Returns true when the event is for a navigation hint.
223 bool IsNavigationHintEvent(ServiceWorkerMetrics::EventType event_type) {
224 using EventType = ServiceWorkerMetrics::EventType;
225 return event_type == EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN ||
226 event_type == EventType::NAVIGATION_HINT_LINK_TAP_UNCONFIRMED ||
227 event_type == EventType::NAVIGATION_HINT_LINK_TAP_DOWN;
228 }
229
230 enum EventHandledRatioType { 216 enum EventHandledRatioType {
231 EVENT_HANDLED_NONE, 217 EVENT_HANDLED_NONE,
232 EVENT_HANDLED_SOME, 218 EVENT_HANDLED_SOME,
233 EVENT_HANDLED_ALL, 219 EVENT_HANDLED_ALL,
234 NUM_EVENT_HANDLED_RATIO_TYPE, 220 NUM_EVENT_HANDLED_RATIO_TYPE,
235 }; 221 };
236 222
237 } // namespace 223 } // namespace
238 224
239 using ScopedEventRecorder = ServiceWorkerMetrics::ScopedEventRecorder; 225 using ScopedEventRecorder = ServiceWorkerMetrics::ScopedEventRecorder;
240 226
241 ScopedEventRecorder::ScopedEventRecorder( 227 ScopedEventRecorder::ScopedEventRecorder() {}
242 ServiceWorkerMetrics::EventType start_worker_purpose)
243 : start_worker_purpose_(start_worker_purpose) {}
244 228
245 ScopedEventRecorder::~ScopedEventRecorder() { 229 ScopedEventRecorder::~ScopedEventRecorder() {
246 for (const auto& ev : event_stats_) { 230 for (const auto& ev : event_stats_) {
247 RecordEventHandledRatio(ev.first, ev.second.handled_events, 231 RecordEventHandledRatio(ev.first, ev.second.handled_events,
248 ev.second.fired_events); 232 ev.second.fired_events);
249 } 233 }
250 if (IsNavigationHintEvent(start_worker_purpose_)) {
251 RecordNavigationHintPrecision(
252 start_worker_purpose_,
253 event_stats_[EventType::FETCH_MAIN_FRAME].fired_events != 0 ||
254 event_stats_[EventType::FETCH_SUB_FRAME].fired_events != 0);
255 }
256 } 234 }
257 235
258 void ScopedEventRecorder::RecordEventHandledStatus( 236 void ScopedEventRecorder::RecordEventHandledStatus(
259 ServiceWorkerMetrics::EventType event, 237 ServiceWorkerMetrics::EventType event,
260 bool handled) { 238 bool handled) {
261 event_stats_[event].fired_events++; 239 event_stats_[event].fired_events++;
262 if (handled) 240 if (handled)
263 event_stats_[event].handled_events++; 241 event_stats_[event].handled_events++;
264 } 242 }
265 243
(...skipping 22 matching lines...) Expand all
288 UMA_HISTOGRAM_ENUMERATION( 266 UMA_HISTOGRAM_ENUMERATION(
289 "ServiceWorker.EventHandledRatioType.ForeignFetch", type, 267 "ServiceWorker.EventHandledRatioType.ForeignFetch", type,
290 NUM_EVENT_HANDLED_RATIO_TYPE); 268 NUM_EVENT_HANDLED_RATIO_TYPE);
291 break; 269 break;
292 default: 270 default:
293 // Do nothing. 271 // Do nothing.
294 break; 272 break;
295 } 273 }
296 } 274 }
297 275
298 void ScopedEventRecorder::RecordNavigationHintPrecision(
299 ServiceWorkerMetrics::EventType start_worker_purpose,
300 bool frame_fetch_event_fired) {
301 DCHECK(IsNavigationHintEvent(start_worker_purpose));
302 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.NavigationHintPrecision",
303 frame_fetch_event_fired);
304 switch (start_worker_purpose) {
305 case EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN:
306 UMA_HISTOGRAM_BOOLEAN(
307 "ServiceWorker.NavigationHintPrecision.LINK_MOUSE_DOWN",
308 frame_fetch_event_fired);
309 break;
310 case EventType::NAVIGATION_HINT_LINK_TAP_UNCONFIRMED:
311 UMA_HISTOGRAM_BOOLEAN(
312 "ServiceWorker.NavigationHintPrecision.LINK_TAP_UNCONFIRMED",
313 frame_fetch_event_fired);
314 break;
315 case EventType::NAVIGATION_HINT_LINK_TAP_DOWN:
316 UMA_HISTOGRAM_BOOLEAN(
317 "ServiceWorker.NavigationHintPrecision.LINK_TAP_DOWN",
318 frame_fetch_event_fired);
319 break;
320 default:
321 NOTREACHED();
322 break;
323 }
324 }
325
326 const char* ServiceWorkerMetrics::EventTypeToString(EventType event_type) { 276 const char* ServiceWorkerMetrics::EventTypeToString(EventType event_type) {
327 switch (event_type) { 277 switch (event_type) {
328 case EventType::ACTIVATE: 278 case EventType::ACTIVATE:
329 return "Activate"; 279 return "Activate";
330 case EventType::INSTALL: 280 case EventType::INSTALL:
331 return "Install"; 281 return "Install";
332 case EventType::SYNC: 282 case EventType::SYNC:
333 return "Sync"; 283 return "Sync";
334 case EventType::NOTIFICATION_CLICK: 284 case EventType::NOTIFICATION_CLICK:
335 return "Notification Click"; 285 return "Notification Click";
(...skipping 12 matching lines...) Expand all
348 case EventType::FETCH_SUB_RESOURCE: 298 case EventType::FETCH_SUB_RESOURCE:
349 return "Fetch Subresource"; 299 return "Fetch Subresource";
350 case EventType::UNKNOWN: 300 case EventType::UNKNOWN:
351 return "Unknown"; 301 return "Unknown";
352 case EventType::FOREIGN_FETCH: 302 case EventType::FOREIGN_FETCH:
353 return "Foreign Fetch"; 303 return "Foreign Fetch";
354 case EventType::FETCH_WAITUNTIL: 304 case EventType::FETCH_WAITUNTIL:
355 return "Fetch WaitUntil"; 305 return "Fetch WaitUntil";
356 case EventType::FOREIGN_FETCH_WAITUNTIL: 306 case EventType::FOREIGN_FETCH_WAITUNTIL:
357 return "Foreign Fetch WaitUntil"; 307 return "Foreign Fetch WaitUntil";
358 case EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN:
359 return "Navigation Hint Link Mouse Down";
360 case EventType::NAVIGATION_HINT_LINK_TAP_UNCONFIRMED:
361 return "Navigation Hint Link Tap Unconfirmed";
362 case EventType::NAVIGATION_HINT_LINK_TAP_DOWN:
363 return "Navigation Hint Link Tap Down";
364 case EventType::EXTERNAL_REQUEST: 308 case EventType::EXTERNAL_REQUEST:
365 return "External Request"; 309 return "External Request";
366 case EventType::PAYMENT_REQUEST: 310 case EventType::PAYMENT_REQUEST:
367 return "Payment Request"; 311 return "Payment Request";
368 case EventType::BACKGROUND_FETCH_ABORT: 312 case EventType::BACKGROUND_FETCH_ABORT:
369 return "Background Fetch Abort"; 313 return "Background Fetch Abort";
370 case EventType::BACKGROUND_FETCH_CLICK: 314 case EventType::BACKGROUND_FETCH_CLICK:
371 return "Background Fetch Click"; 315 return "Background Fetch Click";
372 case EventType::BACKGROUND_FETCH_FAIL: 316 case EventType::BACKGROUND_FETCH_FAIL:
373 return "Background Fetch Fail"; 317 return "Background Fetch Fail";
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
712 time); 656 time);
713 break; 657 break;
714 case EventType::BACKGROUND_FETCH_FAIL: 658 case EventType::BACKGROUND_FETCH_FAIL:
715 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.BackgroundFetchFailEvent.Time", 659 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.BackgroundFetchFailEvent.Time",
716 time); 660 time);
717 break; 661 break;
718 case EventType::BACKGROUND_FETCHED: 662 case EventType::BACKGROUND_FETCHED:
719 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.BackgroundFetchedEvent.Time", 663 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.BackgroundFetchedEvent.Time",
720 time); 664 time);
721 break; 665 break;
722 // Those navigation hints should not be sent as request events.
723 case EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN:
724 case EventType::NAVIGATION_HINT_LINK_TAP_UNCONFIRMED:
725 case EventType::NAVIGATION_HINT_LINK_TAP_DOWN:
726 666
727 case EventType::UNKNOWN: 667 case EventType::UNKNOWN:
728 case EventType::NUM_TYPES: 668 case EventType::NUM_TYPES:
729 NOTREACHED() << "Invalid event type"; 669 NOTREACHED() << "Invalid event type";
730 break; 670 break;
731 } 671 }
732 } 672 }
733 673
734 void ServiceWorkerMetrics::RecordFetchEventStatus( 674 void ServiceWorkerMetrics::RecordFetchEventStatus(
735 bool is_main_resource, 675 bool is_main_resource,
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
1019 constexpr base::TimeDelta kMax = base::TimeDelta::FromDays(1); 959 constexpr base::TimeDelta kMax = base::TimeDelta::FromDays(1);
1020 // Set the bucket count to 50 since that is the recommended value for all 960 // Set the bucket count to 50 since that is the recommended value for all
1021 // histograms. 961 // histograms.
1022 const int kBucketCount = 50; 962 const int kBucketCount = 50;
1023 963
1024 UMA_HISTOGRAM_CUSTOM_TIMES("ServiceWorker.Runtime", time, kMin, kMax, 964 UMA_HISTOGRAM_CUSTOM_TIMES("ServiceWorker.Runtime", time, kMin, kMax,
1025 kBucketCount); 965 kBucketCount);
1026 } 966 }
1027 967
1028 } // namespace content 968 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/service_worker/service_worker_metrics.h ('k') | content/browser/service_worker/service_worker_version.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698