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

Side by Side Diff: content/browser/media/android/media_session_uma_helper_unittest.cc

Issue 1698933004: Make MediaSession a runtime-enabled feature on Desktop. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 9 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 2015 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/media/android/media_session_uma_helper.h"
6
7 #include "base/metrics/histogram_samples.h"
8 #include "base/test/histogram_tester.h"
9 #include "base/test/simple_test_clock.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace content {
13
14 using MediaSessionSuspendedSource =
15 MediaSessionUmaHelper::MediaSessionSuspendedSource;
16
17 namespace {
18
19 class MediaSessionUmaHelperTest : public testing::Test {
20 public:
21 MediaSessionUmaHelperTest() = default;
22
23 void SetUp() override {
24 clock_ = new base::SimpleTestClock();
25 clock_->SetNow(base::Time::Now());
26 media_session_uma_helper_.SetClockForTest(
27 scoped_ptr<base::SimpleTestClock>(clock_));
28 }
29
30 void TearDown() override {
31 clock_ = nullptr;
32 }
33
34 base::SimpleTestClock* clock() { return clock_; }
35
36 MediaSessionUmaHelper& media_session_uma_helper() {
37 return media_session_uma_helper_;
38 };
39
40 scoped_ptr<base::HistogramSamples> GetHistogramSamplesSinceTestStart(
41 const std::string& name) {
42 return histogram_tester_.GetHistogramSamplesSinceCreation(name);
43 }
44
45 private:
46 base::SimpleTestClock* clock_ = nullptr;
47 MediaSessionUmaHelper media_session_uma_helper_;
48 base::HistogramTester histogram_tester_;
49 };
50
51 } // anonymous namespace
52
53 TEST_F(MediaSessionUmaHelperTest, CreateAndKillDoesNothing) {
54 {
55 MediaSessionUmaHelper* uma_helper = new MediaSessionUmaHelper();
56 delete uma_helper;
57 }
58
59 {
60 scoped_ptr<base::HistogramSamples> samples(
61 GetHistogramSamplesSinceTestStart("Media.Session.Suspended"));
62 EXPECT_EQ(0, samples->TotalCount());
63 }
64
65 {
66 scoped_ptr<base::HistogramSamples> samples(
67 GetHistogramSamplesSinceTestStart("Media.Session.ActiveTime"));
68 EXPECT_EQ(0, samples->TotalCount());
69 }
70 }
71
72 TEST_F(MediaSessionUmaHelperTest, SuspendRegisterImmediately) {
73 media_session_uma_helper().RecordSessionSuspended(
74 MediaSessionSuspendedSource::SystemTransient);
75
76 scoped_ptr<base::HistogramSamples> samples(
77 GetHistogramSamplesSinceTestStart("Media.Session.Suspended"));
78 EXPECT_EQ(1, samples->TotalCount());
79 EXPECT_EQ(1, samples->GetCount(0)); // System Transient
80 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent
81 EXPECT_EQ(0, samples->GetCount(2)); // UI
82 }
83
84 TEST_F(MediaSessionUmaHelperTest, MultipleSuspend) {
85 media_session_uma_helper().RecordSessionSuspended(
86 MediaSessionSuspendedSource::SystemTransient);
87 media_session_uma_helper().RecordSessionSuspended(
88 MediaSessionSuspendedSource::SystemPermanent);
89 media_session_uma_helper().RecordSessionSuspended(
90 MediaSessionSuspendedSource::UI);
91
92 scoped_ptr<base::HistogramSamples> samples(
93 GetHistogramSamplesSinceTestStart("Media.Session.Suspended"));
94 EXPECT_EQ(3, samples->TotalCount());
95 EXPECT_EQ(1, samples->GetCount(0)); // System Transient
96 EXPECT_EQ(1, samples->GetCount(1)); // System Permanent
97 EXPECT_EQ(1, samples->GetCount(2)); // UI
98 }
99
100 TEST_F(MediaSessionUmaHelperTest, MultipleSuspendSame) {
101 media_session_uma_helper().RecordSessionSuspended(
102 MediaSessionSuspendedSource::SystemPermanent);
103 media_session_uma_helper().RecordSessionSuspended(
104 MediaSessionSuspendedSource::SystemTransient);
105 media_session_uma_helper().RecordSessionSuspended(
106 MediaSessionSuspendedSource::UI);
107 media_session_uma_helper().RecordSessionSuspended(
108 MediaSessionSuspendedSource::SystemTransient);
109 media_session_uma_helper().RecordSessionSuspended(
110 MediaSessionSuspendedSource::SystemPermanent);
111 media_session_uma_helper().RecordSessionSuspended(
112 MediaSessionSuspendedSource::UI);
113
114 scoped_ptr<base::HistogramSamples> samples(
115 GetHistogramSamplesSinceTestStart("Media.Session.Suspended"));
116 EXPECT_EQ(6, samples->TotalCount());
117 EXPECT_EQ(2, samples->GetCount(0)); // System Transient
118 EXPECT_EQ(2, samples->GetCount(1)); // System Permanent
119 EXPECT_EQ(2, samples->GetCount(2)); // UI
120 }
121
122 TEST_F(MediaSessionUmaHelperTest, ActivationNotTerminatedDoesNotCommit) {
123 media_session_uma_helper().OnSessionActive();
124 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
125
126 scoped_ptr<base::HistogramSamples> samples(
127 GetHistogramSamplesSinceTestStart("Media.Session.ActiveTime"));
128 EXPECT_EQ(0, samples->TotalCount());
129 }
130
131 TEST_F(MediaSessionUmaHelperTest, SuspendActivationNotTerminatedDoesNotCommit) {
132 media_session_uma_helper().OnSessionActive();
133
134 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
135 media_session_uma_helper().OnSessionSuspended();
136
137 scoped_ptr<base::HistogramSamples> samples(
138 GetHistogramSamplesSinceTestStart("Media.Session.ActiveTime"));
139 EXPECT_EQ(0, samples->TotalCount());
140 }
141
142 TEST_F(MediaSessionUmaHelperTest, FullActivation) {
143 media_session_uma_helper().OnSessionActive();
144
145 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
146 media_session_uma_helper().OnSessionInactive();
147
148 scoped_ptr<base::HistogramSamples> samples(
149 GetHistogramSamplesSinceTestStart("Media.Session.ActiveTime"));
150 EXPECT_EQ(1, samples->TotalCount());
151 EXPECT_EQ(1, samples->GetCount(1000));
152 }
153
154 TEST_F(MediaSessionUmaHelperTest, ActivationCycleWithSuspend) {
155 media_session_uma_helper().OnSessionActive();
156
157 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
158 media_session_uma_helper().OnSessionSuspended();
159
160 clock()->Advance(base::TimeDelta::FromMilliseconds(2000));
161 media_session_uma_helper().OnSessionActive();
162
163 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
164 media_session_uma_helper().OnSessionInactive();
165
166 scoped_ptr<base::HistogramSamples> samples(
167 GetHistogramSamplesSinceTestStart("Media.Session.ActiveTime"));
168 EXPECT_EQ(1, samples->TotalCount());
169 EXPECT_EQ(1, samples->GetCount(2000));
170 }
171
172 TEST_F(MediaSessionUmaHelperTest, ActivationCycleWithMultipleSuspend) {
173 media_session_uma_helper().OnSessionActive();
174
175 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
176 media_session_uma_helper().OnSessionSuspended();
177
178 clock()->Advance(base::TimeDelta::FromMilliseconds(2000));
179 media_session_uma_helper().OnSessionActive();
180
181 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
182 media_session_uma_helper().OnSessionSuspended();
183
184 clock()->Advance(base::TimeDelta::FromMilliseconds(2000));
185 media_session_uma_helper().OnSessionActive();
186
187 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
188 media_session_uma_helper().OnSessionInactive();
189
190 scoped_ptr<base::HistogramSamples> samples(
191 GetHistogramSamplesSinceTestStart("Media.Session.ActiveTime"));
192 EXPECT_EQ(1, samples->TotalCount());
193 EXPECT_EQ(1, samples->GetCount(3000));
194 }
195
196 TEST_F(MediaSessionUmaHelperTest, MultipleActivations) {
197 media_session_uma_helper().OnSessionActive();
198
199 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
200 media_session_uma_helper().OnSessionSuspended();
201
202 clock()->Advance(base::TimeDelta::FromMilliseconds(2000));
203 media_session_uma_helper().OnSessionActive();
204
205 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
206 media_session_uma_helper().OnSessionInactive();
207
208 media_session_uma_helper().OnSessionActive();
209
210 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
211 media_session_uma_helper().OnSessionSuspended();
212
213 clock()->Advance(base::TimeDelta::FromMilliseconds(2000));
214 media_session_uma_helper().OnSessionActive();
215
216 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
217 media_session_uma_helper().OnSessionSuspended();
218
219 clock()->Advance(base::TimeDelta::FromMilliseconds(2000));
220 media_session_uma_helper().OnSessionActive();
221
222 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
223 media_session_uma_helper().OnSessionInactive();
224
225 scoped_ptr<base::HistogramSamples> samples(
226 GetHistogramSamplesSinceTestStart("Media.Session.ActiveTime"));
227 EXPECT_EQ(2, samples->TotalCount());
228 EXPECT_EQ(1, samples->GetCount(2000));
229 EXPECT_EQ(1, samples->GetCount(3000));
230 }
231
232 TEST_F(MediaSessionUmaHelperTest, MultipleActivationCalls) {
233 media_session_uma_helper().OnSessionActive();
234
235 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
236 media_session_uma_helper().OnSessionActive();
237
238 clock()->Advance(base::TimeDelta::FromMilliseconds(2000));
239 media_session_uma_helper().OnSessionActive();
240
241 clock()->Advance(base::TimeDelta::FromMilliseconds(500));
242 media_session_uma_helper().OnSessionInactive();
243
244 // Calling OnSessionActive() multiple times reset the start time of the
245 // session.
246 scoped_ptr<base::HistogramSamples> samples(
247 GetHistogramSamplesSinceTestStart("Media.Session.ActiveTime"));
248 EXPECT_EQ(1, samples->TotalCount());
249 EXPECT_EQ(1, samples->GetCount(500));
250 }
251
252 TEST_F(MediaSessionUmaHelperTest, MultipleSuspendCalls_WhileSuspended) {
253 media_session_uma_helper().OnSessionActive();
254
255 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
256 media_session_uma_helper().OnSessionSuspended();
257
258 clock()->Advance(base::TimeDelta::FromMilliseconds(2000));
259 media_session_uma_helper().OnSessionSuspended();
260
261 clock()->Advance(base::TimeDelta::FromMilliseconds(500));
262 media_session_uma_helper().OnSessionSuspended();
263
264 media_session_uma_helper().OnSessionInactive();
265
266 // If the session is already suspended, OnSessionSuspended() calls are
267 // ignored.
268 scoped_ptr<base::HistogramSamples> samples(
269 GetHistogramSamplesSinceTestStart("Media.Session.ActiveTime"));
270 EXPECT_EQ(1, samples->TotalCount());
271 EXPECT_EQ(1, samples->GetCount(1000));
272 }
273
274 TEST_F(MediaSessionUmaHelperTest, MultipleSuspendCalls_WhileInactive) {
275 media_session_uma_helper().OnSessionActive();
276
277 clock()->Advance(base::TimeDelta::FromMilliseconds(1000));
278 media_session_uma_helper().OnSessionInactive();
279
280 clock()->Advance(base::TimeDelta::FromMilliseconds(2000));
281 media_session_uma_helper().OnSessionSuspended();
282
283 clock()->Advance(base::TimeDelta::FromMilliseconds(500));
284 media_session_uma_helper().OnSessionSuspended();
285
286 media_session_uma_helper().OnSessionInactive();
287
288 // If the session is already inactive, OnSessionSuspended() calls are
289 // ignored.
290 scoped_ptr<base::HistogramSamples> samples(
291 GetHistogramSamplesSinceTestStart("Media.Session.ActiveTime"));
292 EXPECT_EQ(1, samples->TotalCount());
293 EXPECT_EQ(1, samples->GetCount(1000));
294 }
295
296 TEST_F(MediaSessionUmaHelperTest, MultipleInactiveCalls) {
297 media_session_uma_helper().OnSessionActive();
298
299 clock()->Advance(base::TimeDelta::FromMilliseconds(3000));
300 media_session_uma_helper().OnSessionInactive();
301
302 clock()->Advance(base::TimeDelta::FromMilliseconds(2000));
303 media_session_uma_helper().OnSessionInactive();
304
305 clock()->Advance(base::TimeDelta::FromMilliseconds(500));
306 media_session_uma_helper().OnSessionInactive();
307
308 // If the session is already inactive, OnSessionInactive() calls are ignored.
309 scoped_ptr<base::HistogramSamples> samples(
310 GetHistogramSamplesSinceTestStart("Media.Session.ActiveTime"));
311 EXPECT_EQ(1, samples->TotalCount());
312 EXPECT_EQ(1, samples->GetCount(3000));
313 }
314
315 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698