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