| OLD | NEW |
| 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_impl.h" | 5 #include "content/browser/media/session/media_session_impl.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> |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 | 108 |
| 109 void RemovePlayers(MockMediaSessionPlayerObserver* player_observer) { | 109 void RemovePlayers(MockMediaSessionPlayerObserver* player_observer) { |
| 110 media_session_->RemovePlayers(player_observer); | 110 media_session_->RemovePlayers(player_observer); |
| 111 } | 111 } |
| 112 | 112 |
| 113 void OnPlayerPaused(MockMediaSessionPlayerObserver* player_observer, | 113 void OnPlayerPaused(MockMediaSessionPlayerObserver* player_observer, |
| 114 int player_id) { | 114 int player_id) { |
| 115 media_session_->OnPlayerPaused(player_observer, player_id); | 115 media_session_->OnPlayerPaused(player_observer, player_id); |
| 116 } | 116 } |
| 117 | 117 |
| 118 bool HasAudioFocus() { return media_session_->IsActiveForTest(); } | 118 bool IsActive() { return media_session_->IsActive(); } |
| 119 | 119 |
| 120 content::AudioFocusManager::AudioFocusType GetSessionAudioFocusType() { | 120 content::AudioFocusManager::AudioFocusType GetSessionAudioFocusType() { |
| 121 return media_session_->audio_focus_type(); | 121 return media_session_->audio_focus_type(); |
| 122 } | 122 } |
| 123 | 123 |
| 124 bool IsControllable() { return media_session_->IsControllable(); } | 124 bool IsControllable() { return media_session_->IsControllable(); } |
| 125 | 125 |
| 126 bool IsSuspended() { return media_session_->IsSuspended(); } | |
| 127 | |
| 128 void UIResume() { media_session_->Resume(MediaSession::SuspendType::UI); } | 126 void UIResume() { media_session_->Resume(MediaSession::SuspendType::UI); } |
| 129 | 127 |
| 130 void SystemResume() { | 128 void SystemResume() { |
| 131 media_session_->OnResumeInternal(MediaSession::SuspendType::SYSTEM); | 129 media_session_->OnResumeInternal(MediaSession::SuspendType::SYSTEM); |
| 132 } | 130 } |
| 133 | 131 |
| 134 void UISuspend() { media_session_->Suspend(MediaSession::SuspendType::UI); } | 132 void UISuspend() { media_session_->Suspend(MediaSession::SuspendType::UI); } |
| 135 | 133 |
| 136 void SystemSuspend(bool temporary) { | 134 void SystemSuspend(bool temporary) { |
| 137 media_session_->OnSuspendInternal(MediaSession::SuspendType::SYSTEM, | 135 media_session_->OnSuspendInternal(MediaSession::SuspendType::SYSTEM, |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 | 297 |
| 300 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(0)); | 298 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(0)); |
| 301 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(1)); | 299 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(1)); |
| 302 | 300 |
| 303 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 301 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 304 | 302 |
| 305 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(2)); | 303 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(2)); |
| 306 } | 304 } |
| 307 | 305 |
| 308 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, AudioFocusInitialState) { | 306 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, AudioFocusInitialState) { |
| 309 EXPECT_FALSE(HasAudioFocus()); | 307 EXPECT_FALSE(IsActive()); |
| 310 } | 308 } |
| 311 | 309 |
| 312 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, StartPlayerGivesFocus) { | 310 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, StartPlayerGivesFocus) { |
| 313 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 311 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 314 | 312 |
| 315 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 313 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 316 | 314 |
| 317 EXPECT_TRUE(HasAudioFocus()); | 315 EXPECT_TRUE(IsActive()); |
| 318 } | 316 } |
| 319 | 317 |
| 320 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 318 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 321 SuspendGivesAwayAudioFocus) { | 319 SuspendGivesAwayAudioFocus) { |
| 322 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 320 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 323 | 321 |
| 324 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 322 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 325 | 323 |
| 326 SystemSuspend(true); | 324 SystemSuspend(true); |
| 327 | 325 |
| 328 EXPECT_FALSE(HasAudioFocus()); | 326 EXPECT_FALSE(IsActive()); |
| 329 } | 327 } |
| 330 | 328 |
| 331 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, StopGivesAwayAudioFocus) { | 329 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, StopGivesAwayAudioFocus) { |
| 332 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 330 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 333 | 331 |
| 334 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 332 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 335 | 333 |
| 336 media_session_->Stop(MediaSession::SuspendType::UI); | 334 media_session_->Stop(MediaSession::SuspendType::UI); |
| 337 | 335 |
| 338 EXPECT_FALSE(HasAudioFocus()); | 336 EXPECT_FALSE(IsActive()); |
| 339 } | 337 } |
| 340 | 338 |
| 341 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumeGivesBackAudioFocus) { | 339 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumeGivesBackAudioFocus) { |
| 342 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 340 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 343 | 341 |
| 344 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 342 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 345 | 343 |
| 346 SystemSuspend(true); | 344 SystemSuspend(true); |
| 347 SystemResume(); | 345 SystemResume(); |
| 348 | 346 |
| 349 EXPECT_TRUE(HasAudioFocus()); | 347 EXPECT_TRUE(IsActive()); |
| 350 } | 348 } |
| 351 | 349 |
| 352 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 350 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 353 RemovingLastPlayerDropsAudioFocus) { | 351 RemovingLastPlayerDropsAudioFocus) { |
| 354 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 352 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 355 | 353 |
| 356 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 354 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 357 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 355 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 358 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 356 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 359 | 357 |
| 360 RemovePlayer(player_observer.get(), 0); | 358 RemovePlayer(player_observer.get(), 0); |
| 361 EXPECT_TRUE(HasAudioFocus()); | 359 EXPECT_TRUE(IsActive()); |
| 362 RemovePlayer(player_observer.get(), 1); | 360 RemovePlayer(player_observer.get(), 1); |
| 363 EXPECT_TRUE(HasAudioFocus()); | 361 EXPECT_TRUE(IsActive()); |
| 364 RemovePlayer(player_observer.get(), 2); | 362 RemovePlayer(player_observer.get(), 2); |
| 365 EXPECT_FALSE(HasAudioFocus()); | 363 EXPECT_FALSE(IsActive()); |
| 366 } | 364 } |
| 367 | 365 |
| 368 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 366 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 369 RemovingLastPlayerFromManyObserversDropsAudioFocus) { | 367 RemovingLastPlayerFromManyObserversDropsAudioFocus) { |
| 370 auto player_observer_1 = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 368 auto player_observer_1 = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 371 auto player_observer_2 = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 369 auto player_observer_2 = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 372 auto player_observer_3 = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 370 auto player_observer_3 = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 373 | 371 |
| 374 StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent); | 372 StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent); |
| 375 StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent); | 373 StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent); |
| 376 StartNewPlayer(player_observer_3.get(), media::MediaContentType::Persistent); | 374 StartNewPlayer(player_observer_3.get(), media::MediaContentType::Persistent); |
| 377 | 375 |
| 378 RemovePlayer(player_observer_1.get(), 0); | 376 RemovePlayer(player_observer_1.get(), 0); |
| 379 EXPECT_TRUE(HasAudioFocus()); | 377 EXPECT_TRUE(IsActive()); |
| 380 RemovePlayer(player_observer_2.get(), 0); | 378 RemovePlayer(player_observer_2.get(), 0); |
| 381 EXPECT_TRUE(HasAudioFocus()); | 379 EXPECT_TRUE(IsActive()); |
| 382 RemovePlayer(player_observer_3.get(), 0); | 380 RemovePlayer(player_observer_3.get(), 0); |
| 383 EXPECT_FALSE(HasAudioFocus()); | 381 EXPECT_FALSE(IsActive()); |
| 384 } | 382 } |
| 385 | 383 |
| 386 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 384 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 387 RemovingAllPlayersFromObserversDropsAudioFocus) { | 385 RemovingAllPlayersFromObserversDropsAudioFocus) { |
| 388 auto player_observer_1 = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 386 auto player_observer_1 = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 389 auto player_observer_2 = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 387 auto player_observer_2 = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 390 | 388 |
| 391 StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent); | 389 StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent); |
| 392 StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent); | 390 StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent); |
| 393 StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent); | 391 StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent); |
| 394 StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent); | 392 StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent); |
| 395 | 393 |
| 396 RemovePlayers(player_observer_1.get()); | 394 RemovePlayers(player_observer_1.get()); |
| 397 EXPECT_TRUE(HasAudioFocus()); | 395 EXPECT_TRUE(IsActive()); |
| 398 RemovePlayers(player_observer_2.get()); | 396 RemovePlayers(player_observer_2.get()); |
| 399 EXPECT_FALSE(HasAudioFocus()); | 397 EXPECT_FALSE(IsActive()); |
| 400 } | 398 } |
| 401 | 399 |
| 402 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumePlayGivesAudioFocus) { | 400 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumePlayGivesAudioFocus) { |
| 403 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 401 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 404 | 402 |
| 405 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 403 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 406 | 404 |
| 407 RemovePlayer(player_observer.get(), 0); | 405 RemovePlayer(player_observer.get(), 0); |
| 408 EXPECT_FALSE(HasAudioFocus()); | 406 EXPECT_FALSE(IsActive()); |
| 409 | 407 |
| 410 EXPECT_TRUE( | 408 EXPECT_TRUE( |
| 411 AddPlayer(player_observer.get(), 0, media::MediaContentType::Persistent)); | 409 AddPlayer(player_observer.get(), 0, media::MediaContentType::Persistent)); |
| 412 EXPECT_TRUE(HasAudioFocus()); | 410 EXPECT_TRUE(IsActive()); |
| 413 } | 411 } |
| 414 | 412 |
| 415 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 413 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 416 ResumeSuspendAreSentOnlyOncePerPlayers) { | 414 ResumeSuspendAreSentOnlyOncePerPlayers) { |
| 417 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 415 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 418 | 416 |
| 419 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 417 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 420 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 418 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 421 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 419 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 422 | 420 |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 518 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ControlsShowForContent) { | 516 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ControlsShowForContent) { |
| 519 EXPECT_CALL(*mock_media_session_observer(), | 517 EXPECT_CALL(*mock_media_session_observer(), |
| 520 MediaSessionStateChanged(true, false)); | 518 MediaSessionStateChanged(true, false)); |
| 521 | 519 |
| 522 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 520 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 523 | 521 |
| 524 // Starting a player with a content type should show the media controls. | 522 // Starting a player with a content type should show the media controls. |
| 525 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 523 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 526 | 524 |
| 527 EXPECT_TRUE(IsControllable()); | 525 EXPECT_TRUE(IsControllable()); |
| 528 EXPECT_FALSE(IsSuspended()); | 526 EXPECT_TRUE(IsActive()); |
| 529 } | 527 } |
| 530 | 528 |
| 531 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 529 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 532 ControlsNoShowForTransient) { | 530 ControlsNoShowForTransient) { |
| 533 EXPECT_CALL(*mock_media_session_observer(), | 531 EXPECT_CALL(*mock_media_session_observer(), |
| 534 MediaSessionStateChanged(false, false)); | 532 MediaSessionStateChanged(false, false)); |
| 535 | 533 |
| 536 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 534 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 537 | 535 |
| 538 // Starting a player with a transient type should not show the media controls. | 536 // Starting a player with a transient type should not show the media controls. |
| 539 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); | 537 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 540 | 538 |
| 541 EXPECT_FALSE(IsControllable()); | 539 EXPECT_FALSE(IsControllable()); |
| 542 EXPECT_FALSE(IsSuspended()); | 540 EXPECT_TRUE(IsActive()); |
| 543 } | 541 } |
| 544 | 542 |
| 545 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ControlsHideWhenStopped) { | 543 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ControlsHideWhenStopped) { |
| 546 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 544 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 547 MediaSessionStateChanged(true, false)); | 545 MediaSessionStateChanged(true, false)); |
| 548 EXPECT_CALL(*mock_media_session_observer(), | 546 EXPECT_CALL(*mock_media_session_observer(), |
| 549 MediaSessionStateChanged(false, true)) | 547 MediaSessionStateChanged(false, true)) |
| 550 .After(showControls); | 548 .After(showControls); |
| 551 | 549 |
| 552 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 550 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 553 | 551 |
| 554 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 552 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 555 | 553 |
| 556 RemovePlayers(player_observer.get()); | 554 RemovePlayers(player_observer.get()); |
| 557 | 555 |
| 558 EXPECT_FALSE(IsControllable()); | 556 EXPECT_FALSE(IsControllable()); |
| 559 EXPECT_TRUE(IsSuspended()); | 557 EXPECT_FALSE(IsActive()); |
| 560 } | 558 } |
| 561 | 559 |
| 562 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 560 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 563 ControlsShownAcceptTransient) { | 561 ControlsShownAcceptTransient) { |
| 564 EXPECT_CALL(*mock_media_session_observer(), | 562 EXPECT_CALL(*mock_media_session_observer(), |
| 565 MediaSessionStateChanged(true, false)); | 563 MediaSessionStateChanged(true, false)); |
| 566 | 564 |
| 567 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 565 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 568 | 566 |
| 569 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 567 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 570 | 568 |
| 571 // Transient player join the session without affecting the controls. | 569 // Transient player join the session without affecting the controls. |
| 572 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); | 570 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 573 | 571 |
| 574 EXPECT_TRUE(IsControllable()); | 572 EXPECT_TRUE(IsControllable()); |
| 575 EXPECT_FALSE(IsSuspended()); | 573 EXPECT_TRUE(IsActive()); |
| 576 } | 574 } |
| 577 | 575 |
| 578 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 576 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 579 ControlsShownAfterContentAdded) { | 577 ControlsShownAfterContentAdded) { |
| 580 Expectation dontShowControls = EXPECT_CALL( | 578 Expectation dontShowControls = EXPECT_CALL( |
| 581 *mock_media_session_observer(), MediaSessionStateChanged(false, false)); | 579 *mock_media_session_observer(), MediaSessionStateChanged(false, false)); |
| 582 EXPECT_CALL(*mock_media_session_observer(), | 580 EXPECT_CALL(*mock_media_session_observer(), |
| 583 MediaSessionStateChanged(true, false)) | 581 MediaSessionStateChanged(true, false)) |
| 584 .After(dontShowControls); | 582 .After(dontShowControls); |
| 585 | 583 |
| 586 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 584 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 587 | 585 |
| 588 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); | 586 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 589 | 587 |
| 590 // The controls are shown when the content player is added. | 588 // The controls are shown when the content player is added. |
| 591 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 589 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 592 | 590 |
| 593 EXPECT_TRUE(IsControllable()); | 591 EXPECT_TRUE(IsControllable()); |
| 594 EXPECT_FALSE(IsSuspended()); | 592 EXPECT_TRUE(IsActive()); |
| 595 } | 593 } |
| 596 | 594 |
| 597 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 595 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 598 ControlsStayIfOnlyOnePlayerHasBeenPaused) { | 596 ControlsStayIfOnlyOnePlayerHasBeenPaused) { |
| 599 EXPECT_CALL(*mock_media_session_observer(), | 597 EXPECT_CALL(*mock_media_session_observer(), |
| 600 MediaSessionStateChanged(true, false)); | 598 MediaSessionStateChanged(true, false)); |
| 601 | 599 |
| 602 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 600 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 603 | 601 |
| 604 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 602 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 605 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); | 603 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 606 | 604 |
| 607 // Removing only content player doesn't hide the controls since the session | 605 // Removing only content player doesn't hide the controls since the session |
| 608 // is still active. | 606 // is still active. |
| 609 RemovePlayer(player_observer.get(), 0); | 607 RemovePlayer(player_observer.get(), 0); |
| 610 | 608 |
| 611 EXPECT_TRUE(IsControllable()); | 609 EXPECT_TRUE(IsControllable()); |
| 612 EXPECT_FALSE(IsSuspended()); | 610 EXPECT_TRUE(IsActive()); |
| 613 } | 611 } |
| 614 | 612 |
| 615 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 613 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 616 ControlsHideWhenTheLastPlayerIsRemoved) { | 614 ControlsHideWhenTheLastPlayerIsRemoved) { |
| 617 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 615 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 618 MediaSessionStateChanged(true, false)); | 616 MediaSessionStateChanged(true, false)); |
| 619 EXPECT_CALL(*mock_media_session_observer(), | 617 EXPECT_CALL(*mock_media_session_observer(), |
| 620 MediaSessionStateChanged(false, true)) | 618 MediaSessionStateChanged(false, true)) |
| 621 .After(showControls); | 619 .After(showControls); |
| 622 | 620 |
| 623 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 621 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 624 | 622 |
| 625 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 623 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 626 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 624 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 627 | 625 |
| 628 RemovePlayer(player_observer.get(), 0); | 626 RemovePlayer(player_observer.get(), 0); |
| 629 | 627 |
| 630 EXPECT_TRUE(IsControllable()); | 628 EXPECT_TRUE(IsControllable()); |
| 631 EXPECT_FALSE(IsSuspended()); | 629 EXPECT_TRUE(IsActive()); |
| 632 | 630 |
| 633 RemovePlayer(player_observer.get(), 1); | 631 RemovePlayer(player_observer.get(), 1); |
| 634 | 632 |
| 635 EXPECT_FALSE(IsControllable()); | 633 EXPECT_FALSE(IsControllable()); |
| 636 EXPECT_TRUE(IsSuspended()); | 634 EXPECT_FALSE(IsActive()); |
| 637 } | 635 } |
| 638 | 636 |
| 639 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 637 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 640 ControlsHideWhenAllThePlayersAreRemoved) { | 638 ControlsHideWhenAllThePlayersAreRemoved) { |
| 641 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 639 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 642 MediaSessionStateChanged(true, false)); | 640 MediaSessionStateChanged(true, false)); |
| 643 EXPECT_CALL(*mock_media_session_observer(), | 641 EXPECT_CALL(*mock_media_session_observer(), |
| 644 MediaSessionStateChanged(false, true)) | 642 MediaSessionStateChanged(false, true)) |
| 645 .After(showControls); | 643 .After(showControls); |
| 646 | 644 |
| 647 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 645 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 648 | 646 |
| 649 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 647 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 650 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 648 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 651 | 649 |
| 652 RemovePlayers(player_observer.get()); | 650 RemovePlayers(player_observer.get()); |
| 653 | 651 |
| 654 EXPECT_FALSE(IsControllable()); | 652 EXPECT_FALSE(IsControllable()); |
| 655 EXPECT_TRUE(IsSuspended()); | 653 EXPECT_FALSE(IsActive()); |
| 656 } | 654 } |
| 657 | 655 |
| 658 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 656 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 659 ControlsNotHideWhenTheLastPlayerIsPaused) { | 657 ControlsNotHideWhenTheLastPlayerIsPaused) { |
| 660 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 658 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 661 MediaSessionStateChanged(true, false)); | 659 MediaSessionStateChanged(true, false)); |
| 662 EXPECT_CALL(*mock_media_session_observer(), | 660 EXPECT_CALL(*mock_media_session_observer(), |
| 663 MediaSessionStateChanged(true, true)) | 661 MediaSessionStateChanged(true, true)) |
| 664 .After(showControls); | 662 .After(showControls); |
| 665 | 663 |
| 666 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 664 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 667 | 665 |
| 668 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 666 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 669 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 667 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 670 | 668 |
| 671 OnPlayerPaused(player_observer.get(), 0); | 669 OnPlayerPaused(player_observer.get(), 0); |
| 672 | 670 |
| 673 EXPECT_TRUE(IsControllable()); | 671 EXPECT_TRUE(IsControllable()); |
| 674 EXPECT_FALSE(IsSuspended()); | 672 EXPECT_TRUE(IsActive()); |
| 675 | 673 |
| 676 OnPlayerPaused(player_observer.get(), 1); | 674 OnPlayerPaused(player_observer.get(), 1); |
| 677 | 675 |
| 678 EXPECT_TRUE(IsControllable()); | 676 EXPECT_TRUE(IsControllable()); |
| 679 EXPECT_TRUE(IsSuspended()); | 677 EXPECT_FALSE(IsActive()); |
| 680 } | 678 } |
| 681 | 679 |
| 682 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 680 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 683 SuspendTemporaryUpdatesControls) { | 681 SuspendTemporaryUpdatesControls) { |
| 684 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 682 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 685 MediaSessionStateChanged(true, false)); | 683 MediaSessionStateChanged(true, false)); |
| 686 EXPECT_CALL(*mock_media_session_observer(), | 684 EXPECT_CALL(*mock_media_session_observer(), |
| 687 MediaSessionStateChanged(true, true)) | 685 MediaSessionStateChanged(true, true)) |
| 688 .After(showControls); | 686 .After(showControls); |
| 689 | 687 |
| 690 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 688 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 691 | 689 |
| 692 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 690 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 693 | 691 |
| 694 SystemSuspend(true); | 692 SystemSuspend(true); |
| 695 | 693 |
| 696 EXPECT_TRUE(IsControllable()); | 694 EXPECT_TRUE(IsControllable()); |
| 697 EXPECT_TRUE(IsSuspended()); | 695 EXPECT_FALSE(IsActive()); |
| 698 } | 696 } |
| 699 | 697 |
| 700 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 698 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 701 ControlsUpdatedWhenResumed) { | 699 ControlsUpdatedWhenResumed) { |
| 702 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 700 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 703 MediaSessionStateChanged(true, false)); | 701 MediaSessionStateChanged(true, false)); |
| 704 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 702 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), |
| 705 MediaSessionStateChanged(true, true)) | 703 MediaSessionStateChanged(true, true)) |
| 706 .After(showControls); | 704 .After(showControls); |
| 707 EXPECT_CALL(*mock_media_session_observer(), | 705 EXPECT_CALL(*mock_media_session_observer(), |
| 708 MediaSessionStateChanged(true, false)) | 706 MediaSessionStateChanged(true, false)) |
| 709 .After(pauseControls); | 707 .After(pauseControls); |
| 710 | 708 |
| 711 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 709 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 712 | 710 |
| 713 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 711 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 714 SystemSuspend(true); | 712 SystemSuspend(true); |
| 715 SystemResume(); | 713 SystemResume(); |
| 716 | 714 |
| 717 EXPECT_TRUE(IsControllable()); | 715 EXPECT_TRUE(IsControllable()); |
| 718 EXPECT_FALSE(IsSuspended()); | 716 EXPECT_TRUE(IsActive()); |
| 719 } | 717 } |
| 720 | 718 |
| 721 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 719 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 722 ControlsHideWhenSessionSuspendedPermanently) { | 720 ControlsHideWhenSessionSuspendedPermanently) { |
| 723 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 721 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 724 MediaSessionStateChanged(true, false)); | 722 MediaSessionStateChanged(true, false)); |
| 725 EXPECT_CALL(*mock_media_session_observer(), | 723 EXPECT_CALL(*mock_media_session_observer(), |
| 726 MediaSessionStateChanged(false, true)) | 724 MediaSessionStateChanged(false, true)) |
| 727 .After(showControls); | 725 .After(showControls); |
| 728 | 726 |
| 729 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 727 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 730 | 728 |
| 731 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 729 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 732 | 730 |
| 733 SystemSuspend(false); | 731 SystemSuspend(false); |
| 734 | 732 |
| 735 EXPECT_FALSE(IsControllable()); | 733 EXPECT_FALSE(IsControllable()); |
| 736 EXPECT_TRUE(IsSuspended()); | 734 EXPECT_FALSE(IsActive()); |
| 737 } | 735 } |
| 738 | 736 |
| 739 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 737 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 740 ConstrolsHideWhenSessionStops) { | 738 ConstrolsHideWhenSessionStops) { |
| 741 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 739 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 742 MediaSessionStateChanged(true, false)); | 740 MediaSessionStateChanged(true, false)); |
| 743 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 741 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), |
| 744 MediaSessionStateChanged(true, true)) | 742 MediaSessionStateChanged(true, true)) |
| 745 .After(showControls); | 743 .After(showControls); |
| 746 EXPECT_CALL(*mock_media_session_observer(), | 744 EXPECT_CALL(*mock_media_session_observer(), |
| 747 MediaSessionStateChanged(false, true)) | 745 MediaSessionStateChanged(false, true)) |
| 748 .After(pauseControls); | 746 .After(pauseControls); |
| 749 | 747 |
| 750 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 748 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 751 | 749 |
| 752 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 750 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 753 | 751 |
| 754 media_session_->Stop(MediaSession::SuspendType::UI); | 752 media_session_->Stop(MediaSession::SuspendType::UI); |
| 755 | 753 |
| 756 EXPECT_FALSE(IsControllable()); | 754 EXPECT_FALSE(IsControllable()); |
| 757 EXPECT_TRUE(IsSuspended()); | 755 EXPECT_FALSE(IsActive()); |
| 758 } | 756 } |
| 759 | 757 |
| 760 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 758 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 761 ControlsHideWhenSessionChangesFromContentToTransient) { | 759 ControlsHideWhenSessionChangesFromContentToTransient) { |
| 762 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 760 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 763 MediaSessionStateChanged(true, false)); | 761 MediaSessionStateChanged(true, false)); |
| 764 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 762 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), |
| 765 MediaSessionStateChanged(true, true)) | 763 MediaSessionStateChanged(true, true)) |
| 766 .After(showControls); | 764 .After(showControls); |
| 767 EXPECT_CALL(*mock_media_session_observer(), | 765 EXPECT_CALL(*mock_media_session_observer(), |
| 768 MediaSessionStateChanged(false, false)) | 766 MediaSessionStateChanged(false, false)) |
| 769 .After(pauseControls); | 767 .After(pauseControls); |
| 770 | 768 |
| 771 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 769 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 772 | 770 |
| 773 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 771 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 774 SystemSuspend(true); | 772 SystemSuspend(true); |
| 775 | 773 |
| 776 // This should reset the session and change it to a transient, so | 774 // This should reset the session and change it to a transient, so |
| 777 // hide the controls. | 775 // hide the controls. |
| 778 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); | 776 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 779 | 777 |
| 780 EXPECT_FALSE(IsControllable()); | 778 EXPECT_FALSE(IsControllable()); |
| 781 EXPECT_FALSE(IsSuspended()); | 779 EXPECT_TRUE(IsActive()); |
| 782 } | 780 } |
| 783 | 781 |
| 784 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 782 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 785 ControlsUpdatedWhenNewPlayerResetsSession) { | 783 ControlsUpdatedWhenNewPlayerResetsSession) { |
| 786 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 784 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 787 MediaSessionStateChanged(true, false)); | 785 MediaSessionStateChanged(true, false)); |
| 788 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 786 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), |
| 789 MediaSessionStateChanged(true, true)) | 787 MediaSessionStateChanged(true, true)) |
| 790 .After(showControls); | 788 .After(showControls); |
| 791 EXPECT_CALL(*mock_media_session_observer(), | 789 EXPECT_CALL(*mock_media_session_observer(), |
| 792 MediaSessionStateChanged(true, false)) | 790 MediaSessionStateChanged(true, false)) |
| 793 .After(pauseControls); | 791 .After(pauseControls); |
| 794 | 792 |
| 795 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 793 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 796 | 794 |
| 797 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 795 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 798 SystemSuspend(true); | 796 SystemSuspend(true); |
| 799 | 797 |
| 800 // This should reset the session and update the controls. | 798 // This should reset the session and update the controls. |
| 801 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 799 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 802 | 800 |
| 803 EXPECT_TRUE(IsControllable()); | 801 EXPECT_TRUE(IsControllable()); |
| 804 EXPECT_FALSE(IsSuspended()); | 802 EXPECT_TRUE(IsActive()); |
| 805 } | 803 } |
| 806 | 804 |
| 807 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 805 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 808 ControlsResumedWhenPlayerIsResumed) { | 806 ControlsResumedWhenPlayerIsResumed) { |
| 809 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 807 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 810 MediaSessionStateChanged(true, false)); | 808 MediaSessionStateChanged(true, false)); |
| 811 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 809 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), |
| 812 MediaSessionStateChanged(true, true)) | 810 MediaSessionStateChanged(true, true)) |
| 813 .After(showControls); | 811 .After(showControls); |
| 814 EXPECT_CALL(*mock_media_session_observer(), | 812 EXPECT_CALL(*mock_media_session_observer(), |
| 815 MediaSessionStateChanged(true, false)) | 813 MediaSessionStateChanged(true, false)) |
| 816 .After(pauseControls); | 814 .After(pauseControls); |
| 817 | 815 |
| 818 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 816 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 819 | 817 |
| 820 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 818 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 821 SystemSuspend(true); | 819 SystemSuspend(true); |
| 822 | 820 |
| 823 // This should resume the session and update the controls. | 821 // This should resume the session and update the controls. |
| 824 AddPlayer(player_observer.get(), 0, media::MediaContentType::Persistent); | 822 AddPlayer(player_observer.get(), 0, media::MediaContentType::Persistent); |
| 825 | 823 |
| 826 EXPECT_TRUE(IsControllable()); | 824 EXPECT_TRUE(IsControllable()); |
| 827 EXPECT_FALSE(IsSuspended()); | 825 EXPECT_TRUE(IsActive()); |
| 828 } | 826 } |
| 829 | 827 |
| 830 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 828 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 831 ControlsUpdatedDueToResumeSessionAction) { | 829 ControlsUpdatedDueToResumeSessionAction) { |
| 832 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 830 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 833 MediaSessionStateChanged(true, false)); | 831 MediaSessionStateChanged(true, false)); |
| 834 EXPECT_CALL(*mock_media_session_observer(), | 832 EXPECT_CALL(*mock_media_session_observer(), |
| 835 MediaSessionStateChanged(true, true)) | 833 MediaSessionStateChanged(true, true)) |
| 836 .After(showControls); | 834 .After(showControls); |
| 837 | 835 |
| 838 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 836 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 839 | 837 |
| 840 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 838 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 841 UISuspend(); | 839 UISuspend(); |
| 842 | 840 |
| 843 EXPECT_TRUE(IsControllable()); | 841 EXPECT_TRUE(IsControllable()); |
| 844 EXPECT_TRUE(IsSuspended()); | 842 EXPECT_FALSE(IsActive()); |
| 845 } | 843 } |
| 846 | 844 |
| 847 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 845 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 848 ControlsUpdatedDueToSuspendSessionAction) { | 846 ControlsUpdatedDueToSuspendSessionAction) { |
| 849 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 847 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 850 MediaSessionStateChanged(true, false)); | 848 MediaSessionStateChanged(true, false)); |
| 851 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 849 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), |
| 852 MediaSessionStateChanged(true, true)) | 850 MediaSessionStateChanged(true, true)) |
| 853 .After(showControls); | 851 .After(showControls); |
| 854 EXPECT_CALL(*mock_media_session_observer(), | 852 EXPECT_CALL(*mock_media_session_observer(), |
| 855 MediaSessionStateChanged(true, false)) | 853 MediaSessionStateChanged(true, false)) |
| 856 .After(pauseControls); | 854 .After(pauseControls); |
| 857 | 855 |
| 858 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 856 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 859 | 857 |
| 860 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 858 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 861 UISuspend(); | 859 UISuspend(); |
| 862 UIResume(); | 860 UIResume(); |
| 863 | 861 |
| 864 EXPECT_TRUE(IsControllable()); | 862 EXPECT_TRUE(IsControllable()); |
| 865 EXPECT_FALSE(IsSuspended()); | 863 EXPECT_TRUE(IsActive()); |
| 866 } | 864 } |
| 867 | 865 |
| 868 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 866 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 869 ControlsDontShowWhenOneShotIsPresent) { | 867 ControlsDontShowWhenOneShotIsPresent) { |
| 870 EXPECT_CALL(*mock_media_session_observer(), | 868 EXPECT_CALL(*mock_media_session_observer(), |
| 871 MediaSessionStateChanged(false, false)); | 869 MediaSessionStateChanged(false, false)); |
| 872 | 870 |
| 873 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 871 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 874 | 872 |
| 875 StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot); | 873 StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot); |
| 876 | 874 |
| 877 EXPECT_FALSE(IsControllable()); | 875 EXPECT_FALSE(IsControllable()); |
| 878 EXPECT_FALSE(IsSuspended()); | 876 EXPECT_TRUE(IsActive()); |
| 879 | 877 |
| 880 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); | 878 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 881 EXPECT_FALSE(IsControllable()); | 879 EXPECT_FALSE(IsControllable()); |
| 882 EXPECT_FALSE(IsSuspended()); | 880 EXPECT_TRUE(IsActive()); |
| 883 | 881 |
| 884 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 882 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 885 EXPECT_FALSE(IsControllable()); | 883 EXPECT_FALSE(IsControllable()); |
| 886 EXPECT_FALSE(IsSuspended()); | 884 EXPECT_TRUE(IsActive()); |
| 887 } | 885 } |
| 888 | 886 |
| 889 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 887 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 890 ControlsHiddenAfterRemoveOneShotWithoutOtherPlayers) { | 888 ControlsHiddenAfterRemoveOneShotWithoutOtherPlayers) { |
| 891 Expectation expect_1 = EXPECT_CALL(*mock_media_session_observer(), | 889 Expectation expect_1 = EXPECT_CALL(*mock_media_session_observer(), |
| 892 MediaSessionStateChanged(false, false)); | 890 MediaSessionStateChanged(false, false)); |
| 893 Expectation expect_2 = EXPECT_CALL(*mock_media_session_observer(), | 891 Expectation expect_2 = EXPECT_CALL(*mock_media_session_observer(), |
| 894 MediaSessionStateChanged(false, true)) | 892 MediaSessionStateChanged(false, true)) |
| 895 .After(expect_1); | 893 .After(expect_1); |
| 896 EXPECT_CALL(*mock_media_session_observer(), MediaSessionStateChanged(true, _)) | 894 EXPECT_CALL(*mock_media_session_observer(), MediaSessionStateChanged(true, _)) |
| 897 .Times(0) | 895 .Times(0) |
| 898 .After(expect_2); | 896 .After(expect_2); |
| 899 | 897 |
| 900 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 898 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 901 | 899 |
| 902 StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot); | 900 StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot); |
| 903 RemovePlayer(player_observer.get(), 0); | 901 RemovePlayer(player_observer.get(), 0); |
| 904 | 902 |
| 905 EXPECT_FALSE(IsControllable()); | 903 EXPECT_FALSE(IsControllable()); |
| 906 EXPECT_TRUE(IsSuspended()); | 904 EXPECT_FALSE(IsActive()); |
| 907 } | 905 } |
| 908 | 906 |
| 909 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 907 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 910 ControlsShowAfterRemoveOneShotWithPersistentPresent) { | 908 ControlsShowAfterRemoveOneShotWithPersistentPresent) { |
| 911 Expectation uncontrollable = EXPECT_CALL( | 909 Expectation uncontrollable = EXPECT_CALL( |
| 912 *mock_media_session_observer(), MediaSessionStateChanged(false, false)); | 910 *mock_media_session_observer(), MediaSessionStateChanged(false, false)); |
| 913 | 911 |
| 914 EXPECT_CALL(*mock_media_session_observer(), | 912 EXPECT_CALL(*mock_media_session_observer(), |
| 915 MediaSessionStateChanged(true, false)) | 913 MediaSessionStateChanged(true, false)) |
| 916 .After(uncontrollable); | 914 .After(uncontrollable); |
| 917 | 915 |
| 918 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 916 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 919 | 917 |
| 920 StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot); | 918 StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot); |
| 921 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); | 919 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 922 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 920 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 923 | 921 |
| 924 RemovePlayer(player_observer.get(), 0); | 922 RemovePlayer(player_observer.get(), 0); |
| 925 | 923 |
| 926 EXPECT_TRUE(IsControllable()); | 924 EXPECT_TRUE(IsControllable()); |
| 927 EXPECT_FALSE(IsSuspended()); | 925 EXPECT_TRUE(IsActive()); |
| 928 } | 926 } |
| 929 | 927 |
| 930 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 928 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 931 DontSuspendWhenOneShotIsPresent) { | 929 DontSuspendWhenOneShotIsPresent) { |
| 932 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 930 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 933 | 931 |
| 934 StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot); | 932 StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot); |
| 935 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); | 933 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 936 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 934 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 937 | 935 |
| 938 SystemSuspend(false); | 936 SystemSuspend(false); |
| 939 | 937 |
| 940 EXPECT_FALSE(IsControllable()); | 938 EXPECT_FALSE(IsControllable()); |
| 941 EXPECT_FALSE(IsSuspended()); | 939 EXPECT_TRUE(IsActive()); |
| 942 | 940 |
| 943 EXPECT_EQ(0, player_observer->received_suspend_calls()); | 941 EXPECT_EQ(0, player_observer->received_suspend_calls()); |
| 944 } | 942 } |
| 945 | 943 |
| 946 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 944 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 947 DontResumeBySystemUISuspendedSessions) { | 945 DontResumeBySystemUISuspendedSessions) { |
| 948 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 946 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 949 | 947 |
| 950 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 948 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 951 | 949 |
| 952 UISuspend(); | 950 UISuspend(); |
| 953 EXPECT_TRUE(IsControllable()); | 951 EXPECT_TRUE(IsControllable()); |
| 954 EXPECT_TRUE(IsSuspended()); | 952 EXPECT_FALSE(IsActive()); |
| 955 | 953 |
| 956 SystemResume(); | 954 SystemResume(); |
| 957 EXPECT_TRUE(IsControllable()); | 955 EXPECT_TRUE(IsControllable()); |
| 958 EXPECT_TRUE(IsSuspended()); | 956 EXPECT_FALSE(IsActive()); |
| 959 } | 957 } |
| 960 | 958 |
| 961 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 959 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 962 AllowUIResumeForSystemSuspend) { | 960 AllowUIResumeForSystemSuspend) { |
| 963 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 961 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 964 | 962 |
| 965 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 963 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 966 | 964 |
| 967 SystemSuspend(true); | 965 SystemSuspend(true); |
| 968 EXPECT_TRUE(IsControllable()); | 966 EXPECT_TRUE(IsControllable()); |
| 969 EXPECT_TRUE(IsSuspended()); | 967 EXPECT_FALSE(IsActive()); |
| 970 | 968 |
| 971 UIResume(); | 969 UIResume(); |
| 972 EXPECT_TRUE(IsControllable()); | 970 EXPECT_TRUE(IsControllable()); |
| 973 EXPECT_FALSE(IsSuspended()); | 971 EXPECT_TRUE(IsActive()); |
| 974 } | 972 } |
| 975 | 973 |
| 976 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumeSuspendFromUI) { | 974 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumeSuspendFromUI) { |
| 977 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 975 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 978 | 976 |
| 979 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 977 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 980 | 978 |
| 981 UISuspend(); | 979 UISuspend(); |
| 982 EXPECT_TRUE(IsControllable()); | 980 EXPECT_TRUE(IsControllable()); |
| 983 EXPECT_TRUE(IsSuspended()); | 981 EXPECT_FALSE(IsActive()); |
| 984 | 982 |
| 985 UIResume(); | 983 UIResume(); |
| 986 EXPECT_TRUE(IsControllable()); | 984 EXPECT_TRUE(IsControllable()); |
| 987 EXPECT_FALSE(IsSuspended()); | 985 EXPECT_TRUE(IsActive()); |
| 988 } | 986 } |
| 989 | 987 |
| 990 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumeSuspendFromSystem) { | 988 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumeSuspendFromSystem) { |
| 991 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 989 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 992 | 990 |
| 993 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 991 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 994 | 992 |
| 995 SystemSuspend(true); | 993 SystemSuspend(true); |
| 996 EXPECT_TRUE(IsControllable()); | 994 EXPECT_TRUE(IsControllable()); |
| 997 EXPECT_TRUE(IsSuspended()); | 995 EXPECT_FALSE(IsActive()); |
| 998 | 996 |
| 999 SystemResume(); | 997 SystemResume(); |
| 1000 EXPECT_TRUE(IsControllable()); | 998 EXPECT_TRUE(IsControllable()); |
| 1001 EXPECT_FALSE(IsSuspended()); | 999 EXPECT_TRUE(IsActive()); |
| 1002 } | 1000 } |
| 1003 | 1001 |
| 1004 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, OneShotTakesGainFocus) { | 1002 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, OneShotTakesGainFocus) { |
| 1005 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); | 1003 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 1006 | 1004 |
| 1007 EXPECT_CALL( | 1005 EXPECT_CALL( |
| 1008 *mock_audio_focus_delegate(), | 1006 *mock_audio_focus_delegate(), |
| 1009 RequestAudioFocus(content::AudioFocusManager::AudioFocusType::Gain)) | 1007 RequestAudioFocus(content::AudioFocusManager::AudioFocusType::Gain)) |
| 1010 .Times(1); | 1008 .Times(1); |
| 1011 EXPECT_CALL(*mock_audio_focus_delegate(), | 1009 EXPECT_CALL(*mock_audio_focus_delegate(), |
| (...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1406 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 1404 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 1407 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1405 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1408 media_session_->Stop(MediaSession::SuspendType::UI); | 1406 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1409 | 1407 |
| 1410 std::unique_ptr<base::HistogramSamples> samples( | 1408 std::unique_ptr<base::HistogramSamples> samples( |
| 1411 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1409 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1412 EXPECT_EQ(2, samples->TotalCount()); | 1410 EXPECT_EQ(2, samples->TotalCount()); |
| 1413 EXPECT_EQ(1, samples->GetCount(1000)); | 1411 EXPECT_EQ(1, samples->GetCount(1000)); |
| 1414 EXPECT_EQ(1, samples->GetCount(10000)); | 1412 EXPECT_EQ(1, samples->GetCount(10000)); |
| 1415 } | 1413 } |
| OLD | NEW |