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

Side by Side Diff: content/browser/media/session/media_session_browsertest.cc

Issue 2416853005: Fixing naming issues in MediaSession (Closed)
Patch Set: owners Created 4 years, 2 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 2015 The Chromium Authors. All rights reserved. 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 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/media/session/media_session.h" 5 #include "content/browser/media/session/media_session.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <list> 9 #include <list>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/metrics/histogram_samples.h" 13 #include "base/metrics/histogram_samples.h"
14 #include "base/test/histogram_tester.h" 14 #include "base/test/histogram_tester.h"
15 #include "base/test/simple_test_tick_clock.h" 15 #include "base/test/simple_test_tick_clock.h"
16 #include "content/browser/media/session/media_session_delegate.h" 16 #include "content/browser/media/session/audio_focus_delegate.h"
17 #include "content/browser/media/session/mock_media_session_observer.h" 17 #include "content/browser/media/session/mock_media_session_player_observer.h"
18 #include "content/public/browser/web_contents.h" 18 #include "content/public/browser/web_contents.h"
19 #include "content/public/browser/web_contents_observer.h" 19 #include "content/public/browser/web_contents_observer.h"
20 #include "content/public/test/content_browser_test.h" 20 #include "content/public/test/content_browser_test.h"
21 #include "content/shell/browser/shell.h" 21 #include "content/shell/browser/shell.h"
22 #include "media/base/media_content_type.h" 22 #include "media/base/media_content_type.h"
23 #include "testing/gmock/include/gmock/gmock.h" 23 #include "testing/gmock/include/gmock/gmock.h"
24 24
25 using content::WebContents; 25 using content::WebContents;
26 using content::WebContentsObserver; 26 using content::WebContentsObserver;
27 using content::MediaSession; 27 using content::MediaSession;
28 using content::MediaSessionDelegate; 28 using content::AudioFocusDelegate;
29 using content::MediaSessionObserver; 29 using content::MediaSessionPlayerObserver;
30 using content::MediaSessionUmaHelper; 30 using content::MediaSessionUmaHelper;
31 using content::MockMediaSessionObserver; 31 using content::MockMediaSessionPlayerObserver;
32 32
33 using ::testing::Expectation; 33 using ::testing::Expectation;
34 34
35 namespace { 35 namespace {
36 36
37 const double kDefaultVolumeMultiplier = 1.0; 37 const double kDefaultVolumeMultiplier = 1.0;
38 const double kDuckingVolumeMultiplier = 0.2; 38 const double kDuckingVolumeMultiplier = 0.2;
39 39
40 class MockMediaSessionDelegate : public MediaSessionDelegate { 40 class MockAudioFocusDelegate : public AudioFocusDelegate {
41 public: 41 public:
42 bool RequestAudioFocus(content::AudioFocusManager::AudioFocusType) override { 42 bool RequestAudioFocus(content::AudioFocusManager::AudioFocusType) override {
43 return true; 43 return true;
44 } 44 }
45 45
46 void AbandonAudioFocus() override { 46 void AbandonAudioFocus() override {
47 } 47 }
48 }; 48 };
49 49
50 class MockWebContentsObserver : public WebContentsObserver { 50 class MockWebContentsObserver : public WebContentsObserver {
(...skipping 11 matching lines...) Expand all
62 protected: 62 protected:
63 MediaSessionBrowserTest() = default; 63 MediaSessionBrowserTest() = default;
64 64
65 void SetUpOnMainThread() override { 65 void SetUpOnMainThread() override {
66 ContentBrowserTest::SetUpOnMainThread(); 66 ContentBrowserTest::SetUpOnMainThread();
67 67
68 mock_web_contents_observer_.reset( 68 mock_web_contents_observer_.reset(
69 new MockWebContentsObserver(shell()->web_contents())); 69 new MockWebContentsObserver(shell()->web_contents()));
70 media_session_ = MediaSession::Get(shell()->web_contents()); 70 media_session_ = MediaSession::Get(shell()->web_contents());
71 media_session_->SetDelegateForTests( 71 media_session_->SetDelegateForTests(
72 std::unique_ptr<MediaSessionDelegate>(new MockMediaSessionDelegate())); 72 std::unique_ptr<AudioFocusDelegate>(new MockAudioFocusDelegate()));
73 ASSERT_TRUE(media_session_); 73 ASSERT_TRUE(media_session_);
74 } 74 }
75 75
76 void TearDownOnMainThread() override { 76 void TearDownOnMainThread() override {
77 mock_web_contents_observer_.reset(); 77 mock_web_contents_observer_.reset();
78 78
79 media_session_->RemoveAllPlayersForTest(); 79 media_session_->RemoveAllPlayersForTest();
80 media_session_ = nullptr; 80 media_session_ = nullptr;
81 81
82 ContentBrowserTest::TearDownOnMainThread(); 82 ContentBrowserTest::TearDownOnMainThread();
83 } 83 }
84 84
85 void StartNewPlayer(MockMediaSessionObserver* media_session_observer, 85 void StartNewPlayer(
86 media::MediaContentType media_content_type) { 86 MockMediaSessionPlayerObserver* media_session_player_observer,
87 bool result = 87 media::MediaContentType media_content_type) {
88 AddPlayer(media_session_observer, 88 bool result = AddPlayer(media_session_player_observer,
89 media_session_observer->StartNewPlayer(), media_content_type); 89 media_session_player_observer->StartNewPlayer(),
90 media_content_type);
90 EXPECT_TRUE(result); 91 EXPECT_TRUE(result);
91 } 92 }
92 93
93 bool AddPlayer(MockMediaSessionObserver* media_session_observer, 94 bool AddPlayer(MockMediaSessionPlayerObserver* media_session_player_observer,
94 int player_id, 95 int player_id,
95 media::MediaContentType type) { 96 media::MediaContentType type) {
96 return media_session_->AddPlayer(media_session_observer, player_id, type); 97 return media_session_->AddPlayer(media_session_player_observer, player_id,
98 type);
97 } 99 }
98 100
99 void RemovePlayer(MockMediaSessionObserver* media_session_observer, 101 void RemovePlayer(
100 int player_id) { 102 MockMediaSessionPlayerObserver* media_session_player_observer,
101 media_session_->RemovePlayer(media_session_observer, player_id); 103 int player_id) {
104 media_session_->RemovePlayer(media_session_player_observer, player_id);
102 } 105 }
103 106
104 void RemovePlayers(MockMediaSessionObserver* media_session_observer) { 107 void RemovePlayers(
105 media_session_->RemovePlayers(media_session_observer); 108 MockMediaSessionPlayerObserver* media_session_player_observer) {
109 media_session_->RemovePlayers(media_session_player_observer);
106 } 110 }
107 111
108 void OnPlayerPaused(MockMediaSessionObserver* media_session_observer, 112 void OnPlayerPaused(
109 int player_id) { 113 MockMediaSessionPlayerObserver* media_session_player_observer,
110 media_session_->OnPlayerPaused(media_session_observer, player_id); 114 int player_id) {
115 media_session_->OnPlayerPaused(media_session_player_observer, player_id);
111 } 116 }
112 117
113 bool HasAudioFocus() { return media_session_->IsActiveForTest(); } 118 bool HasAudioFocus() { return media_session_->IsActiveForTest(); }
114 119
115 content::AudioFocusManager::AudioFocusType GetSessionAudioFocusType() { 120 content::AudioFocusManager::AudioFocusType GetSessionAudioFocusType() {
116 return media_session_->audio_focus_type(); 121 return media_session_->audio_focus_type();
117 } 122 }
118 123
119 bool IsControllable() { return media_session_->IsControllable(); } 124 bool IsControllable() { return media_session_->IsControllable(); }
120 125
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 166
162 protected: 167 protected:
163 MediaSession* media_session_; 168 MediaSession* media_session_;
164 std::unique_ptr<MockWebContentsObserver> mock_web_contents_observer_; 169 std::unique_ptr<MockWebContentsObserver> mock_web_contents_observer_;
165 170
166 DISALLOW_COPY_AND_ASSIGN(MediaSessionBrowserTest); 171 DISALLOW_COPY_AND_ASSIGN(MediaSessionBrowserTest);
167 }; 172 };
168 173
169 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 174 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
170 PlayersFromSameObserverDoNotStopEachOtherInSameSession) { 175 PlayersFromSameObserverDoNotStopEachOtherInSameSession) {
171 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 176 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
172 new MockMediaSessionObserver); 177 new MockMediaSessionPlayerObserver);
173 178
174 StartNewPlayer(media_session_observer.get(), 179 StartNewPlayer(media_session_player_observer.get(),
175 media::MediaContentType::Persistent); 180 media::MediaContentType::Persistent);
176 StartNewPlayer(media_session_observer.get(), 181 StartNewPlayer(media_session_player_observer.get(),
177 media::MediaContentType::Persistent); 182 media::MediaContentType::Persistent);
178 StartNewPlayer(media_session_observer.get(), 183 StartNewPlayer(media_session_player_observer.get(),
179 media::MediaContentType::Persistent); 184 media::MediaContentType::Persistent);
180 185
181 EXPECT_TRUE(media_session_observer->IsPlaying(0)); 186 EXPECT_TRUE(media_session_player_observer->IsPlaying(0));
182 EXPECT_TRUE(media_session_observer->IsPlaying(1)); 187 EXPECT_TRUE(media_session_player_observer->IsPlaying(1));
183 EXPECT_TRUE(media_session_observer->IsPlaying(2)); 188 EXPECT_TRUE(media_session_player_observer->IsPlaying(2));
184 } 189 }
185 190
186 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 191 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
187 PlayersFromManyObserverDoNotStopEachOtherInSameSession) { 192 PlayersFromManyObserverDoNotStopEachOtherInSameSession) {
188 std::unique_ptr<MockMediaSessionObserver> media_session_observer_1( 193 std::unique_ptr<MockMediaSessionPlayerObserver>
189 new MockMediaSessionObserver); 194 media_session_player_observer_1(new MockMediaSessionPlayerObserver);
190 std::unique_ptr<MockMediaSessionObserver> media_session_observer_2( 195 std::unique_ptr<MockMediaSessionPlayerObserver>
191 new MockMediaSessionObserver); 196 media_session_player_observer_2(new MockMediaSessionPlayerObserver);
192 std::unique_ptr<MockMediaSessionObserver> media_session_observer_3( 197 std::unique_ptr<MockMediaSessionPlayerObserver>
193 new MockMediaSessionObserver); 198 media_session_player_observer_3(new MockMediaSessionPlayerObserver);
194 199
195 StartNewPlayer(media_session_observer_1.get(), 200 StartNewPlayer(media_session_player_observer_1.get(),
196 media::MediaContentType::Persistent); 201 media::MediaContentType::Persistent);
197 StartNewPlayer(media_session_observer_2.get(), 202 StartNewPlayer(media_session_player_observer_2.get(),
198 media::MediaContentType::Persistent); 203 media::MediaContentType::Persistent);
199 StartNewPlayer(media_session_observer_3.get(), 204 StartNewPlayer(media_session_player_observer_3.get(),
200 media::MediaContentType::Persistent); 205 media::MediaContentType::Persistent);
201 206
202 EXPECT_TRUE(media_session_observer_1->IsPlaying(0)); 207 EXPECT_TRUE(media_session_player_observer_1->IsPlaying(0));
203 EXPECT_TRUE(media_session_observer_2->IsPlaying(0)); 208 EXPECT_TRUE(media_session_player_observer_2->IsPlaying(0));
204 EXPECT_TRUE(media_session_observer_3->IsPlaying(0)); 209 EXPECT_TRUE(media_session_player_observer_3->IsPlaying(0));
205 } 210 }
206 211
207 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 212 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
208 SuspendedMediaSessionStopsPlayers) { 213 SuspendedMediaSessionStopsPlayers) {
209 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 214 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
210 new MockMediaSessionObserver); 215 new MockMediaSessionPlayerObserver);
211 216
212 StartNewPlayer(media_session_observer.get(), 217 StartNewPlayer(media_session_player_observer.get(),
213 media::MediaContentType::Persistent); 218 media::MediaContentType::Persistent);
214 StartNewPlayer(media_session_observer.get(), 219 StartNewPlayer(media_session_player_observer.get(),
215 media::MediaContentType::Persistent); 220 media::MediaContentType::Persistent);
216 StartNewPlayer(media_session_observer.get(), 221 StartNewPlayer(media_session_player_observer.get(),
217 media::MediaContentType::Persistent); 222 media::MediaContentType::Persistent);
218 223
219 SystemSuspend(true); 224 SystemSuspend(true);
220 225
221 EXPECT_FALSE(media_session_observer->IsPlaying(0)); 226 EXPECT_FALSE(media_session_player_observer->IsPlaying(0));
222 EXPECT_FALSE(media_session_observer->IsPlaying(1)); 227 EXPECT_FALSE(media_session_player_observer->IsPlaying(1));
223 EXPECT_FALSE(media_session_observer->IsPlaying(2)); 228 EXPECT_FALSE(media_session_player_observer->IsPlaying(2));
224 } 229 }
225 230
226 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 231 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
227 ResumedMediaSessionRestartsPlayers) { 232 ResumedMediaSessionRestartsPlayers) {
228 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 233 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
229 new MockMediaSessionObserver); 234 new MockMediaSessionPlayerObserver);
230 235
231 StartNewPlayer(media_session_observer.get(), 236 StartNewPlayer(media_session_player_observer.get(),
232 media::MediaContentType::Persistent); 237 media::MediaContentType::Persistent);
233 StartNewPlayer(media_session_observer.get(), 238 StartNewPlayer(media_session_player_observer.get(),
234 media::MediaContentType::Persistent); 239 media::MediaContentType::Persistent);
235 StartNewPlayer(media_session_observer.get(), 240 StartNewPlayer(media_session_player_observer.get(),
236 media::MediaContentType::Persistent); 241 media::MediaContentType::Persistent);
237 242
238 SystemSuspend(true); 243 SystemSuspend(true);
239 SystemResume(); 244 SystemResume();
240 245
241 EXPECT_TRUE(media_session_observer->IsPlaying(0)); 246 EXPECT_TRUE(media_session_player_observer->IsPlaying(0));
242 EXPECT_TRUE(media_session_observer->IsPlaying(1)); 247 EXPECT_TRUE(media_session_player_observer->IsPlaying(1));
243 EXPECT_TRUE(media_session_observer->IsPlaying(2)); 248 EXPECT_TRUE(media_session_player_observer->IsPlaying(2));
244 } 249 }
245 250
246 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 251 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
247 StartedPlayerOnSuspendedSessionPlaysAlone) { 252 StartedPlayerOnSuspendedSessionPlaysAlone) {
248 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 253 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
249 new MockMediaSessionObserver); 254 new MockMediaSessionPlayerObserver);
250 255
251 StartNewPlayer(media_session_observer.get(), 256 StartNewPlayer(media_session_player_observer.get(),
252 media::MediaContentType::Persistent); 257 media::MediaContentType::Persistent);
253 258
254 EXPECT_TRUE(media_session_observer->IsPlaying(0)); 259 EXPECT_TRUE(media_session_player_observer->IsPlaying(0));
255 260
256 SystemSuspend(true); 261 SystemSuspend(true);
257 262
258 EXPECT_FALSE(media_session_observer->IsPlaying(0)); 263 EXPECT_FALSE(media_session_player_observer->IsPlaying(0));
259 264
260 StartNewPlayer(media_session_observer.get(), 265 StartNewPlayer(media_session_player_observer.get(),
261 media::MediaContentType::Persistent); 266 media::MediaContentType::Persistent);
262 267
263 EXPECT_FALSE(media_session_observer->IsPlaying(0)); 268 EXPECT_FALSE(media_session_player_observer->IsPlaying(0));
264 EXPECT_TRUE(media_session_observer->IsPlaying(1)); 269 EXPECT_TRUE(media_session_player_observer->IsPlaying(1));
265 270
266 StartNewPlayer(media_session_observer.get(), 271 StartNewPlayer(media_session_player_observer.get(),
267 media::MediaContentType::Persistent); 272 media::MediaContentType::Persistent);
268 273
269 EXPECT_FALSE(media_session_observer->IsPlaying(0)); 274 EXPECT_FALSE(media_session_player_observer->IsPlaying(0));
270 EXPECT_TRUE(media_session_observer->IsPlaying(1)); 275 EXPECT_TRUE(media_session_player_observer->IsPlaying(1));
271 EXPECT_TRUE(media_session_observer->IsPlaying(2)); 276 EXPECT_TRUE(media_session_player_observer->IsPlaying(2));
272 } 277 }
273 278
274 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 279 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
275 InitialVolumeMultiplier) { 280 InitialVolumeMultiplier) {
276 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 281 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
277 new MockMediaSessionObserver); 282 new MockMediaSessionPlayerObserver);
278 283
279 StartNewPlayer(media_session_observer.get(), 284 StartNewPlayer(media_session_player_observer.get(),
280 media::MediaContentType::Persistent); 285 media::MediaContentType::Persistent);
281 StartNewPlayer(media_session_observer.get(), 286 StartNewPlayer(media_session_player_observer.get(),
282 media::MediaContentType::Persistent); 287 media::MediaContentType::Persistent);
283 288
284 EXPECT_EQ(kDefaultVolumeMultiplier, 289 EXPECT_EQ(kDefaultVolumeMultiplier,
285 media_session_observer->GetVolumeMultiplier(0)); 290 media_session_player_observer->GetVolumeMultiplier(0));
286 EXPECT_EQ(kDefaultVolumeMultiplier, 291 EXPECT_EQ(kDefaultVolumeMultiplier,
287 media_session_observer->GetVolumeMultiplier(1)); 292 media_session_player_observer->GetVolumeMultiplier(1));
288
289 } 293 }
290 294
291 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 295 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
292 StartDuckingReducesVolumeMultiplier) { 296 StartDuckingReducesVolumeMultiplier) {
293 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 297 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
294 new MockMediaSessionObserver); 298 new MockMediaSessionPlayerObserver);
295 299
296 StartNewPlayer(media_session_observer.get(), 300 StartNewPlayer(media_session_player_observer.get(),
297 media::MediaContentType::Persistent); 301 media::MediaContentType::Persistent);
298 StartNewPlayer(media_session_observer.get(), 302 StartNewPlayer(media_session_player_observer.get(),
299 media::MediaContentType::Persistent); 303 media::MediaContentType::Persistent);
300 SystemStartDucking(); 304 SystemStartDucking();
301 305
302 EXPECT_EQ(kDuckingVolumeMultiplier, 306 EXPECT_EQ(kDuckingVolumeMultiplier,
303 media_session_observer->GetVolumeMultiplier(0)); 307 media_session_player_observer->GetVolumeMultiplier(0));
304 EXPECT_EQ(kDuckingVolumeMultiplier, 308 EXPECT_EQ(kDuckingVolumeMultiplier,
305 media_session_observer->GetVolumeMultiplier(1)); 309 media_session_player_observer->GetVolumeMultiplier(1));
306 310
307 StartNewPlayer(media_session_observer.get(), 311 StartNewPlayer(media_session_player_observer.get(),
308 media::MediaContentType::Persistent); 312 media::MediaContentType::Persistent);
309 313
310 EXPECT_EQ(kDuckingVolumeMultiplier, 314 EXPECT_EQ(kDuckingVolumeMultiplier,
311 media_session_observer->GetVolumeMultiplier(2)); 315 media_session_player_observer->GetVolumeMultiplier(2));
312 } 316 }
313 317
314 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 318 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
315 StopDuckingRecoversVolumeMultiplier) { 319 StopDuckingRecoversVolumeMultiplier) {
316 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 320 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
317 new MockMediaSessionObserver); 321 new MockMediaSessionPlayerObserver);
318 322
319 StartNewPlayer(media_session_observer.get(), 323 StartNewPlayer(media_session_player_observer.get(),
320 media::MediaContentType::Persistent); 324 media::MediaContentType::Persistent);
321 StartNewPlayer(media_session_observer.get(), 325 StartNewPlayer(media_session_player_observer.get(),
322 media::MediaContentType::Persistent); 326 media::MediaContentType::Persistent);
323 SystemStartDucking(); 327 SystemStartDucking();
324 SystemStopDucking(); 328 SystemStopDucking();
325 329
326 EXPECT_EQ(kDefaultVolumeMultiplier, 330 EXPECT_EQ(kDefaultVolumeMultiplier,
327 media_session_observer->GetVolumeMultiplier(0)); 331 media_session_player_observer->GetVolumeMultiplier(0));
328 EXPECT_EQ(kDefaultVolumeMultiplier, 332 EXPECT_EQ(kDefaultVolumeMultiplier,
329 media_session_observer->GetVolumeMultiplier(1)); 333 media_session_player_observer->GetVolumeMultiplier(1));
330 334
331 StartNewPlayer(media_session_observer.get(), 335 StartNewPlayer(media_session_player_observer.get(),
332 media::MediaContentType::Persistent); 336 media::MediaContentType::Persistent);
333 337
334 EXPECT_EQ(kDefaultVolumeMultiplier, 338 EXPECT_EQ(kDefaultVolumeMultiplier,
335 media_session_observer->GetVolumeMultiplier(2)); 339 media_session_player_observer->GetVolumeMultiplier(2));
336 } 340 }
337 341
338 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, AudioFocusInitialState) { 342 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, AudioFocusInitialState) {
339 EXPECT_FALSE(HasAudioFocus()); 343 EXPECT_FALSE(HasAudioFocus());
340 } 344 }
341 345
342 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, StartPlayerGivesFocus) { 346 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, StartPlayerGivesFocus) {
343 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 347 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
344 new MockMediaSessionObserver); 348 new MockMediaSessionPlayerObserver);
345 349
346 StartNewPlayer(media_session_observer.get(), 350 StartNewPlayer(media_session_player_observer.get(),
347 media::MediaContentType::Persistent); 351 media::MediaContentType::Persistent);
348 352
349 EXPECT_TRUE(HasAudioFocus()); 353 EXPECT_TRUE(HasAudioFocus());
350 } 354 }
351 355
352 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, SuspendGivesAwayAudioFocus) { 356 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, SuspendGivesAwayAudioFocus) {
353 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 357 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
354 new MockMediaSessionObserver); 358 new MockMediaSessionPlayerObserver);
355 359
356 StartNewPlayer(media_session_observer.get(), 360 StartNewPlayer(media_session_player_observer.get(),
357 media::MediaContentType::Persistent); 361 media::MediaContentType::Persistent);
358 362
359 SystemSuspend(true); 363 SystemSuspend(true);
360 364
361 EXPECT_FALSE(HasAudioFocus()); 365 EXPECT_FALSE(HasAudioFocus());
362 } 366 }
363 367
364 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, StopGivesAwayAudioFocus) { 368 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, StopGivesAwayAudioFocus) {
365 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 369 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
366 new MockMediaSessionObserver); 370 new MockMediaSessionPlayerObserver);
367 371
368 StartNewPlayer(media_session_observer.get(), 372 StartNewPlayer(media_session_player_observer.get(),
369 media::MediaContentType::Persistent); 373 media::MediaContentType::Persistent);
370 374
371 media_session_->Stop(MediaSession::SuspendType::UI); 375 media_session_->Stop(MediaSession::SuspendType::UI);
372 376
373 EXPECT_FALSE(HasAudioFocus()); 377 EXPECT_FALSE(HasAudioFocus());
374 } 378 }
375 379
376 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumeGivesBackAudioFocus) { 380 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumeGivesBackAudioFocus) {
377 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 381 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
378 new MockMediaSessionObserver); 382 new MockMediaSessionPlayerObserver);
379 383
380 StartNewPlayer(media_session_observer.get(), 384 StartNewPlayer(media_session_player_observer.get(),
381 media::MediaContentType::Persistent); 385 media::MediaContentType::Persistent);
382 386
383 SystemSuspend(true); 387 SystemSuspend(true);
384 SystemResume(); 388 SystemResume();
385 389
386 EXPECT_TRUE(HasAudioFocus()); 390 EXPECT_TRUE(HasAudioFocus());
387 } 391 }
388 392
389 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 393 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
390 RemovingLastPlayerDropsAudioFocus) { 394 RemovingLastPlayerDropsAudioFocus) {
391 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 395 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
392 new MockMediaSessionObserver); 396 new MockMediaSessionPlayerObserver);
393 397
394 StartNewPlayer(media_session_observer.get(), 398 StartNewPlayer(media_session_player_observer.get(),
395 media::MediaContentType::Persistent); 399 media::MediaContentType::Persistent);
396 StartNewPlayer(media_session_observer.get(), 400 StartNewPlayer(media_session_player_observer.get(),
397 media::MediaContentType::Persistent); 401 media::MediaContentType::Persistent);
398 StartNewPlayer(media_session_observer.get(), 402 StartNewPlayer(media_session_player_observer.get(),
399 media::MediaContentType::Persistent); 403 media::MediaContentType::Persistent);
400 404
401 RemovePlayer(media_session_observer.get(), 0); 405 RemovePlayer(media_session_player_observer.get(), 0);
402 EXPECT_TRUE(HasAudioFocus()); 406 EXPECT_TRUE(HasAudioFocus());
403 RemovePlayer(media_session_observer.get(), 1); 407 RemovePlayer(media_session_player_observer.get(), 1);
404 EXPECT_TRUE(HasAudioFocus()); 408 EXPECT_TRUE(HasAudioFocus());
405 RemovePlayer(media_session_observer.get(), 2); 409 RemovePlayer(media_session_player_observer.get(), 2);
406 EXPECT_FALSE(HasAudioFocus()); 410 EXPECT_FALSE(HasAudioFocus());
407 } 411 }
408 412
409 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 413 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
410 RemovingLastPlayerFromManyObserversDropsAudioFocus) { 414 RemovingLastPlayerFromManyObserversDropsAudioFocus) {
411 std::unique_ptr<MockMediaSessionObserver> media_session_observer_1( 415 std::unique_ptr<MockMediaSessionPlayerObserver>
412 new MockMediaSessionObserver); 416 media_session_player_observer_1(new MockMediaSessionPlayerObserver);
413 std::unique_ptr<MockMediaSessionObserver> media_session_observer_2( 417 std::unique_ptr<MockMediaSessionPlayerObserver>
414 new MockMediaSessionObserver); 418 media_session_player_observer_2(new MockMediaSessionPlayerObserver);
415 std::unique_ptr<MockMediaSessionObserver> media_session_observer_3( 419 std::unique_ptr<MockMediaSessionPlayerObserver>
416 new MockMediaSessionObserver); 420 media_session_player_observer_3(new MockMediaSessionPlayerObserver);
417 421
418 StartNewPlayer(media_session_observer_1.get(), 422 StartNewPlayer(media_session_player_observer_1.get(),
419 media::MediaContentType::Persistent); 423 media::MediaContentType::Persistent);
420 StartNewPlayer(media_session_observer_2.get(), 424 StartNewPlayer(media_session_player_observer_2.get(),
421 media::MediaContentType::Persistent); 425 media::MediaContentType::Persistent);
422 StartNewPlayer(media_session_observer_3.get(), 426 StartNewPlayer(media_session_player_observer_3.get(),
423 media::MediaContentType::Persistent); 427 media::MediaContentType::Persistent);
424 428
425 RemovePlayer(media_session_observer_1.get(), 0); 429 RemovePlayer(media_session_player_observer_1.get(), 0);
426 EXPECT_TRUE(HasAudioFocus()); 430 EXPECT_TRUE(HasAudioFocus());
427 RemovePlayer(media_session_observer_2.get(), 0); 431 RemovePlayer(media_session_player_observer_2.get(), 0);
428 EXPECT_TRUE(HasAudioFocus()); 432 EXPECT_TRUE(HasAudioFocus());
429 RemovePlayer(media_session_observer_3.get(), 0); 433 RemovePlayer(media_session_player_observer_3.get(), 0);
430 EXPECT_FALSE(HasAudioFocus()); 434 EXPECT_FALSE(HasAudioFocus());
431 } 435 }
432 436
433 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 437 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
434 RemovingAllPlayersFromObserversDropsAudioFocus) { 438 RemovingAllPlayersFromObserversDropsAudioFocus) {
435 std::unique_ptr<MockMediaSessionObserver> media_session_observer_1( 439 std::unique_ptr<MockMediaSessionPlayerObserver>
436 new MockMediaSessionObserver); 440 media_session_player_observer_1(new MockMediaSessionPlayerObserver);
437 std::unique_ptr<MockMediaSessionObserver> media_session_observer_2( 441 std::unique_ptr<MockMediaSessionPlayerObserver>
438 new MockMediaSessionObserver); 442 media_session_player_observer_2(new MockMediaSessionPlayerObserver);
439 443
440 StartNewPlayer(media_session_observer_1.get(), 444 StartNewPlayer(media_session_player_observer_1.get(),
441 media::MediaContentType::Persistent); 445 media::MediaContentType::Persistent);
442 StartNewPlayer(media_session_observer_1.get(), 446 StartNewPlayer(media_session_player_observer_1.get(),
443 media::MediaContentType::Persistent); 447 media::MediaContentType::Persistent);
444 StartNewPlayer(media_session_observer_2.get(), 448 StartNewPlayer(media_session_player_observer_2.get(),
445 media::MediaContentType::Persistent); 449 media::MediaContentType::Persistent);
446 StartNewPlayer(media_session_observer_2.get(), 450 StartNewPlayer(media_session_player_observer_2.get(),
447 media::MediaContentType::Persistent); 451 media::MediaContentType::Persistent);
448 452
449 RemovePlayers(media_session_observer_1.get()); 453 RemovePlayers(media_session_player_observer_1.get());
450 EXPECT_TRUE(HasAudioFocus()); 454 EXPECT_TRUE(HasAudioFocus());
451 RemovePlayers(media_session_observer_2.get()); 455 RemovePlayers(media_session_player_observer_2.get());
452 EXPECT_FALSE(HasAudioFocus()); 456 EXPECT_FALSE(HasAudioFocus());
453 } 457 }
454 458
455 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumePlayGivesAudioFocus) { 459 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumePlayGivesAudioFocus) {
456 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 460 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
457 new MockMediaSessionObserver); 461 new MockMediaSessionPlayerObserver);
458 462
459 StartNewPlayer(media_session_observer.get(), 463 StartNewPlayer(media_session_player_observer.get(),
460 media::MediaContentType::Persistent); 464 media::MediaContentType::Persistent);
461 465
462 RemovePlayer(media_session_observer.get(), 0); 466 RemovePlayer(media_session_player_observer.get(), 0);
463 EXPECT_FALSE(HasAudioFocus()); 467 EXPECT_FALSE(HasAudioFocus());
464 468
465 EXPECT_TRUE(AddPlayer(media_session_observer.get(), 0, 469 EXPECT_TRUE(AddPlayer(media_session_player_observer.get(), 0,
466 media::MediaContentType::Persistent)); 470 media::MediaContentType::Persistent));
467 EXPECT_TRUE(HasAudioFocus()); 471 EXPECT_TRUE(HasAudioFocus());
468 } 472 }
469 473
470 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 474 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
471 ResumeSuspendAreSentOnlyOncePerPlayers) { 475 ResumeSuspendAreSentOnlyOncePerPlayers) {
472 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 476 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
473 new MockMediaSessionObserver); 477 new MockMediaSessionPlayerObserver);
474 478
475 StartNewPlayer(media_session_observer.get(), 479 StartNewPlayer(media_session_player_observer.get(),
476 media::MediaContentType::Persistent); 480 media::MediaContentType::Persistent);
477 StartNewPlayer(media_session_observer.get(), 481 StartNewPlayer(media_session_player_observer.get(),
478 media::MediaContentType::Persistent); 482 media::MediaContentType::Persistent);
479 StartNewPlayer(media_session_observer.get(), 483 StartNewPlayer(media_session_player_observer.get(),
480 media::MediaContentType::Persistent); 484 media::MediaContentType::Persistent);
481 485
482 EXPECT_EQ(0, media_session_observer->received_suspend_calls()); 486 EXPECT_EQ(0, media_session_player_observer->received_suspend_calls());
483 EXPECT_EQ(0, media_session_observer->received_resume_calls()); 487 EXPECT_EQ(0, media_session_player_observer->received_resume_calls());
484 488
485 SystemSuspend(true); 489 SystemSuspend(true);
486 EXPECT_EQ(3, media_session_observer->received_suspend_calls()); 490 EXPECT_EQ(3, media_session_player_observer->received_suspend_calls());
487 491
488 SystemResume(); 492 SystemResume();
489 EXPECT_EQ(3, media_session_observer->received_resume_calls()); 493 EXPECT_EQ(3, media_session_player_observer->received_resume_calls());
490 } 494 }
491 495
492 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 496 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
493 ResumeSuspendAreSentOnlyOncePerPlayersAddedTwice) { 497 ResumeSuspendAreSentOnlyOncePerPlayersAddedTwice) {
494 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 498 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
495 new MockMediaSessionObserver); 499 new MockMediaSessionPlayerObserver);
496 500
497 StartNewPlayer(media_session_observer.get(), 501 StartNewPlayer(media_session_player_observer.get(),
498 media::MediaContentType::Persistent); 502 media::MediaContentType::Persistent);
499 StartNewPlayer(media_session_observer.get(), 503 StartNewPlayer(media_session_player_observer.get(),
500 media::MediaContentType::Persistent); 504 media::MediaContentType::Persistent);
501 StartNewPlayer(media_session_observer.get(), 505 StartNewPlayer(media_session_player_observer.get(),
502 media::MediaContentType::Persistent); 506 media::MediaContentType::Persistent);
503 507
504 // Adding the three players above again. 508 // Adding the three players above again.
505 EXPECT_TRUE(AddPlayer(media_session_observer.get(), 0, 509 EXPECT_TRUE(AddPlayer(media_session_player_observer.get(), 0,
506 media::MediaContentType::Persistent)); 510 media::MediaContentType::Persistent));
507 EXPECT_TRUE(AddPlayer(media_session_observer.get(), 1, 511 EXPECT_TRUE(AddPlayer(media_session_player_observer.get(), 1,
508 media::MediaContentType::Persistent)); 512 media::MediaContentType::Persistent));
509 EXPECT_TRUE(AddPlayer(media_session_observer.get(), 2, 513 EXPECT_TRUE(AddPlayer(media_session_player_observer.get(), 2,
510 media::MediaContentType::Persistent)); 514 media::MediaContentType::Persistent));
511 515
512 EXPECT_EQ(0, media_session_observer->received_suspend_calls()); 516 EXPECT_EQ(0, media_session_player_observer->received_suspend_calls());
513 EXPECT_EQ(0, media_session_observer->received_resume_calls()); 517 EXPECT_EQ(0, media_session_player_observer->received_resume_calls());
514 518
515 SystemSuspend(true); 519 SystemSuspend(true);
516 EXPECT_EQ(3, media_session_observer->received_suspend_calls()); 520 EXPECT_EQ(3, media_session_player_observer->received_suspend_calls());
517 521
518 SystemResume(); 522 SystemResume();
519 EXPECT_EQ(3, media_session_observer->received_resume_calls()); 523 EXPECT_EQ(3, media_session_player_observer->received_resume_calls());
520 } 524 }
521 525
522 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 526 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
523 RemovingTheSamePlayerTwiceIsANoop) { 527 RemovingTheSamePlayerTwiceIsANoop) {
524 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 528 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
525 new MockMediaSessionObserver); 529 new MockMediaSessionPlayerObserver);
526 530
527 StartNewPlayer(media_session_observer.get(), 531 StartNewPlayer(media_session_player_observer.get(),
528 media::MediaContentType::Persistent); 532 media::MediaContentType::Persistent);
529 533
530 RemovePlayer(media_session_observer.get(), 0); 534 RemovePlayer(media_session_player_observer.get(), 0);
531 RemovePlayer(media_session_observer.get(), 0); 535 RemovePlayer(media_session_player_observer.get(), 0);
532 } 536 }
533 537
534 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, AudioFocusType) { 538 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, AudioFocusType) {
535 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 539 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
536 new MockMediaSessionObserver); 540 new MockMediaSessionPlayerObserver);
537 541
538 // Starting a player with a given type should set the session to that type. 542 // Starting a player with a given type should set the session to that type.
539 StartNewPlayer(media_session_observer.get(), 543 StartNewPlayer(media_session_player_observer.get(),
540 media::MediaContentType::Transient); 544 media::MediaContentType::Transient);
541 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::GainTransientMayDuck, 545 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::GainTransientMayDuck,
542 GetSessionAudioFocusType()); 546 GetSessionAudioFocusType());
543 547
544 // Adding a player of the same type should have no effect on the type. 548 // Adding a player of the same type should have no effect on the type.
545 StartNewPlayer(media_session_observer.get(), 549 StartNewPlayer(media_session_player_observer.get(),
546 media::MediaContentType::Transient); 550 media::MediaContentType::Transient);
547 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::GainTransientMayDuck, 551 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::GainTransientMayDuck,
548 GetSessionAudioFocusType()); 552 GetSessionAudioFocusType());
549 553
550 // Adding a player of Content type should override the current type. 554 // Adding a player of Content type should override the current type.
551 StartNewPlayer(media_session_observer.get(), 555 StartNewPlayer(media_session_player_observer.get(),
552 media::MediaContentType::Persistent); 556 media::MediaContentType::Persistent);
553 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::Gain, 557 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::Gain,
554 GetSessionAudioFocusType()); 558 GetSessionAudioFocusType());
555 559
556 // Adding a player of the Transient type should have no effect on the type. 560 // Adding a player of the Transient type should have no effect on the type.
557 StartNewPlayer(media_session_observer.get(), 561 StartNewPlayer(media_session_player_observer.get(),
558 media::MediaContentType::Transient); 562 media::MediaContentType::Transient);
559 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::Gain, 563 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::Gain,
560 GetSessionAudioFocusType()); 564 GetSessionAudioFocusType());
561 565
562 EXPECT_TRUE(media_session_observer->IsPlaying(0)); 566 EXPECT_TRUE(media_session_player_observer->IsPlaying(0));
563 EXPECT_TRUE(media_session_observer->IsPlaying(1)); 567 EXPECT_TRUE(media_session_player_observer->IsPlaying(1));
564 EXPECT_TRUE(media_session_observer->IsPlaying(2)); 568 EXPECT_TRUE(media_session_player_observer->IsPlaying(2));
565 EXPECT_TRUE(media_session_observer->IsPlaying(3)); 569 EXPECT_TRUE(media_session_player_observer->IsPlaying(3));
566 570
567 SystemSuspend(true); 571 SystemSuspend(true);
568 572
569 EXPECT_FALSE(media_session_observer->IsPlaying(0)); 573 EXPECT_FALSE(media_session_player_observer->IsPlaying(0));
570 EXPECT_FALSE(media_session_observer->IsPlaying(1)); 574 EXPECT_FALSE(media_session_player_observer->IsPlaying(1));
571 EXPECT_FALSE(media_session_observer->IsPlaying(2)); 575 EXPECT_FALSE(media_session_player_observer->IsPlaying(2));
572 EXPECT_FALSE(media_session_observer->IsPlaying(3)); 576 EXPECT_FALSE(media_session_player_observer->IsPlaying(3));
573 577
574 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::Gain, 578 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::Gain,
575 GetSessionAudioFocusType()); 579 GetSessionAudioFocusType());
576 580
577 SystemResume(); 581 SystemResume();
578 582
579 EXPECT_TRUE(media_session_observer->IsPlaying(0)); 583 EXPECT_TRUE(media_session_player_observer->IsPlaying(0));
580 EXPECT_TRUE(media_session_observer->IsPlaying(1)); 584 EXPECT_TRUE(media_session_player_observer->IsPlaying(1));
581 EXPECT_TRUE(media_session_observer->IsPlaying(2)); 585 EXPECT_TRUE(media_session_player_observer->IsPlaying(2));
582 EXPECT_TRUE(media_session_observer->IsPlaying(3)); 586 EXPECT_TRUE(media_session_player_observer->IsPlaying(3));
583 587
584 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::Gain, 588 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::Gain,
585 GetSessionAudioFocusType()); 589 GetSessionAudioFocusType());
586 } 590 }
587 591
588 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShowForContent) { 592 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShowForContent) {
589 EXPECT_CALL(*mock_web_contents_observer(), 593 EXPECT_CALL(*mock_web_contents_observer(),
590 MediaSessionStateChanged(true, false)); 594 MediaSessionStateChanged(true, false));
591 595
592 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 596 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
593 new MockMediaSessionObserver); 597 new MockMediaSessionPlayerObserver);
594 598
595 // Starting a player with a content type should show the media controls. 599 // Starting a player with a content type should show the media controls.
596 StartNewPlayer(media_session_observer.get(), 600 StartNewPlayer(media_session_player_observer.get(),
597 media::MediaContentType::Persistent); 601 media::MediaContentType::Persistent);
598 602
599 EXPECT_TRUE(IsControllable()); 603 EXPECT_TRUE(IsControllable());
600 EXPECT_FALSE(IsSuspended()); 604 EXPECT_FALSE(IsSuspended());
601 } 605 }
602 606
603 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsNoShowForTransient) { 607 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsNoShowForTransient) {
604 EXPECT_CALL(*mock_web_contents_observer(), 608 EXPECT_CALL(*mock_web_contents_observer(),
605 MediaSessionStateChanged(false, false)); 609 MediaSessionStateChanged(false, false));
606 610
607 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 611 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
608 new MockMediaSessionObserver); 612 new MockMediaSessionPlayerObserver);
609 613
610 // Starting a player with a transient type should not show the media controls. 614 // Starting a player with a transient type should not show the media controls.
611 StartNewPlayer(media_session_observer.get(), 615 StartNewPlayer(media_session_player_observer.get(),
612 media::MediaContentType::Transient); 616 media::MediaContentType::Transient);
613 617
614 EXPECT_FALSE(IsControllable()); 618 EXPECT_FALSE(IsControllable());
615 EXPECT_FALSE(IsSuspended()); 619 EXPECT_FALSE(IsSuspended());
616 } 620 }
617 621
618 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsHideWhenStopped) { 622 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsHideWhenStopped) {
619 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), 623 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
620 MediaSessionStateChanged(true, false)); 624 MediaSessionStateChanged(true, false));
621 EXPECT_CALL(*mock_web_contents_observer(), 625 EXPECT_CALL(*mock_web_contents_observer(),
622 MediaSessionStateChanged(false, true)) 626 MediaSessionStateChanged(false, true))
623 .After(showControls); 627 .After(showControls);
624 628
625 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 629 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
626 new MockMediaSessionObserver); 630 new MockMediaSessionPlayerObserver);
627 631
628 StartNewPlayer(media_session_observer.get(), 632 StartNewPlayer(media_session_player_observer.get(),
629 media::MediaContentType::Persistent); 633 media::MediaContentType::Persistent);
630 634
631 RemovePlayers(media_session_observer.get()); 635 RemovePlayers(media_session_player_observer.get());
632 636
633 EXPECT_FALSE(IsControllable()); 637 EXPECT_FALSE(IsControllable());
634 EXPECT_TRUE(IsSuspended()); 638 EXPECT_TRUE(IsSuspended());
635 } 639 }
636 640
637 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShownAcceptTransient) { 641 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShownAcceptTransient) {
638 EXPECT_CALL(*mock_web_contents_observer(), 642 EXPECT_CALL(*mock_web_contents_observer(),
639 MediaSessionStateChanged(true, false)); 643 MediaSessionStateChanged(true, false));
640 644
641 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 645 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
642 new MockMediaSessionObserver); 646 new MockMediaSessionPlayerObserver);
643 647
644 StartNewPlayer(media_session_observer.get(), 648 StartNewPlayer(media_session_player_observer.get(),
645 media::MediaContentType::Persistent); 649 media::MediaContentType::Persistent);
646 650
647 // Transient player join the session without affecting the controls. 651 // Transient player join the session without affecting the controls.
648 StartNewPlayer(media_session_observer.get(), 652 StartNewPlayer(media_session_player_observer.get(),
649 media::MediaContentType::Transient); 653 media::MediaContentType::Transient);
650 654
651 EXPECT_TRUE(IsControllable()); 655 EXPECT_TRUE(IsControllable());
652 EXPECT_FALSE(IsSuspended()); 656 EXPECT_FALSE(IsSuspended());
653 } 657 }
654 658
655 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 659 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
656 ControlsShownAfterContentAdded) { 660 ControlsShownAfterContentAdded) {
657 Expectation dontShowControls = EXPECT_CALL( 661 Expectation dontShowControls = EXPECT_CALL(
658 *mock_web_contents_observer(), MediaSessionStateChanged(false, false)); 662 *mock_web_contents_observer(), MediaSessionStateChanged(false, false));
659 EXPECT_CALL(*mock_web_contents_observer(), 663 EXPECT_CALL(*mock_web_contents_observer(),
660 MediaSessionStateChanged(true, false)) 664 MediaSessionStateChanged(true, false))
661 .After(dontShowControls); 665 .After(dontShowControls);
662 666
663 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 667 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
664 new MockMediaSessionObserver); 668 new MockMediaSessionPlayerObserver);
665 669
666 StartNewPlayer(media_session_observer.get(), 670 StartNewPlayer(media_session_player_observer.get(),
667 media::MediaContentType::Transient); 671 media::MediaContentType::Transient);
668 672
669 // The controls are shown when the content player is added. 673 // The controls are shown when the content player is added.
670 StartNewPlayer(media_session_observer.get(), 674 StartNewPlayer(media_session_player_observer.get(),
671 media::MediaContentType::Persistent); 675 media::MediaContentType::Persistent);
672 676
673 EXPECT_TRUE(IsControllable()); 677 EXPECT_TRUE(IsControllable());
674 EXPECT_FALSE(IsSuspended()); 678 EXPECT_FALSE(IsSuspended());
675 } 679 }
676 680
677 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 681 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
678 ControlsStayIfOnlyOnePlayerHasBeenPaused) { 682 ControlsStayIfOnlyOnePlayerHasBeenPaused) {
679 EXPECT_CALL(*mock_web_contents_observer(), 683 EXPECT_CALL(*mock_web_contents_observer(),
680 MediaSessionStateChanged(true, false)); 684 MediaSessionStateChanged(true, false));
681 685
682 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 686 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
683 new MockMediaSessionObserver); 687 new MockMediaSessionPlayerObserver);
684 688
685 StartNewPlayer(media_session_observer.get(), 689 StartNewPlayer(media_session_player_observer.get(),
686 media::MediaContentType::Persistent); 690 media::MediaContentType::Persistent);
687 StartNewPlayer(media_session_observer.get(), 691 StartNewPlayer(media_session_player_observer.get(),
688 media::MediaContentType::Transient); 692 media::MediaContentType::Transient);
689 693
690 // Removing only content player doesn't hide the controls since the session 694 // Removing only content player doesn't hide the controls since the session
691 // is still active. 695 // is still active.
692 RemovePlayer(media_session_observer.get(), 0); 696 RemovePlayer(media_session_player_observer.get(), 0);
693 697
694 EXPECT_TRUE(IsControllable()); 698 EXPECT_TRUE(IsControllable());
695 EXPECT_FALSE(IsSuspended()); 699 EXPECT_FALSE(IsSuspended());
696 } 700 }
697 701
698 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 702 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
699 ControlsHideWhenTheLastPlayerIsRemoved) { 703 ControlsHideWhenTheLastPlayerIsRemoved) {
700 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), 704 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
701 MediaSessionStateChanged(true, false)); 705 MediaSessionStateChanged(true, false));
702 EXPECT_CALL(*mock_web_contents_observer(), 706 EXPECT_CALL(*mock_web_contents_observer(),
703 MediaSessionStateChanged(false, true)) 707 MediaSessionStateChanged(false, true))
704 .After(showControls); 708 .After(showControls);
705 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 709 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
706 new MockMediaSessionObserver); 710 new MockMediaSessionPlayerObserver);
707 711
708 StartNewPlayer(media_session_observer.get(), 712 StartNewPlayer(media_session_player_observer.get(),
709 media::MediaContentType::Persistent); 713 media::MediaContentType::Persistent);
710 StartNewPlayer(media_session_observer.get(), 714 StartNewPlayer(media_session_player_observer.get(),
711 media::MediaContentType::Persistent); 715 media::MediaContentType::Persistent);
712 716
713 RemovePlayer(media_session_observer.get(), 0); 717 RemovePlayer(media_session_player_observer.get(), 0);
714 718
715 EXPECT_TRUE(IsControllable()); 719 EXPECT_TRUE(IsControllable());
716 EXPECT_FALSE(IsSuspended()); 720 EXPECT_FALSE(IsSuspended());
717 721
718 RemovePlayer(media_session_observer.get(), 1); 722 RemovePlayer(media_session_player_observer.get(), 1);
719 723
720 EXPECT_FALSE(IsControllable()); 724 EXPECT_FALSE(IsControllable());
721 EXPECT_TRUE(IsSuspended()); 725 EXPECT_TRUE(IsSuspended());
722 } 726 }
723 727
724 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 728 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
725 ControlsHideWhenAllThePlayersAreRemoved) { 729 ControlsHideWhenAllThePlayersAreRemoved) {
726 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), 730 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
727 MediaSessionStateChanged(true, false)); 731 MediaSessionStateChanged(true, false));
728 EXPECT_CALL(*mock_web_contents_observer(), 732 EXPECT_CALL(*mock_web_contents_observer(),
729 MediaSessionStateChanged(false, true)) 733 MediaSessionStateChanged(false, true))
730 .After(showControls); 734 .After(showControls);
731 735
732 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 736 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
733 new MockMediaSessionObserver); 737 new MockMediaSessionPlayerObserver);
734 738
735 StartNewPlayer(media_session_observer.get(), 739 StartNewPlayer(media_session_player_observer.get(),
736 media::MediaContentType::Persistent); 740 media::MediaContentType::Persistent);
737 StartNewPlayer(media_session_observer.get(), 741 StartNewPlayer(media_session_player_observer.get(),
738 media::MediaContentType::Persistent); 742 media::MediaContentType::Persistent);
739 743
740 RemovePlayers(media_session_observer.get()); 744 RemovePlayers(media_session_player_observer.get());
741 745
742 EXPECT_FALSE(IsControllable()); 746 EXPECT_FALSE(IsControllable());
743 EXPECT_TRUE(IsSuspended()); 747 EXPECT_TRUE(IsSuspended());
744 } 748 }
745 749
746 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 750 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
747 ControlsNotHideWhenTheLastPlayerIsPaused) { 751 ControlsNotHideWhenTheLastPlayerIsPaused) {
748 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), 752 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
749 MediaSessionStateChanged(true, false)); 753 MediaSessionStateChanged(true, false));
750 EXPECT_CALL(*mock_web_contents_observer(), 754 EXPECT_CALL(*mock_web_contents_observer(),
751 MediaSessionStateChanged(true, true)) 755 MediaSessionStateChanged(true, true))
752 .After(showControls); 756 .After(showControls);
753 757
754 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 758 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
755 new MockMediaSessionObserver); 759 new MockMediaSessionPlayerObserver);
756 760
757 StartNewPlayer(media_session_observer.get(), 761 StartNewPlayer(media_session_player_observer.get(),
758 media::MediaContentType::Persistent); 762 media::MediaContentType::Persistent);
759 StartNewPlayer(media_session_observer.get(), 763 StartNewPlayer(media_session_player_observer.get(),
760 media::MediaContentType::Persistent); 764 media::MediaContentType::Persistent);
761 765
762 OnPlayerPaused(media_session_observer.get(), 0); 766 OnPlayerPaused(media_session_player_observer.get(), 0);
763 767
764 EXPECT_TRUE(IsControllable()); 768 EXPECT_TRUE(IsControllable());
765 EXPECT_FALSE(IsSuspended()); 769 EXPECT_FALSE(IsSuspended());
766 770
767 OnPlayerPaused(media_session_observer.get(), 1); 771 OnPlayerPaused(media_session_player_observer.get(), 1);
768 772
769 EXPECT_TRUE(IsControllable()); 773 EXPECT_TRUE(IsControllable());
770 EXPECT_TRUE(IsSuspended()); 774 EXPECT_TRUE(IsSuspended());
771 } 775 }
772 776
773 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 777 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
774 SuspendTemporaryUpdatesControls) { 778 SuspendTemporaryUpdatesControls) {
775 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), 779 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
776 MediaSessionStateChanged(true, false)); 780 MediaSessionStateChanged(true, false));
777 EXPECT_CALL(*mock_web_contents_observer(), 781 EXPECT_CALL(*mock_web_contents_observer(),
778 MediaSessionStateChanged(true, true)) 782 MediaSessionStateChanged(true, true))
779 .After(showControls); 783 .After(showControls);
780 784
781 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 785 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
782 new MockMediaSessionObserver); 786 new MockMediaSessionPlayerObserver);
783 787
784 StartNewPlayer(media_session_observer.get(), 788 StartNewPlayer(media_session_player_observer.get(),
785 media::MediaContentType::Persistent); 789 media::MediaContentType::Persistent);
786 790
787 SystemSuspend(true); 791 SystemSuspend(true);
788 792
789 EXPECT_TRUE(IsControllable()); 793 EXPECT_TRUE(IsControllable());
790 EXPECT_TRUE(IsSuspended()); 794 EXPECT_TRUE(IsSuspended());
791 } 795 }
792 796
793 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsUpdatedWhenResumed) { 797 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsUpdatedWhenResumed) {
794 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), 798 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
795 MediaSessionStateChanged(true, false)); 799 MediaSessionStateChanged(true, false));
796 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), 800 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(),
797 MediaSessionStateChanged(true, true)) 801 MediaSessionStateChanged(true, true))
798 .After(showControls); 802 .After(showControls);
799 EXPECT_CALL(*mock_web_contents_observer(), 803 EXPECT_CALL(*mock_web_contents_observer(),
800 MediaSessionStateChanged(true, false)) 804 MediaSessionStateChanged(true, false))
801 .After(pauseControls); 805 .After(pauseControls);
802 806
803 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 807 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
804 new MockMediaSessionObserver); 808 new MockMediaSessionPlayerObserver);
805 809
806 StartNewPlayer(media_session_observer.get(), 810 StartNewPlayer(media_session_player_observer.get(),
807 media::MediaContentType::Persistent); 811 media::MediaContentType::Persistent);
808 SystemSuspend(true); 812 SystemSuspend(true);
809 SystemResume(); 813 SystemResume();
810 814
811 EXPECT_TRUE(IsControllable()); 815 EXPECT_TRUE(IsControllable());
812 EXPECT_FALSE(IsSuspended()); 816 EXPECT_FALSE(IsSuspended());
813 } 817 }
814 818
815 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 819 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
816 ControlsHideWhenSessionSuspendedPermanently) { 820 ControlsHideWhenSessionSuspendedPermanently) {
817 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), 821 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
818 MediaSessionStateChanged(true, false)); 822 MediaSessionStateChanged(true, false));
819 EXPECT_CALL(*mock_web_contents_observer(), 823 EXPECT_CALL(*mock_web_contents_observer(),
820 MediaSessionStateChanged(false, true)) 824 MediaSessionStateChanged(false, true))
821 .After(showControls); 825 .After(showControls);
822 826
823 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 827 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
824 new MockMediaSessionObserver); 828 new MockMediaSessionPlayerObserver);
825 829
826 StartNewPlayer(media_session_observer.get(), 830 StartNewPlayer(media_session_player_observer.get(),
827 media::MediaContentType::Persistent); 831 media::MediaContentType::Persistent);
828 832
829 SystemSuspend(false); 833 SystemSuspend(false);
830 834
831 EXPECT_FALSE(IsControllable()); 835 EXPECT_FALSE(IsControllable());
832 EXPECT_TRUE(IsSuspended()); 836 EXPECT_TRUE(IsSuspended());
833 } 837 }
834 838
835 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 839 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
836 ConstrolsHideWhenSessionStops) { 840 ConstrolsHideWhenSessionStops) {
837 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), 841 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
838 MediaSessionStateChanged(true, false)); 842 MediaSessionStateChanged(true, false));
839 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), 843 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(),
840 MediaSessionStateChanged(true, true)) 844 MediaSessionStateChanged(true, true))
841 .After(showControls); 845 .After(showControls);
842 EXPECT_CALL(*mock_web_contents_observer(), 846 EXPECT_CALL(*mock_web_contents_observer(),
843 MediaSessionStateChanged(false, true)) 847 MediaSessionStateChanged(false, true))
844 .After(pauseControls); 848 .After(pauseControls);
845 849
846 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 850 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
847 new MockMediaSessionObserver); 851 new MockMediaSessionPlayerObserver);
848 852
849 StartNewPlayer(media_session_observer.get(), 853 StartNewPlayer(media_session_player_observer.get(),
850 media::MediaContentType::Persistent); 854 media::MediaContentType::Persistent);
851 855
852 media_session_->Stop(MediaSession::SuspendType::UI); 856 media_session_->Stop(MediaSession::SuspendType::UI);
853 857
854 EXPECT_FALSE(IsControllable()); 858 EXPECT_FALSE(IsControllable());
855 EXPECT_TRUE(IsSuspended()); 859 EXPECT_TRUE(IsSuspended());
856 } 860 }
857 861
858 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 862 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
859 ControlsHideWhenSessionChangesFromContentToTransient) { 863 ControlsHideWhenSessionChangesFromContentToTransient) {
860 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), 864 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
861 MediaSessionStateChanged(true, false)); 865 MediaSessionStateChanged(true, false));
862 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), 866 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(),
863 MediaSessionStateChanged(true, true)) 867 MediaSessionStateChanged(true, true))
864 .After(showControls); 868 .After(showControls);
865 EXPECT_CALL(*mock_web_contents_observer(), 869 EXPECT_CALL(*mock_web_contents_observer(),
866 MediaSessionStateChanged(false, false)) 870 MediaSessionStateChanged(false, false))
867 .After(pauseControls); 871 .After(pauseControls);
868 872
869 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 873 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
870 new MockMediaSessionObserver); 874 new MockMediaSessionPlayerObserver);
871 875
872 StartNewPlayer(media_session_observer.get(), 876 StartNewPlayer(media_session_player_observer.get(),
873 media::MediaContentType::Persistent); 877 media::MediaContentType::Persistent);
874 SystemSuspend(true); 878 SystemSuspend(true);
875 879
876 // This should reset the session and change it to a transient, so 880 // This should reset the session and change it to a transient, so
877 // hide the controls. 881 // hide the controls.
878 StartNewPlayer(media_session_observer.get(), 882 StartNewPlayer(media_session_player_observer.get(),
879 media::MediaContentType::Transient); 883 media::MediaContentType::Transient);
880 884
881 EXPECT_FALSE(IsControllable()); 885 EXPECT_FALSE(IsControllable());
882 EXPECT_FALSE(IsSuspended()); 886 EXPECT_FALSE(IsSuspended());
883 } 887 }
884 888
885 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 889 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
886 ControlsUpdatedWhenNewPlayerResetsSession) { 890 ControlsUpdatedWhenNewPlayerResetsSession) {
887 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), 891 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
888 MediaSessionStateChanged(true, false)); 892 MediaSessionStateChanged(true, false));
889 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), 893 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(),
890 MediaSessionStateChanged(true, true)) 894 MediaSessionStateChanged(true, true))
891 .After(showControls); 895 .After(showControls);
892 EXPECT_CALL(*mock_web_contents_observer(), 896 EXPECT_CALL(*mock_web_contents_observer(),
893 MediaSessionStateChanged(true, false)) 897 MediaSessionStateChanged(true, false))
894 .After(pauseControls); 898 .After(pauseControls);
895 899
896 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 900 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
897 new MockMediaSessionObserver); 901 new MockMediaSessionPlayerObserver);
898 902
899 StartNewPlayer(media_session_observer.get(), 903 StartNewPlayer(media_session_player_observer.get(),
900 media::MediaContentType::Persistent); 904 media::MediaContentType::Persistent);
901 SystemSuspend(true); 905 SystemSuspend(true);
902 906
903 // This should reset the session and update the controls. 907 // This should reset the session and update the controls.
904 StartNewPlayer(media_session_observer.get(), 908 StartNewPlayer(media_session_player_observer.get(),
905 media::MediaContentType::Persistent); 909 media::MediaContentType::Persistent);
906 910
907 EXPECT_TRUE(IsControllable()); 911 EXPECT_TRUE(IsControllable());
908 EXPECT_FALSE(IsSuspended()); 912 EXPECT_FALSE(IsSuspended());
909 } 913 }
910 914
911 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 915 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
912 ControlsResumedWhenPlayerIsResumed) { 916 ControlsResumedWhenPlayerIsResumed) {
913 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), 917 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
914 MediaSessionStateChanged(true, false)); 918 MediaSessionStateChanged(true, false));
915 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), 919 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(),
916 MediaSessionStateChanged(true, true)) 920 MediaSessionStateChanged(true, true))
917 .After(showControls); 921 .After(showControls);
918 EXPECT_CALL(*mock_web_contents_observer(), 922 EXPECT_CALL(*mock_web_contents_observer(),
919 MediaSessionStateChanged(true, false)) 923 MediaSessionStateChanged(true, false))
920 .After(pauseControls); 924 .After(pauseControls);
921 925
922 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 926 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
923 new MockMediaSessionObserver); 927 new MockMediaSessionPlayerObserver);
924 928
925 StartNewPlayer(media_session_observer.get(), 929 StartNewPlayer(media_session_player_observer.get(),
926 media::MediaContentType::Persistent); 930 media::MediaContentType::Persistent);
927 SystemSuspend(true); 931 SystemSuspend(true);
928 932
929 // This should resume the session and update the controls. 933 // This should resume the session and update the controls.
930 AddPlayer(media_session_observer.get(), 0, 934 AddPlayer(media_session_player_observer.get(), 0,
931 media::MediaContentType::Persistent); 935 media::MediaContentType::Persistent);
932 936
933 EXPECT_TRUE(IsControllable()); 937 EXPECT_TRUE(IsControllable());
934 EXPECT_FALSE(IsSuspended()); 938 EXPECT_FALSE(IsSuspended());
935 } 939 }
936 940
937 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 941 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
938 ControlsUpdatedDueToResumeSessionAction) { 942 ControlsUpdatedDueToResumeSessionAction) {
939 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), 943 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
940 MediaSessionStateChanged(true, false)); 944 MediaSessionStateChanged(true, false));
941 EXPECT_CALL(*mock_web_contents_observer(), 945 EXPECT_CALL(*mock_web_contents_observer(),
942 MediaSessionStateChanged(true, true)) 946 MediaSessionStateChanged(true, true))
943 .After(showControls); 947 .After(showControls);
944 948
945 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 949 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
946 new MockMediaSessionObserver); 950 new MockMediaSessionPlayerObserver);
947 951
948 StartNewPlayer(media_session_observer.get(), 952 StartNewPlayer(media_session_player_observer.get(),
949 media::MediaContentType::Persistent); 953 media::MediaContentType::Persistent);
950 UISuspend(); 954 UISuspend();
951 955
952 EXPECT_TRUE(IsControllable()); 956 EXPECT_TRUE(IsControllable());
953 EXPECT_TRUE(IsSuspended()); 957 EXPECT_TRUE(IsSuspended());
954 } 958 }
955 959
956 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 960 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
957 ControlsUpdatedDueToSuspendSessionAction) { 961 ControlsUpdatedDueToSuspendSessionAction) {
958 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), 962 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
959 MediaSessionStateChanged(true, false)); 963 MediaSessionStateChanged(true, false));
960 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), 964 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(),
961 MediaSessionStateChanged(true, true)) 965 MediaSessionStateChanged(true, true))
962 .After(showControls); 966 .After(showControls);
963 EXPECT_CALL(*mock_web_contents_observer(), 967 EXPECT_CALL(*mock_web_contents_observer(),
964 MediaSessionStateChanged(true, false)) 968 MediaSessionStateChanged(true, false))
965 .After(pauseControls); 969 .After(pauseControls);
966 970
967 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 971 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
968 new MockMediaSessionObserver); 972 new MockMediaSessionPlayerObserver);
969 973
970 StartNewPlayer(media_session_observer.get(), 974 StartNewPlayer(media_session_player_observer.get(),
971 media::MediaContentType::Persistent); 975 media::MediaContentType::Persistent);
972 UISuspend(); 976 UISuspend();
973 UIResume(); 977 UIResume();
974 978
975 EXPECT_TRUE(IsControllable()); 979 EXPECT_TRUE(IsControllable());
976 EXPECT_FALSE(IsSuspended()); 980 EXPECT_FALSE(IsSuspended());
977 } 981 }
978 982
979 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 983 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
980 DontResumeBySystemUISuspendedSessions) { 984 DontResumeBySystemUISuspendedSessions) {
981 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 985 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
982 new MockMediaSessionObserver); 986 new MockMediaSessionPlayerObserver);
983 StartNewPlayer(media_session_observer.get(), 987 StartNewPlayer(media_session_player_observer.get(),
984 media::MediaContentType::Persistent); 988 media::MediaContentType::Persistent);
985 989
986 UISuspend(); 990 UISuspend();
987 EXPECT_TRUE(IsControllable()); 991 EXPECT_TRUE(IsControllable());
988 EXPECT_TRUE(IsSuspended()); 992 EXPECT_TRUE(IsSuspended());
989 993
990 SystemResume(); 994 SystemResume();
991 EXPECT_TRUE(IsControllable()); 995 EXPECT_TRUE(IsControllable());
992 EXPECT_TRUE(IsSuspended()); 996 EXPECT_TRUE(IsSuspended());
993 } 997 }
994 998
995 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 999 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
996 AllowUIResumeForSystemSuspend) { 1000 AllowUIResumeForSystemSuspend) {
997 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 1001 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
998 new MockMediaSessionObserver); 1002 new MockMediaSessionPlayerObserver);
999 StartNewPlayer(media_session_observer.get(), 1003 StartNewPlayer(media_session_player_observer.get(),
1000 media::MediaContentType::Persistent); 1004 media::MediaContentType::Persistent);
1001 1005
1002 SystemSuspend(true); 1006 SystemSuspend(true);
1003 EXPECT_TRUE(IsControllable()); 1007 EXPECT_TRUE(IsControllable());
1004 EXPECT_TRUE(IsSuspended()); 1008 EXPECT_TRUE(IsSuspended());
1005 1009
1006 UIResume(); 1010 UIResume();
1007 EXPECT_TRUE(IsControllable()); 1011 EXPECT_TRUE(IsControllable());
1008 EXPECT_FALSE(IsSuspended()); 1012 EXPECT_FALSE(IsSuspended());
1009 } 1013 }
1010 1014
1011 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumeSuspendFromUI) { 1015 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumeSuspendFromUI) {
1012 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 1016 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
1013 new MockMediaSessionObserver); 1017 new MockMediaSessionPlayerObserver);
1014 StartNewPlayer(media_session_observer.get(), 1018 StartNewPlayer(media_session_player_observer.get(),
1015 media::MediaContentType::Persistent); 1019 media::MediaContentType::Persistent);
1016 1020
1017 UISuspend(); 1021 UISuspend();
1018 EXPECT_TRUE(IsControllable()); 1022 EXPECT_TRUE(IsControllable());
1019 EXPECT_TRUE(IsSuspended()); 1023 EXPECT_TRUE(IsSuspended());
1020 1024
1021 UIResume(); 1025 UIResume();
1022 EXPECT_TRUE(IsControllable()); 1026 EXPECT_TRUE(IsControllable());
1023 EXPECT_FALSE(IsSuspended()); 1027 EXPECT_FALSE(IsSuspended());
1024 } 1028 }
1025 1029
1026 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumeSuspendFromSystem) { 1030 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumeSuspendFromSystem) {
1027 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 1031 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
1028 new MockMediaSessionObserver); 1032 new MockMediaSessionPlayerObserver);
1029 StartNewPlayer(media_session_observer.get(), 1033 StartNewPlayer(media_session_player_observer.get(),
1030 media::MediaContentType::Persistent); 1034 media::MediaContentType::Persistent);
1031 1035
1032 SystemSuspend(true); 1036 SystemSuspend(true);
1033 EXPECT_TRUE(IsControllable()); 1037 EXPECT_TRUE(IsControllable());
1034 EXPECT_TRUE(IsSuspended()); 1038 EXPECT_TRUE(IsSuspended());
1035 1039
1036 SystemResume(); 1040 SystemResume();
1037 EXPECT_TRUE(IsControllable()); 1041 EXPECT_TRUE(IsControllable());
1038 EXPECT_FALSE(IsSuspended()); 1042 EXPECT_FALSE(IsSuspended());
1039 } 1043 }
1040 1044
1041 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_SystemTransient) { 1045 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_SystemTransient) {
1042 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 1046 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
1043 new MockMediaSessionObserver); 1047 new MockMediaSessionPlayerObserver);
1044 base::HistogramTester tester; 1048 base::HistogramTester tester;
1045 1049
1046 StartNewPlayer(media_session_observer.get(), 1050 StartNewPlayer(media_session_player_observer.get(),
1047 media::MediaContentType::Persistent); 1051 media::MediaContentType::Persistent);
1048 SystemSuspend(true); 1052 SystemSuspend(true);
1049 1053
1050 std::unique_ptr<base::HistogramSamples> samples( 1054 std::unique_ptr<base::HistogramSamples> samples(
1051 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); 1055 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended"));
1052 EXPECT_EQ(1, samples->TotalCount()); 1056 EXPECT_EQ(1, samples->TotalCount());
1053 EXPECT_EQ(1, samples->GetCount(0)); // System Transient 1057 EXPECT_EQ(1, samples->GetCount(0)); // System Transient
1054 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent 1058 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent
1055 EXPECT_EQ(0, samples->GetCount(2)); // UI 1059 EXPECT_EQ(0, samples->GetCount(2)); // UI
1056 } 1060 }
1057 1061
1058 1062
1059 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 1063 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
1060 UMA_Suspended_SystemPermantent) { 1064 UMA_Suspended_SystemPermantent) {
1061 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 1065 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
1062 new MockMediaSessionObserver); 1066 new MockMediaSessionPlayerObserver);
1063 base::HistogramTester tester; 1067 base::HistogramTester tester;
1064 1068
1065 StartNewPlayer(media_session_observer.get(), 1069 StartNewPlayer(media_session_player_observer.get(),
1066 media::MediaContentType::Persistent); 1070 media::MediaContentType::Persistent);
1067 SystemSuspend(false); 1071 SystemSuspend(false);
1068 1072
1069 std::unique_ptr<base::HistogramSamples> samples( 1073 std::unique_ptr<base::HistogramSamples> samples(
1070 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); 1074 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended"));
1071 EXPECT_EQ(1, samples->TotalCount()); 1075 EXPECT_EQ(1, samples->TotalCount());
1072 EXPECT_EQ(0, samples->GetCount(0)); // System Transient 1076 EXPECT_EQ(0, samples->GetCount(0)); // System Transient
1073 EXPECT_EQ(1, samples->GetCount(1)); // System Permanent 1077 EXPECT_EQ(1, samples->GetCount(1)); // System Permanent
1074 EXPECT_EQ(0, samples->GetCount(2)); // UI 1078 EXPECT_EQ(0, samples->GetCount(2)); // UI
1075 } 1079 }
1076 1080
1077 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_UI) { 1081 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_UI) {
1078 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 1082 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
1079 new MockMediaSessionObserver); 1083 new MockMediaSessionPlayerObserver);
1080 base::HistogramTester tester; 1084 base::HistogramTester tester;
1081 1085
1082 StartNewPlayer(media_session_observer.get(), 1086 StartNewPlayer(media_session_player_observer.get(),
1083 media::MediaContentType::Persistent); 1087 media::MediaContentType::Persistent);
1084 UISuspend(); 1088 UISuspend();
1085 1089
1086 std::unique_ptr<base::HistogramSamples> samples( 1090 std::unique_ptr<base::HistogramSamples> samples(
1087 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); 1091 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended"));
1088 EXPECT_EQ(1, samples->TotalCount()); 1092 EXPECT_EQ(1, samples->TotalCount());
1089 EXPECT_EQ(0, samples->GetCount(0)); // System Transient 1093 EXPECT_EQ(0, samples->GetCount(0)); // System Transient
1090 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent 1094 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent
1091 EXPECT_EQ(1, samples->GetCount(2)); // UI 1095 EXPECT_EQ(1, samples->GetCount(2)); // UI
1092 } 1096 }
1093 1097
1094 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_Multiple) { 1098 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_Multiple) {
1095 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 1099 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
1096 new MockMediaSessionObserver); 1100 new MockMediaSessionPlayerObserver);
1097 base::HistogramTester tester; 1101 base::HistogramTester tester;
1098 1102
1099 StartNewPlayer(media_session_observer.get(), 1103 StartNewPlayer(media_session_player_observer.get(),
1100 media::MediaContentType::Persistent); 1104 media::MediaContentType::Persistent);
1101 1105
1102 UISuspend(); 1106 UISuspend();
1103 UIResume(); 1107 UIResume();
1104 1108
1105 SystemSuspend(true); 1109 SystemSuspend(true);
1106 SystemResume(); 1110 SystemResume();
1107 1111
1108 UISuspend(); 1112 UISuspend();
1109 UIResume(); 1113 UIResume();
1110 1114
1111 SystemSuspend(false); 1115 SystemSuspend(false);
1112 1116
1113 std::unique_ptr<base::HistogramSamples> samples( 1117 std::unique_ptr<base::HistogramSamples> samples(
1114 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); 1118 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended"));
1115 EXPECT_EQ(4, samples->TotalCount()); 1119 EXPECT_EQ(4, samples->TotalCount());
1116 EXPECT_EQ(1, samples->GetCount(0)); // System Transient 1120 EXPECT_EQ(1, samples->GetCount(0)); // System Transient
1117 EXPECT_EQ(1, samples->GetCount(1)); // System Permanent 1121 EXPECT_EQ(1, samples->GetCount(1)); // System Permanent
1118 EXPECT_EQ(2, samples->GetCount(2)); // UI 1122 EXPECT_EQ(2, samples->GetCount(2)); // UI
1119 } 1123 }
1120 1124
1121 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_Crossing) { 1125 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_Crossing) {
1122 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 1126 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
1123 new MockMediaSessionObserver); 1127 new MockMediaSessionPlayerObserver);
1124 base::HistogramTester tester; 1128 base::HistogramTester tester;
1125 1129
1126 StartNewPlayer(media_session_observer.get(), 1130 StartNewPlayer(media_session_player_observer.get(),
1127 media::MediaContentType::Persistent); 1131 media::MediaContentType::Persistent);
1128 1132
1129 UISuspend(); 1133 UISuspend();
1130 SystemSuspend(true); 1134 SystemSuspend(true);
1131 SystemSuspend(false); 1135 SystemSuspend(false);
1132 UIResume(); 1136 UIResume();
1133 1137
1134 SystemSuspend(true); 1138 SystemSuspend(true);
1135 SystemSuspend(true); 1139 SystemSuspend(true);
1136 SystemSuspend(false); 1140 SystemSuspend(false);
1137 SystemResume(); 1141 SystemResume();
1138 1142
1139 std::unique_ptr<base::HistogramSamples> samples( 1143 std::unique_ptr<base::HistogramSamples> samples(
1140 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); 1144 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended"));
1141 EXPECT_EQ(2, samples->TotalCount()); 1145 EXPECT_EQ(2, samples->TotalCount());
1142 EXPECT_EQ(1, samples->GetCount(0)); // System Transient 1146 EXPECT_EQ(1, samples->GetCount(0)); // System Transient
1143 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent 1147 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent
1144 EXPECT_EQ(1, samples->GetCount(2)); // UI 1148 EXPECT_EQ(1, samples->GetCount(2)); // UI
1145 } 1149 }
1146 1150
1147 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_Stop) { 1151 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_Stop) {
1148 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 1152 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
1149 new MockMediaSessionObserver); 1153 new MockMediaSessionPlayerObserver);
1150 base::HistogramTester tester; 1154 base::HistogramTester tester;
1151 1155
1152 StartNewPlayer(media_session_observer.get(), 1156 StartNewPlayer(media_session_player_observer.get(),
1153 media::MediaContentType::Persistent); 1157 media::MediaContentType::Persistent);
1154 media_session_->Stop(MediaSession::SuspendType::UI); 1158 media_session_->Stop(MediaSession::SuspendType::UI);
1155 1159
1156 std::unique_ptr<base::HistogramSamples> samples( 1160 std::unique_ptr<base::HistogramSamples> samples(
1157 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); 1161 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended"));
1158 EXPECT_EQ(1, samples->TotalCount()); 1162 EXPECT_EQ(1, samples->TotalCount());
1159 EXPECT_EQ(0, samples->GetCount(0)); // System Transient 1163 EXPECT_EQ(0, samples->GetCount(0)); // System Transient
1160 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent 1164 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent
1161 EXPECT_EQ(1, samples->GetCount(2)); // UI 1165 EXPECT_EQ(1, samples->GetCount(2)); // UI
1162 } 1166 }
1163 1167
1164 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_ActiveTime_NoActivation) { 1168 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_ActiveTime_NoActivation) {
1165 base::HistogramTester tester; 1169 base::HistogramTester tester;
1166 1170
1167 std::unique_ptr<MediaSession> media_session = CreateDummyMediaSession(); 1171 std::unique_ptr<MediaSession> media_session = CreateDummyMediaSession();
1168 media_session.reset(); 1172 media_session.reset();
1169 1173
1170 // A MediaSession that wasn't active doesn't register an active time. 1174 // A MediaSession that wasn't active doesn't register an active time.
1171 std::unique_ptr<base::HistogramSamples> samples( 1175 std::unique_ptr<base::HistogramSamples> samples(
1172 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); 1176 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
1173 EXPECT_EQ(0, samples->TotalCount()); 1177 EXPECT_EQ(0, samples->TotalCount());
1174 } 1178 }
1175 1179
1176 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 1180 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
1177 UMA_ActiveTime_SimpleActivation) { 1181 UMA_ActiveTime_SimpleActivation) {
1178 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 1182 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
1179 new MockMediaSessionObserver); 1183 new MockMediaSessionPlayerObserver);
1180 base::HistogramTester tester; 1184 base::HistogramTester tester;
1181 1185
1182 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); 1186 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
1183 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); 1187 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock();
1184 clock->SetNowTicks(base::TimeTicks::Now()); 1188 clock->SetNowTicks(base::TimeTicks::Now());
1185 media_session_uma_helper->SetClockForTest( 1189 media_session_uma_helper->SetClockForTest(
1186 std::unique_ptr<base::SimpleTestTickClock>(clock)); 1190 std::unique_ptr<base::SimpleTestTickClock>(clock));
1187 1191
1188 StartNewPlayer(media_session_observer.get(), 1192 StartNewPlayer(media_session_player_observer.get(),
1189 media::MediaContentType::Persistent); 1193 media::MediaContentType::Persistent);
1190 1194
1191 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); 1195 clock->Advance(base::TimeDelta::FromMilliseconds(1000));
1192 media_session_->Stop(MediaSession::SuspendType::UI); 1196 media_session_->Stop(MediaSession::SuspendType::UI);
1193 1197
1194 std::unique_ptr<base::HistogramSamples> samples( 1198 std::unique_ptr<base::HistogramSamples> samples(
1195 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); 1199 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
1196 EXPECT_EQ(1, samples->TotalCount()); 1200 EXPECT_EQ(1, samples->TotalCount());
1197 EXPECT_EQ(1, samples->GetCount(1000)); 1201 EXPECT_EQ(1, samples->GetCount(1000));
1198 } 1202 }
1199 1203
1200 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 1204 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
1201 UMA_ActiveTime_ActivationWithUISuspension) { 1205 UMA_ActiveTime_ActivationWithUISuspension) {
1202 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 1206 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
1203 new MockMediaSessionObserver); 1207 new MockMediaSessionPlayerObserver);
1204 base::HistogramTester tester; 1208 base::HistogramTester tester;
1205 1209
1206 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); 1210 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
1207 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); 1211 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock();
1208 clock->SetNowTicks(base::TimeTicks::Now()); 1212 clock->SetNowTicks(base::TimeTicks::Now());
1209 media_session_uma_helper->SetClockForTest( 1213 media_session_uma_helper->SetClockForTest(
1210 std::unique_ptr<base::SimpleTestTickClock>(clock)); 1214 std::unique_ptr<base::SimpleTestTickClock>(clock));
1211 1215
1212 StartNewPlayer(media_session_observer.get(), 1216 StartNewPlayer(media_session_player_observer.get(),
1213 media::MediaContentType::Persistent); 1217 media::MediaContentType::Persistent);
1214 1218
1215 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); 1219 clock->Advance(base::TimeDelta::FromMilliseconds(1000));
1216 UISuspend(); 1220 UISuspend();
1217 1221
1218 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); 1222 clock->Advance(base::TimeDelta::FromMilliseconds(2000));
1219 UIResume(); 1223 UIResume();
1220 1224
1221 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); 1225 clock->Advance(base::TimeDelta::FromMilliseconds(1000));
1222 media_session_->Stop(MediaSession::SuspendType::UI); 1226 media_session_->Stop(MediaSession::SuspendType::UI);
1223 1227
1224 std::unique_ptr<base::HistogramSamples> samples( 1228 std::unique_ptr<base::HistogramSamples> samples(
1225 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); 1229 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
1226 EXPECT_EQ(1, samples->TotalCount()); 1230 EXPECT_EQ(1, samples->TotalCount());
1227 EXPECT_EQ(1, samples->GetCount(2000)); 1231 EXPECT_EQ(1, samples->GetCount(2000));
1228 } 1232 }
1229 1233
1230 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 1234 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
1231 UMA_ActiveTime_ActivationWithSystemSuspension) { 1235 UMA_ActiveTime_ActivationWithSystemSuspension) {
1232 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 1236 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
1233 new MockMediaSessionObserver); 1237 new MockMediaSessionPlayerObserver);
1234 base::HistogramTester tester; 1238 base::HistogramTester tester;
1235 1239
1236 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); 1240 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
1237 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); 1241 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock();
1238 clock->SetNowTicks(base::TimeTicks::Now()); 1242 clock->SetNowTicks(base::TimeTicks::Now());
1239 media_session_uma_helper->SetClockForTest( 1243 media_session_uma_helper->SetClockForTest(
1240 std::unique_ptr<base::SimpleTestTickClock>(clock)); 1244 std::unique_ptr<base::SimpleTestTickClock>(clock));
1241 1245
1242 StartNewPlayer(media_session_observer.get(), 1246 StartNewPlayer(media_session_player_observer.get(),
1243 media::MediaContentType::Persistent); 1247 media::MediaContentType::Persistent);
1244 1248
1245 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); 1249 clock->Advance(base::TimeDelta::FromMilliseconds(1000));
1246 SystemSuspend(true); 1250 SystemSuspend(true);
1247 1251
1248 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); 1252 clock->Advance(base::TimeDelta::FromMilliseconds(2000));
1249 SystemResume(); 1253 SystemResume();
1250 1254
1251 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); 1255 clock->Advance(base::TimeDelta::FromMilliseconds(1000));
1252 media_session_->Stop(MediaSession::SuspendType::UI); 1256 media_session_->Stop(MediaSession::SuspendType::UI);
1253 1257
1254 std::unique_ptr<base::HistogramSamples> samples( 1258 std::unique_ptr<base::HistogramSamples> samples(
1255 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); 1259 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
1256 EXPECT_EQ(1, samples->TotalCount()); 1260 EXPECT_EQ(1, samples->TotalCount());
1257 EXPECT_EQ(1, samples->GetCount(2000)); 1261 EXPECT_EQ(1, samples->GetCount(2000));
1258 } 1262 }
1259 1263
1260 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 1264 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
1261 UMA_ActiveTime_ActivateSuspendedButNotStopped) { 1265 UMA_ActiveTime_ActivateSuspendedButNotStopped) {
1262 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 1266 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
1263 new MockMediaSessionObserver); 1267 new MockMediaSessionPlayerObserver);
1264 base::HistogramTester tester; 1268 base::HistogramTester tester;
1265 1269
1266 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); 1270 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
1267 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); 1271 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock();
1268 clock->SetNowTicks(base::TimeTicks::Now()); 1272 clock->SetNowTicks(base::TimeTicks::Now());
1269 media_session_uma_helper->SetClockForTest( 1273 media_session_uma_helper->SetClockForTest(
1270 std::unique_ptr<base::SimpleTestTickClock>(clock)); 1274 std::unique_ptr<base::SimpleTestTickClock>(clock));
1271 1275
1272 StartNewPlayer(media_session_observer.get(), 1276 StartNewPlayer(media_session_player_observer.get(),
1273 media::MediaContentType::Persistent); 1277 media::MediaContentType::Persistent);
1274 clock->Advance(base::TimeDelta::FromMilliseconds(500)); 1278 clock->Advance(base::TimeDelta::FromMilliseconds(500));
1275 SystemSuspend(true); 1279 SystemSuspend(true);
1276 1280
1277 { 1281 {
1278 std::unique_ptr<base::HistogramSamples> samples( 1282 std::unique_ptr<base::HistogramSamples> samples(
1279 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); 1283 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
1280 EXPECT_EQ(0, samples->TotalCount()); 1284 EXPECT_EQ(0, samples->TotalCount());
1281 } 1285 }
1282 1286
1283 SystemResume(); 1287 SystemResume();
1284 clock->Advance(base::TimeDelta::FromMilliseconds(5000)); 1288 clock->Advance(base::TimeDelta::FromMilliseconds(5000));
1285 UISuspend(); 1289 UISuspend();
1286 1290
1287 { 1291 {
1288 std::unique_ptr<base::HistogramSamples> samples( 1292 std::unique_ptr<base::HistogramSamples> samples(
1289 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); 1293 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
1290 EXPECT_EQ(0, samples->TotalCount()); 1294 EXPECT_EQ(0, samples->TotalCount());
1291 } 1295 }
1292 } 1296 }
1293 1297
1294 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 1298 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
1295 UMA_ActiveTime_ActivateSuspendStopTwice) { 1299 UMA_ActiveTime_ActivateSuspendStopTwice) {
1296 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 1300 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
1297 new MockMediaSessionObserver); 1301 new MockMediaSessionPlayerObserver);
1298 base::HistogramTester tester; 1302 base::HistogramTester tester;
1299 1303
1300 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); 1304 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
1301 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); 1305 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock();
1302 clock->SetNowTicks(base::TimeTicks::Now()); 1306 clock->SetNowTicks(base::TimeTicks::Now());
1303 media_session_uma_helper->SetClockForTest( 1307 media_session_uma_helper->SetClockForTest(
1304 std::unique_ptr<base::SimpleTestTickClock>(clock)); 1308 std::unique_ptr<base::SimpleTestTickClock>(clock));
1305 1309
1306 StartNewPlayer(media_session_observer.get(), 1310 StartNewPlayer(media_session_player_observer.get(),
1307 media::MediaContentType::Persistent); 1311 media::MediaContentType::Persistent);
1308 clock->Advance(base::TimeDelta::FromMilliseconds(500)); 1312 clock->Advance(base::TimeDelta::FromMilliseconds(500));
1309 SystemSuspend(true); 1313 SystemSuspend(true);
1310 media_session_->Stop(MediaSession::SuspendType::UI); 1314 media_session_->Stop(MediaSession::SuspendType::UI);
1311 1315
1312 StartNewPlayer(media_session_observer.get(), 1316 StartNewPlayer(media_session_player_observer.get(),
1313 media::MediaContentType::Persistent); 1317 media::MediaContentType::Persistent);
1314 clock->Advance(base::TimeDelta::FromMilliseconds(5000)); 1318 clock->Advance(base::TimeDelta::FromMilliseconds(5000));
1315 SystemResume(); 1319 SystemResume();
1316 media_session_->Stop(MediaSession::SuspendType::UI); 1320 media_session_->Stop(MediaSession::SuspendType::UI);
1317 1321
1318 std::unique_ptr<base::HistogramSamples> samples( 1322 std::unique_ptr<base::HistogramSamples> samples(
1319 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); 1323 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
1320 EXPECT_EQ(2, samples->TotalCount()); 1324 EXPECT_EQ(2, samples->TotalCount());
1321 EXPECT_EQ(1, samples->GetCount(500)); 1325 EXPECT_EQ(1, samples->GetCount(500));
1322 EXPECT_EQ(1, samples->GetCount(5000)); 1326 EXPECT_EQ(1, samples->GetCount(5000));
1323 } 1327 }
1324 1328
1325 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 1329 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
1326 UMA_ActiveTime_MultipleActivations) { 1330 UMA_ActiveTime_MultipleActivations) {
1327 std::unique_ptr<MockMediaSessionObserver> media_session_observer( 1331 std::unique_ptr<MockMediaSessionPlayerObserver> media_session_player_observer(
1328 new MockMediaSessionObserver); 1332 new MockMediaSessionPlayerObserver);
1329 base::HistogramTester tester; 1333 base::HistogramTester tester;
1330 1334
1331 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); 1335 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
1332 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); 1336 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock();
1333 clock->SetNowTicks(base::TimeTicks::Now()); 1337 clock->SetNowTicks(base::TimeTicks::Now());
1334 media_session_uma_helper->SetClockForTest( 1338 media_session_uma_helper->SetClockForTest(
1335 std::unique_ptr<base::SimpleTestTickClock>(clock)); 1339 std::unique_ptr<base::SimpleTestTickClock>(clock));
1336 1340
1337 StartNewPlayer(media_session_observer.get(), 1341 StartNewPlayer(media_session_player_observer.get(),
1338 media::MediaContentType::Persistent); 1342 media::MediaContentType::Persistent);
1339 clock->Advance(base::TimeDelta::FromMilliseconds(10000)); 1343 clock->Advance(base::TimeDelta::FromMilliseconds(10000));
1340 RemovePlayer(media_session_observer.get(), 0); 1344 RemovePlayer(media_session_player_observer.get(), 0);
1341 1345
1342 StartNewPlayer(media_session_observer.get(), 1346 StartNewPlayer(media_session_player_observer.get(),
1343 media::MediaContentType::Persistent); 1347 media::MediaContentType::Persistent);
1344 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); 1348 clock->Advance(base::TimeDelta::FromMilliseconds(1000));
1345 media_session_->Stop(MediaSession::SuspendType::UI); 1349 media_session_->Stop(MediaSession::SuspendType::UI);
1346 1350
1347 std::unique_ptr<base::HistogramSamples> samples( 1351 std::unique_ptr<base::HistogramSamples> samples(
1348 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); 1352 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
1349 EXPECT_EQ(2, samples->TotalCount()); 1353 EXPECT_EQ(2, samples->TotalCount());
1350 EXPECT_EQ(1, samples->GetCount(1000)); 1354 EXPECT_EQ(1, samples->GetCount(1000));
1351 EXPECT_EQ(1, samples->GetCount(10000)); 1355 EXPECT_EQ(1, samples->GetCount(10000));
1352 } 1356 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698