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

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

Issue 2641813002: Add UMA for service worker navigation preload. (Closed)
Patch Set: patch for landing Created 3 years, 11 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
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/service_worker/service_worker_metrics.h"
6
7 #include "base/test/histogram_tester.h"
8 #include "content/browser/service_worker/embedded_worker_status.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace content {
12
13 namespace {
14 const std::string kNavigationPreloadSuffix = "_NavigationPreloadEnabled";
15 const std::string kStartWorkerDuringStartupSuffix = "_StartWorkerDuringStartup";
16 const std::string kStartWorkerExistingProcessSuffix =
17 "_StartWorkerExistingProcess";
18 const std::string kPreparationTime =
19 "ServiceWorker.ActivatedWorkerPreparationForMainFrame.Time";
20 const std::string kPreparationType =
21 "ServiceWorker.ActivatedWorkerPreparationForMainFrame.Type";
22 } // namespace
23
24 TEST(ServiceWorkerMetricsTest, ActivatedWorkerPreparation) {
25 base::TimeDelta time = base::TimeDelta::FromMilliseconds(123);
26 {
27 // Test preparation when the worker was STARTING.
28 base::HistogramTester histogram_tester;
29 ServiceWorkerMetrics::RecordActivatedWorkerPreparationForMainFrame(
30 time, EmbeddedWorkerStatus::STARTING,
31 ServiceWorkerMetrics::StartSituation::UNKNOWN,
32 false /* did_navigation_preload */);
33 histogram_tester.ExpectUniqueSample(
34 kPreparationType,
35 static_cast<int>(ServiceWorkerMetrics::WorkerPreparationType::STARTING),
36 1);
37 histogram_tester.ExpectTotalCount(
38 kPreparationType + kNavigationPreloadSuffix, 0);
39 histogram_tester.ExpectTimeBucketCount(kPreparationTime, time, 1);
40 histogram_tester.ExpectTimeBucketCount(kPreparationTime + "_StartingWorker",
41 time, 1);
42 histogram_tester.ExpectTotalCount(
43 kPreparationTime + kNavigationPreloadSuffix, 0);
44 }
45
46 {
47 // Test preparation when the worker started up during startup.
48 base::HistogramTester histogram_tester;
49 ServiceWorkerMetrics::RecordActivatedWorkerPreparationForMainFrame(
50 time, EmbeddedWorkerStatus::STOPPED,
51 ServiceWorkerMetrics::StartSituation::DURING_STARTUP,
52 true /* did_navigation_preload */);
53 histogram_tester.ExpectUniqueSample(
54 kPreparationType,
55 static_cast<int>(
56 ServiceWorkerMetrics::WorkerPreparationType::START_DURING_STARTUP),
57 1);
58 histogram_tester.ExpectUniqueSample(
59 kPreparationType + kNavigationPreloadSuffix,
60 static_cast<int>(
61 ServiceWorkerMetrics::WorkerPreparationType::START_DURING_STARTUP),
62 1);
63 histogram_tester.ExpectTimeBucketCount(kPreparationTime, time, 1);
64 histogram_tester.ExpectTimeBucketCount(
65 kPreparationTime + kNavigationPreloadSuffix, time, 1);
66 // This would be the correct name for such a histogram, but it's
67 // intentionally not logged (see comment in
68 // RecordActivatedWorkerPreparationForMainFrame), so expect zero count.
69 histogram_tester.ExpectTotalCount(kPreparationTime +
70 kStartWorkerDuringStartupSuffix +
71 kNavigationPreloadSuffix,
72 0);
73 histogram_tester.ExpectTotalCount(kPreparationTime +
74 kStartWorkerExistingProcessSuffix +
75 kNavigationPreloadSuffix,
76 0);
77 }
78
79 {
80 // Test preparation when the worker started up in an existing process.
81 base::HistogramTester histogram_tester;
82 ServiceWorkerMetrics::RecordActivatedWorkerPreparationForMainFrame(
83 time, EmbeddedWorkerStatus::STOPPED,
84 ServiceWorkerMetrics::StartSituation::EXISTING_PROCESS,
85 true /* did_navigation_preload */);
86 histogram_tester.ExpectUniqueSample(
87 kPreparationType,
88 static_cast<int>(ServiceWorkerMetrics::WorkerPreparationType::
89 START_IN_EXISTING_PROCESS),
90 1);
91 histogram_tester.ExpectUniqueSample(
92 kPreparationType + kNavigationPreloadSuffix,
93 static_cast<int>(ServiceWorkerMetrics::WorkerPreparationType::
94 START_IN_EXISTING_PROCESS),
95 1);
96 histogram_tester.ExpectTimeBucketCount(kPreparationTime, time, 1);
97 histogram_tester.ExpectTimeBucketCount(
98 kPreparationTime + kNavigationPreloadSuffix, time, 1);
99 histogram_tester.ExpectTimeBucketCount(
100 kPreparationTime + kStartWorkerExistingProcessSuffix +
101 kNavigationPreloadSuffix,
102 time, 1);
103 }
104 }
105
106 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698