| OLD | NEW |
| 1 |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 2 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 3 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 4 // found in the LICENSE file. |
| 4 | 5 |
| 5 #include "content/browser/media/session/media_session.h" | 6 #include "content/browser/media/session/media_session.h" |
| 6 | 7 |
| 7 #include <stddef.h> | 8 #include <stddef.h> |
| 8 | 9 |
| 9 #include <list> | 10 #include <list> |
| 10 #include <vector> | 11 #include <vector> |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 | 42 |
| 42 void AbandonAudioFocus() override { | 43 void AbandonAudioFocus() override { |
| 43 } | 44 } |
| 44 }; | 45 }; |
| 45 | 46 |
| 46 class MockWebContentsObserver : public WebContentsObserver { | 47 class MockWebContentsObserver : public WebContentsObserver { |
| 47 public: | 48 public: |
| 48 MockWebContentsObserver(WebContents* web_contents) | 49 MockWebContentsObserver(WebContents* web_contents) |
| 49 : WebContentsObserver(web_contents) {} | 50 : WebContentsObserver(web_contents) {} |
| 50 | 51 |
| 51 MOCK_METHOD3(MediaSessionStateChanged, | 52 MOCK_METHOD2(MediaSessionStateChanged, |
| 52 void(bool is_controllable, bool is_suspended, | 53 void(bool is_controllable, bool is_suspended)); |
| 53 const content::MediaMetadata& metadata)); | |
| 54 }; | 54 }; |
| 55 | 55 |
| 56 } // namespace | 56 } // namespace |
| 57 | 57 |
| 58 class MediaSessionBrowserTest : public content::ContentBrowserTest { | 58 class MediaSessionBrowserTest : public content::ContentBrowserTest { |
| 59 protected: | 59 protected: |
| 60 MediaSessionBrowserTest() = default; | 60 MediaSessionBrowserTest() = default; |
| 61 | 61 |
| 62 void SetUpOnMainThread() override { | 62 void SetUpOnMainThread() override { |
| 63 ContentBrowserTest::SetUpOnMainThread(); | 63 ContentBrowserTest::SetUpOnMainThread(); |
| (...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 482 EXPECT_TRUE(media_session_observer->IsPlaying(0)); | 482 EXPECT_TRUE(media_session_observer->IsPlaying(0)); |
| 483 EXPECT_TRUE(media_session_observer->IsPlaying(1)); | 483 EXPECT_TRUE(media_session_observer->IsPlaying(1)); |
| 484 EXPECT_TRUE(media_session_observer->IsPlaying(2)); | 484 EXPECT_TRUE(media_session_observer->IsPlaying(2)); |
| 485 EXPECT_TRUE(media_session_observer->IsPlaying(3)); | 485 EXPECT_TRUE(media_session_observer->IsPlaying(3)); |
| 486 | 486 |
| 487 EXPECT_EQ(MediaSession::Type::Content, GetSessionType()); | 487 EXPECT_EQ(MediaSession::Type::Content, GetSessionType()); |
| 488 } | 488 } |
| 489 | 489 |
| 490 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShowForContent) { | 490 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShowForContent) { |
| 491 EXPECT_CALL(*mock_web_contents_observer(), | 491 EXPECT_CALL(*mock_web_contents_observer(), |
| 492 MediaSessionStateChanged(true, false, testing::_)); | 492 MediaSessionStateChanged(true, false)); |
| 493 | 493 |
| 494 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 494 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 495 new MockMediaSessionObserver); | 495 new MockMediaSessionObserver); |
| 496 | 496 |
| 497 // Starting a player with a content type should show the media controls. | 497 // Starting a player with a content type should show the media controls. |
| 498 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 498 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 499 | 499 |
| 500 EXPECT_TRUE(IsControllable()); | 500 EXPECT_TRUE(IsControllable()); |
| 501 EXPECT_FALSE(IsSuspended()); | 501 EXPECT_FALSE(IsSuspended()); |
| 502 } | 502 } |
| 503 | 503 |
| 504 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsNoShowForTransient) { | 504 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsNoShowForTransient) { |
| 505 EXPECT_CALL(*mock_web_contents_observer(), | 505 EXPECT_CALL(*mock_web_contents_observer(), |
| 506 MediaSessionStateChanged(false, false, testing::_)); | 506 MediaSessionStateChanged(false, false)); |
| 507 | 507 |
| 508 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 508 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 509 new MockMediaSessionObserver); | 509 new MockMediaSessionObserver); |
| 510 | 510 |
| 511 // Starting a player with a transient type should not show the media controls. | 511 // Starting a player with a transient type should not show the media controls. |
| 512 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); | 512 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
| 513 | 513 |
| 514 EXPECT_FALSE(IsControllable()); | 514 EXPECT_FALSE(IsControllable()); |
| 515 EXPECT_FALSE(IsSuspended()); | 515 EXPECT_FALSE(IsSuspended()); |
| 516 } | 516 } |
| 517 | 517 |
| 518 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsHideWhenStopped) { | 518 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsHideWhenStopped) { |
| 519 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 519 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 520 MediaSessionStateChanged(true, false, testing::_)); | 520 MediaSessionStateChanged(true, false)); |
| 521 EXPECT_CALL(*mock_web_contents_observer(), | 521 EXPECT_CALL(*mock_web_contents_observer(), |
| 522 MediaSessionStateChanged(false, true, testing::_)) | 522 MediaSessionStateChanged(false, true)) |
| 523 .After(showControls); | 523 .After(showControls); |
| 524 | 524 |
| 525 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 525 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 526 new MockMediaSessionObserver); | 526 new MockMediaSessionObserver); |
| 527 | 527 |
| 528 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 528 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 529 | 529 |
| 530 RemovePlayers(media_session_observer.get()); | 530 RemovePlayers(media_session_observer.get()); |
| 531 | 531 |
| 532 EXPECT_FALSE(IsControllable()); | 532 EXPECT_FALSE(IsControllable()); |
| 533 EXPECT_TRUE(IsSuspended()); | 533 EXPECT_TRUE(IsSuspended()); |
| 534 } | 534 } |
| 535 | 535 |
| 536 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShownAcceptTransient) { | 536 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShownAcceptTransient) { |
| 537 EXPECT_CALL(*mock_web_contents_observer(), | 537 EXPECT_CALL(*mock_web_contents_observer(), |
| 538 MediaSessionStateChanged(true, false, testing::_)); | 538 MediaSessionStateChanged(true, false)); |
| 539 | 539 |
| 540 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 540 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 541 new MockMediaSessionObserver); | 541 new MockMediaSessionObserver); |
| 542 | 542 |
| 543 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 543 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 544 | 544 |
| 545 // Transient player join the session without affecting the controls. | 545 // Transient player join the session without affecting the controls. |
| 546 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); | 546 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
| 547 | 547 |
| 548 EXPECT_TRUE(IsControllable()); | 548 EXPECT_TRUE(IsControllable()); |
| 549 EXPECT_FALSE(IsSuspended()); | 549 EXPECT_FALSE(IsSuspended()); |
| 550 } | 550 } |
| 551 | 551 |
| 552 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 552 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 553 ControlsShownAfterContentAdded) { | 553 ControlsShownAfterContentAdded) { |
| 554 Expectation dontShowControls = EXPECT_CALL(*mock_web_contents_observer(), | 554 Expectation dontShowControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 555 MediaSessionStateChanged(false, false, testing::_)); | 555 MediaSessionStateChanged(false, false)); |
| 556 EXPECT_CALL(*mock_web_contents_observer(), | 556 EXPECT_CALL(*mock_web_contents_observer(), |
| 557 MediaSessionStateChanged(true, false, testing::_)) | 557 MediaSessionStateChanged(true, false)) |
| 558 .After(dontShowControls); | 558 .After(dontShowControls); |
| 559 | 559 |
| 560 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 560 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 561 new MockMediaSessionObserver); | 561 new MockMediaSessionObserver); |
| 562 | 562 |
| 563 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); | 563 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
| 564 | 564 |
| 565 // The controls are shown when the content player is added. | 565 // The controls are shown when the content player is added. |
| 566 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 566 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 567 | 567 |
| 568 EXPECT_TRUE(IsControllable()); | 568 EXPECT_TRUE(IsControllable()); |
| 569 EXPECT_FALSE(IsSuspended()); | 569 EXPECT_FALSE(IsSuspended()); |
| 570 } | 570 } |
| 571 | 571 |
| 572 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 572 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 573 ControlsStayIfOnlyOnePlayerHasBeenPaused) { | 573 ControlsStayIfOnlyOnePlayerHasBeenPaused) { |
| 574 EXPECT_CALL(*mock_web_contents_observer(), | 574 EXPECT_CALL(*mock_web_contents_observer(), |
| 575 MediaSessionStateChanged(true, false, testing::_)); | 575 MediaSessionStateChanged(true, false)); |
| 576 | 576 |
| 577 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 577 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 578 new MockMediaSessionObserver); | 578 new MockMediaSessionObserver); |
| 579 | 579 |
| 580 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 580 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 581 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); | 581 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
| 582 | 582 |
| 583 // Removing only content player doesn't hide the controls since the session | 583 // Removing only content player doesn't hide the controls since the session |
| 584 // is still active. | 584 // is still active. |
| 585 RemovePlayer(media_session_observer.get(), 0); | 585 RemovePlayer(media_session_observer.get(), 0); |
| 586 | 586 |
| 587 EXPECT_TRUE(IsControllable()); | 587 EXPECT_TRUE(IsControllable()); |
| 588 EXPECT_FALSE(IsSuspended()); | 588 EXPECT_FALSE(IsSuspended()); |
| 589 } | 589 } |
| 590 | 590 |
| 591 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 591 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 592 ControlsHideWhenTheLastPlayerIsRemoved) { | 592 ControlsHideWhenTheLastPlayerIsRemoved) { |
| 593 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 593 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 594 MediaSessionStateChanged(true, false, testing::_)); | 594 MediaSessionStateChanged(true, false)); |
| 595 EXPECT_CALL(*mock_web_contents_observer(), | 595 EXPECT_CALL(*mock_web_contents_observer(), |
| 596 MediaSessionStateChanged(false, true, testing::_)) | 596 MediaSessionStateChanged(false, true)) |
| 597 .After(showControls); | 597 .After(showControls); |
| 598 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 598 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 599 new MockMediaSessionObserver); | 599 new MockMediaSessionObserver); |
| 600 | 600 |
| 601 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 601 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 602 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 602 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 603 | 603 |
| 604 RemovePlayer(media_session_observer.get(), 0); | 604 RemovePlayer(media_session_observer.get(), 0); |
| 605 | 605 |
| 606 EXPECT_TRUE(IsControllable()); | 606 EXPECT_TRUE(IsControllable()); |
| 607 EXPECT_FALSE(IsSuspended()); | 607 EXPECT_FALSE(IsSuspended()); |
| 608 | 608 |
| 609 RemovePlayer(media_session_observer.get(), 1); | 609 RemovePlayer(media_session_observer.get(), 1); |
| 610 | 610 |
| 611 EXPECT_FALSE(IsControllable()); | 611 EXPECT_FALSE(IsControllable()); |
| 612 EXPECT_TRUE(IsSuspended()); | 612 EXPECT_TRUE(IsSuspended()); |
| 613 } | 613 } |
| 614 | 614 |
| 615 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 615 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 616 ControlsHideWhenAllThePlayersAreRemoved) { | 616 ControlsHideWhenAllThePlayersAreRemoved) { |
| 617 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 617 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 618 MediaSessionStateChanged(true, false, testing::_)); | 618 MediaSessionStateChanged(true, false)); |
| 619 EXPECT_CALL(*mock_web_contents_observer(), | 619 EXPECT_CALL(*mock_web_contents_observer(), |
| 620 MediaSessionStateChanged(false, true, testing::_)) | 620 MediaSessionStateChanged(false, true)) |
| 621 .After(showControls); | 621 .After(showControls); |
| 622 | 622 |
| 623 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 623 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 624 new MockMediaSessionObserver); | 624 new MockMediaSessionObserver); |
| 625 | 625 |
| 626 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 626 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 627 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 627 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 628 | 628 |
| 629 RemovePlayers(media_session_observer.get()); | 629 RemovePlayers(media_session_observer.get()); |
| 630 | 630 |
| 631 EXPECT_FALSE(IsControllable()); | 631 EXPECT_FALSE(IsControllable()); |
| 632 EXPECT_TRUE(IsSuspended()); | 632 EXPECT_TRUE(IsSuspended()); |
| 633 } | 633 } |
| 634 | 634 |
| 635 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 635 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 636 ControlsNotHideWhenTheLastPlayerIsPaused) { | 636 ControlsNotHideWhenTheLastPlayerIsPaused) { |
| 637 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 637 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 638 MediaSessionStateChanged(true, false, testing::_)); | 638 MediaSessionStateChanged(true, false)); |
| 639 EXPECT_CALL(*mock_web_contents_observer(), | 639 EXPECT_CALL(*mock_web_contents_observer(), |
| 640 MediaSessionStateChanged(true, true, testing::_)) | 640 MediaSessionStateChanged(true, true)) |
| 641 .After(showControls); | 641 .After(showControls); |
| 642 | 642 |
| 643 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 643 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 644 new MockMediaSessionObserver); | 644 new MockMediaSessionObserver); |
| 645 | 645 |
| 646 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 646 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 647 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 647 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 648 | 648 |
| 649 OnPlayerPaused(media_session_observer.get(), 0); | 649 OnPlayerPaused(media_session_observer.get(), 0); |
| 650 | 650 |
| 651 EXPECT_TRUE(IsControllable()); | 651 EXPECT_TRUE(IsControllable()); |
| 652 EXPECT_FALSE(IsSuspended()); | 652 EXPECT_FALSE(IsSuspended()); |
| 653 | 653 |
| 654 OnPlayerPaused(media_session_observer.get(), 1); | 654 OnPlayerPaused(media_session_observer.get(), 1); |
| 655 | 655 |
| 656 EXPECT_TRUE(IsControllable()); | 656 EXPECT_TRUE(IsControllable()); |
| 657 EXPECT_TRUE(IsSuspended()); | 657 EXPECT_TRUE(IsSuspended()); |
| 658 } | 658 } |
| 659 | 659 |
| 660 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 660 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 661 SuspendTemporaryUpdatesControls) { | 661 SuspendTemporaryUpdatesControls) { |
| 662 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 662 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 663 MediaSessionStateChanged(true, false, testing::_)); | 663 MediaSessionStateChanged(true, false)); |
| 664 EXPECT_CALL(*mock_web_contents_observer(), | 664 EXPECT_CALL(*mock_web_contents_observer(), |
| 665 MediaSessionStateChanged(true, true, testing::_)) | 665 MediaSessionStateChanged(true, true)) |
| 666 .After(showControls); | 666 .After(showControls); |
| 667 | 667 |
| 668 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 668 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 669 new MockMediaSessionObserver); | 669 new MockMediaSessionObserver); |
| 670 | 670 |
| 671 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 671 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 672 | 672 |
| 673 SystemSuspend(true); | 673 SystemSuspend(true); |
| 674 | 674 |
| 675 EXPECT_TRUE(IsControllable()); | 675 EXPECT_TRUE(IsControllable()); |
| 676 EXPECT_TRUE(IsSuspended()); | 676 EXPECT_TRUE(IsSuspended()); |
| 677 } | 677 } |
| 678 | 678 |
| 679 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsUpdatedWhenResumed) { | 679 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsUpdatedWhenResumed) { |
| 680 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 680 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 681 MediaSessionStateChanged(true, false, testing::_)); | 681 MediaSessionStateChanged(true, false)); |
| 682 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 682 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 683 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 683 MediaSessionStateChanged(true, true)).After(showControls); |
| 684 EXPECT_CALL(*mock_web_contents_observer(), | 684 EXPECT_CALL(*mock_web_contents_observer(), |
| 685 MediaSessionStateChanged(true, false, testing::_)) | 685 MediaSessionStateChanged(true, false)) |
| 686 .After(pauseControls); | 686 .After(pauseControls); |
| 687 | 687 |
| 688 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 688 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 689 new MockMediaSessionObserver); | 689 new MockMediaSessionObserver); |
| 690 | 690 |
| 691 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 691 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 692 SystemSuspend(true); | 692 SystemSuspend(true); |
| 693 SystemResume(); | 693 SystemResume(); |
| 694 | 694 |
| 695 EXPECT_TRUE(IsControllable()); | 695 EXPECT_TRUE(IsControllable()); |
| 696 EXPECT_FALSE(IsSuspended()); | 696 EXPECT_FALSE(IsSuspended()); |
| 697 } | 697 } |
| 698 | 698 |
| 699 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 699 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 700 ControlsHideWhenSessionSuspendedPermanently) { | 700 ControlsHideWhenSessionSuspendedPermanently) { |
| 701 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 701 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 702 MediaSessionStateChanged(true, false, testing::_)); | 702 MediaSessionStateChanged(true, false)); |
| 703 EXPECT_CALL(*mock_web_contents_observer(), | 703 EXPECT_CALL(*mock_web_contents_observer(), |
| 704 MediaSessionStateChanged(false, true, testing::_)) | 704 MediaSessionStateChanged(false, true)) |
| 705 .After(showControls); | 705 .After(showControls); |
| 706 | 706 |
| 707 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 707 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 708 new MockMediaSessionObserver); | 708 new MockMediaSessionObserver); |
| 709 | 709 |
| 710 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 710 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 711 | 711 |
| 712 SystemSuspend(false); | 712 SystemSuspend(false); |
| 713 | 713 |
| 714 EXPECT_FALSE(IsControllable()); | 714 EXPECT_FALSE(IsControllable()); |
| 715 EXPECT_TRUE(IsSuspended()); | 715 EXPECT_TRUE(IsSuspended()); |
| 716 } | 716 } |
| 717 | 717 |
| 718 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 718 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 719 ConstrolsHideWhenSessionStops) { | 719 ConstrolsHideWhenSessionStops) { |
| 720 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 720 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 721 MediaSessionStateChanged(true, false, testing::_)); | 721 MediaSessionStateChanged(true, false)); |
| 722 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 722 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 723 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 723 MediaSessionStateChanged(true, true)).After(showControls); |
| 724 EXPECT_CALL(*mock_web_contents_observer(), | 724 EXPECT_CALL(*mock_web_contents_observer(), |
| 725 MediaSessionStateChanged(false, true, testing::_)) | 725 MediaSessionStateChanged(false, true)) |
| 726 .After(pauseControls); | 726 .After(pauseControls); |
| 727 | 727 |
| 728 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 728 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 729 new MockMediaSessionObserver); | 729 new MockMediaSessionObserver); |
| 730 | 730 |
| 731 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 731 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 732 | 732 |
| 733 media_session_->Stop(MediaSession::SuspendType::UI); | 733 media_session_->Stop(MediaSession::SuspendType::UI); |
| 734 | 734 |
| 735 EXPECT_FALSE(IsControllable()); | 735 EXPECT_FALSE(IsControllable()); |
| 736 EXPECT_TRUE(IsSuspended()); | 736 EXPECT_TRUE(IsSuspended()); |
| 737 } | 737 } |
| 738 | 738 |
| 739 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 739 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 740 ControlsHideWhenSessionChangesFromContentToTransient) { | 740 ControlsHideWhenSessionChangesFromContentToTransient) { |
| 741 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 741 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 742 MediaSessionStateChanged(true, false, testing::_)); | 742 MediaSessionStateChanged(true, false)); |
| 743 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 743 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 744 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 744 MediaSessionStateChanged(true, true)).After(showControls); |
| 745 EXPECT_CALL(*mock_web_contents_observer(), | 745 EXPECT_CALL(*mock_web_contents_observer(), |
| 746 MediaSessionStateChanged(false, false, testing::_)) | 746 MediaSessionStateChanged(false, false)) |
| 747 .After(pauseControls); | 747 .After(pauseControls); |
| 748 | 748 |
| 749 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 749 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 750 new MockMediaSessionObserver); | 750 new MockMediaSessionObserver); |
| 751 | 751 |
| 752 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 752 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 753 SystemSuspend(true); | 753 SystemSuspend(true); |
| 754 | 754 |
| 755 // This should reset the session and change it to a transient, so | 755 // This should reset the session and change it to a transient, so |
| 756 // hide the controls. | 756 // hide the controls. |
| 757 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); | 757 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
| 758 | 758 |
| 759 EXPECT_FALSE(IsControllable()); | 759 EXPECT_FALSE(IsControllable()); |
| 760 EXPECT_FALSE(IsSuspended()); | 760 EXPECT_FALSE(IsSuspended()); |
| 761 } | 761 } |
| 762 | 762 |
| 763 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 763 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 764 ControlsUpdatedWhenNewPlayerResetsSession) { | 764 ControlsUpdatedWhenNewPlayerResetsSession) { |
| 765 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 765 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 766 MediaSessionStateChanged(true, false, testing::_)); | 766 MediaSessionStateChanged(true, false)); |
| 767 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 767 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 768 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 768 MediaSessionStateChanged(true, true)).After(showControls); |
| 769 EXPECT_CALL(*mock_web_contents_observer(), | 769 EXPECT_CALL(*mock_web_contents_observer(), |
| 770 MediaSessionStateChanged(true, false, testing::_)) | 770 MediaSessionStateChanged(true, false)) |
| 771 .After(pauseControls); | 771 .After(pauseControls); |
| 772 | 772 |
| 773 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 773 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 774 new MockMediaSessionObserver); | 774 new MockMediaSessionObserver); |
| 775 | 775 |
| 776 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 776 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 777 SystemSuspend(true); | 777 SystemSuspend(true); |
| 778 | 778 |
| 779 // This should reset the session and update the controls. | 779 // This should reset the session and update the controls. |
| 780 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 780 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 781 | 781 |
| 782 EXPECT_TRUE(IsControllable()); | 782 EXPECT_TRUE(IsControllable()); |
| 783 EXPECT_FALSE(IsSuspended()); | 783 EXPECT_FALSE(IsSuspended()); |
| 784 } | 784 } |
| 785 | 785 |
| 786 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 786 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 787 ControlsResumedWhenPlayerIsResumed) { | 787 ControlsResumedWhenPlayerIsResumed) { |
| 788 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 788 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 789 MediaSessionStateChanged(true, false, testing::_)); | 789 MediaSessionStateChanged(true, false)); |
| 790 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 790 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 791 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 791 MediaSessionStateChanged(true, true)).After(showControls); |
| 792 EXPECT_CALL(*mock_web_contents_observer(), | 792 EXPECT_CALL(*mock_web_contents_observer(), |
| 793 MediaSessionStateChanged(true, false, testing::_)) | 793 MediaSessionStateChanged(true, false)) |
| 794 .After(pauseControls); | 794 .After(pauseControls); |
| 795 | 795 |
| 796 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 796 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 797 new MockMediaSessionObserver); | 797 new MockMediaSessionObserver); |
| 798 | 798 |
| 799 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 799 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 800 SystemSuspend(true); | 800 SystemSuspend(true); |
| 801 | 801 |
| 802 // This should resume the session and update the controls. | 802 // This should resume the session and update the controls. |
| 803 AddPlayer(media_session_observer.get(), 0, MediaSession::Type::Content); | 803 AddPlayer(media_session_observer.get(), 0, MediaSession::Type::Content); |
| 804 | 804 |
| 805 EXPECT_TRUE(IsControllable()); | 805 EXPECT_TRUE(IsControllable()); |
| 806 EXPECT_FALSE(IsSuspended()); | 806 EXPECT_FALSE(IsSuspended()); |
| 807 } | 807 } |
| 808 | 808 |
| 809 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 809 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 810 ControlsUpdatedDueToResumeSessionAction) { | 810 ControlsUpdatedDueToResumeSessionAction) { |
| 811 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 811 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 812 MediaSessionStateChanged(true, false, testing::_)); | 812 MediaSessionStateChanged(true, false)); |
| 813 EXPECT_CALL(*mock_web_contents_observer(), | 813 EXPECT_CALL(*mock_web_contents_observer(), |
| 814 MediaSessionStateChanged(true, true, testing::_)) | 814 MediaSessionStateChanged(true, true)) |
| 815 .After(showControls); | 815 .After(showControls); |
| 816 | 816 |
| 817 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 817 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 818 new MockMediaSessionObserver); | 818 new MockMediaSessionObserver); |
| 819 | 819 |
| 820 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 820 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 821 UISuspend(); | 821 UISuspend(); |
| 822 | 822 |
| 823 EXPECT_TRUE(IsControllable()); | 823 EXPECT_TRUE(IsControllable()); |
| 824 EXPECT_TRUE(IsSuspended()); | 824 EXPECT_TRUE(IsSuspended()); |
| 825 } | 825 } |
| 826 | 826 |
| 827 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 827 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 828 ControlsUpdatedDueToSuspendSessionAction) { | 828 ControlsUpdatedDueToSuspendSessionAction) { |
| 829 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 829 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 830 MediaSessionStateChanged(true, false, testing::_)); | 830 MediaSessionStateChanged(true, false)); |
| 831 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 831 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 832 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 832 MediaSessionStateChanged(true, true)).After(showControls); |
| 833 EXPECT_CALL(*mock_web_contents_observer(), | 833 EXPECT_CALL(*mock_web_contents_observer(), |
| 834 MediaSessionStateChanged(true, false, testing::_)) | 834 MediaSessionStateChanged(true, false)) |
| 835 .After(pauseControls); | 835 .After(pauseControls); |
| 836 | 836 |
| 837 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 837 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 838 new MockMediaSessionObserver); | 838 new MockMediaSessionObserver); |
| 839 | 839 |
| 840 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 840 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 841 UISuspend(); | 841 UISuspend(); |
| 842 UIResume(); | 842 UIResume(); |
| 843 | 843 |
| 844 EXPECT_TRUE(IsControllable()); | 844 EXPECT_TRUE(IsControllable()); |
| (...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1194 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1194 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1195 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1195 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1196 media_session_->Stop(MediaSession::SuspendType::UI); | 1196 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1197 | 1197 |
| 1198 std::unique_ptr<base::HistogramSamples> samples( | 1198 std::unique_ptr<base::HistogramSamples> samples( |
| 1199 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1199 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1200 EXPECT_EQ(2, samples->TotalCount()); | 1200 EXPECT_EQ(2, samples->TotalCount()); |
| 1201 EXPECT_EQ(1, samples->GetCount(1000)); | 1201 EXPECT_EQ(1, samples->GetCount(1000)); |
| 1202 EXPECT_EQ(1, samples->GetCount(10000)); | 1202 EXPECT_EQ(1, samples->GetCount(10000)); |
| 1203 } | 1203 } |
| OLD | NEW |