| 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.h" | 5 #include "content/browser/media/session/media_session.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <list> | 9 #include <list> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 | 45 |
| 46 void AbandonAudioFocus() override { | 46 void AbandonAudioFocus() override { |
| 47 } | 47 } |
| 48 }; | 48 }; |
| 49 | 49 |
| 50 class MockWebContentsObserver : public WebContentsObserver { | 50 class MockWebContentsObserver : public WebContentsObserver { |
| 51 public: | 51 public: |
| 52 MockWebContentsObserver(WebContents* web_contents) | 52 MockWebContentsObserver(WebContents* web_contents) |
| 53 : WebContentsObserver(web_contents) {} | 53 : WebContentsObserver(web_contents) {} |
| 54 | 54 |
| 55 MOCK_METHOD3(MediaSessionStateChanged, | 55 MOCK_METHOD2(MediaSessionStateChanged, |
| 56 void(bool is_controllable, bool is_suspended, | 56 void(bool is_controllable, bool is_suspended)); |
| 57 const base::Optional<content::MediaMetadata>& metadata)); | |
| 58 }; | 57 }; |
| 59 | 58 |
| 60 } // namespace | 59 } // namespace |
| 61 | 60 |
| 62 class MediaSessionBrowserTest : public content::ContentBrowserTest { | 61 class MediaSessionBrowserTest : public content::ContentBrowserTest { |
| 63 protected: | 62 protected: |
| 64 MediaSessionBrowserTest() = default; | 63 MediaSessionBrowserTest() = default; |
| 65 | 64 |
| 66 void SetUpOnMainThread() override { | 65 void SetUpOnMainThread() override { |
| 67 ContentBrowserTest::SetUpOnMainThread(); | 66 ContentBrowserTest::SetUpOnMainThread(); |
| (...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 581 EXPECT_TRUE(media_session_observer->IsPlaying(1)); | 580 EXPECT_TRUE(media_session_observer->IsPlaying(1)); |
| 582 EXPECT_TRUE(media_session_observer->IsPlaying(2)); | 581 EXPECT_TRUE(media_session_observer->IsPlaying(2)); |
| 583 EXPECT_TRUE(media_session_observer->IsPlaying(3)); | 582 EXPECT_TRUE(media_session_observer->IsPlaying(3)); |
| 584 | 583 |
| 585 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::Gain, | 584 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::Gain, |
| 586 GetSessionAudioFocusType()); | 585 GetSessionAudioFocusType()); |
| 587 } | 586 } |
| 588 | 587 |
| 589 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShowForContent) { | 588 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShowForContent) { |
| 590 EXPECT_CALL(*mock_web_contents_observer(), | 589 EXPECT_CALL(*mock_web_contents_observer(), |
| 591 MediaSessionStateChanged(true, false, testing::_)); | 590 MediaSessionStateChanged(true, false)); |
| 592 | 591 |
| 593 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 592 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 594 new MockMediaSessionObserver); | 593 new MockMediaSessionObserver); |
| 595 | 594 |
| 596 // Starting a player with a content type should show the media controls. | 595 // Starting a player with a content type should show the media controls. |
| 597 StartNewPlayer(media_session_observer.get(), | 596 StartNewPlayer(media_session_observer.get(), |
| 598 media::MediaContentType::Persistent); | 597 media::MediaContentType::Persistent); |
| 599 | 598 |
| 600 EXPECT_TRUE(IsControllable()); | 599 EXPECT_TRUE(IsControllable()); |
| 601 EXPECT_FALSE(IsSuspended()); | 600 EXPECT_FALSE(IsSuspended()); |
| 602 } | 601 } |
| 603 | 602 |
| 604 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsNoShowForTransient) { | 603 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsNoShowForTransient) { |
| 605 EXPECT_CALL(*mock_web_contents_observer(), | 604 EXPECT_CALL(*mock_web_contents_observer(), |
| 606 MediaSessionStateChanged(false, false, testing::_)); | 605 MediaSessionStateChanged(false, false)); |
| 607 | 606 |
| 608 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 607 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 609 new MockMediaSessionObserver); | 608 new MockMediaSessionObserver); |
| 610 | 609 |
| 611 // Starting a player with a transient type should not show the media controls. | 610 // Starting a player with a transient type should not show the media controls. |
| 612 StartNewPlayer(media_session_observer.get(), | 611 StartNewPlayer(media_session_observer.get(), |
| 613 media::MediaContentType::Transient); | 612 media::MediaContentType::Transient); |
| 614 | 613 |
| 615 EXPECT_FALSE(IsControllable()); | 614 EXPECT_FALSE(IsControllable()); |
| 616 EXPECT_FALSE(IsSuspended()); | 615 EXPECT_FALSE(IsSuspended()); |
| 617 } | 616 } |
| 618 | 617 |
| 619 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsHideWhenStopped) { | 618 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsHideWhenStopped) { |
| 620 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 619 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 621 MediaSessionStateChanged(true, false, testing::_)); | 620 MediaSessionStateChanged(true, false)); |
| 622 EXPECT_CALL(*mock_web_contents_observer(), | 621 EXPECT_CALL(*mock_web_contents_observer(), |
| 623 MediaSessionStateChanged(false, true, testing::_)) | 622 MediaSessionStateChanged(false, true)) |
| 624 .After(showControls); | 623 .After(showControls); |
| 625 | 624 |
| 626 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 625 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 627 new MockMediaSessionObserver); | 626 new MockMediaSessionObserver); |
| 628 | 627 |
| 629 StartNewPlayer(media_session_observer.get(), | 628 StartNewPlayer(media_session_observer.get(), |
| 630 media::MediaContentType::Persistent); | 629 media::MediaContentType::Persistent); |
| 631 | 630 |
| 632 RemovePlayers(media_session_observer.get()); | 631 RemovePlayers(media_session_observer.get()); |
| 633 | 632 |
| 634 EXPECT_FALSE(IsControllable()); | 633 EXPECT_FALSE(IsControllable()); |
| 635 EXPECT_TRUE(IsSuspended()); | 634 EXPECT_TRUE(IsSuspended()); |
| 636 } | 635 } |
| 637 | 636 |
| 638 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShownAcceptTransient) { | 637 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShownAcceptTransient) { |
| 639 EXPECT_CALL(*mock_web_contents_observer(), | 638 EXPECT_CALL(*mock_web_contents_observer(), |
| 640 MediaSessionStateChanged(true, false, testing::_)); | 639 MediaSessionStateChanged(true, false)); |
| 641 | 640 |
| 642 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 641 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 643 new MockMediaSessionObserver); | 642 new MockMediaSessionObserver); |
| 644 | 643 |
| 645 StartNewPlayer(media_session_observer.get(), | 644 StartNewPlayer(media_session_observer.get(), |
| 646 media::MediaContentType::Persistent); | 645 media::MediaContentType::Persistent); |
| 647 | 646 |
| 648 // Transient player join the session without affecting the controls. | 647 // Transient player join the session without affecting the controls. |
| 649 StartNewPlayer(media_session_observer.get(), | 648 StartNewPlayer(media_session_observer.get(), |
| 650 media::MediaContentType::Transient); | 649 media::MediaContentType::Transient); |
| 651 | 650 |
| 652 EXPECT_TRUE(IsControllable()); | 651 EXPECT_TRUE(IsControllable()); |
| 653 EXPECT_FALSE(IsSuspended()); | 652 EXPECT_FALSE(IsSuspended()); |
| 654 } | 653 } |
| 655 | 654 |
| 656 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 655 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 657 ControlsShownAfterContentAdded) { | 656 ControlsShownAfterContentAdded) { |
| 658 Expectation dontShowControls = EXPECT_CALL(*mock_web_contents_observer(), | 657 Expectation dontShowControls = EXPECT_CALL( |
| 659 MediaSessionStateChanged(false, false, testing::_)); | 658 *mock_web_contents_observer(), MediaSessionStateChanged(false, false)); |
| 660 EXPECT_CALL(*mock_web_contents_observer(), | 659 EXPECT_CALL(*mock_web_contents_observer(), |
| 661 MediaSessionStateChanged(true, false, testing::_)) | 660 MediaSessionStateChanged(true, false)) |
| 662 .After(dontShowControls); | 661 .After(dontShowControls); |
| 663 | 662 |
| 664 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 663 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 665 new MockMediaSessionObserver); | 664 new MockMediaSessionObserver); |
| 666 | 665 |
| 667 StartNewPlayer(media_session_observer.get(), | 666 StartNewPlayer(media_session_observer.get(), |
| 668 media::MediaContentType::Transient); | 667 media::MediaContentType::Transient); |
| 669 | 668 |
| 670 // The controls are shown when the content player is added. | 669 // The controls are shown when the content player is added. |
| 671 StartNewPlayer(media_session_observer.get(), | 670 StartNewPlayer(media_session_observer.get(), |
| 672 media::MediaContentType::Persistent); | 671 media::MediaContentType::Persistent); |
| 673 | 672 |
| 674 EXPECT_TRUE(IsControllable()); | 673 EXPECT_TRUE(IsControllable()); |
| 675 EXPECT_FALSE(IsSuspended()); | 674 EXPECT_FALSE(IsSuspended()); |
| 676 } | 675 } |
| 677 | 676 |
| 678 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 677 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 679 ControlsStayIfOnlyOnePlayerHasBeenPaused) { | 678 ControlsStayIfOnlyOnePlayerHasBeenPaused) { |
| 680 EXPECT_CALL(*mock_web_contents_observer(), | 679 EXPECT_CALL(*mock_web_contents_observer(), |
| 681 MediaSessionStateChanged(true, false, testing::_)); | 680 MediaSessionStateChanged(true, false)); |
| 682 | 681 |
| 683 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 682 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 684 new MockMediaSessionObserver); | 683 new MockMediaSessionObserver); |
| 685 | 684 |
| 686 StartNewPlayer(media_session_observer.get(), | 685 StartNewPlayer(media_session_observer.get(), |
| 687 media::MediaContentType::Persistent); | 686 media::MediaContentType::Persistent); |
| 688 StartNewPlayer(media_session_observer.get(), | 687 StartNewPlayer(media_session_observer.get(), |
| 689 media::MediaContentType::Transient); | 688 media::MediaContentType::Transient); |
| 690 | 689 |
| 691 // Removing only content player doesn't hide the controls since the session | 690 // Removing only content player doesn't hide the controls since the session |
| 692 // is still active. | 691 // is still active. |
| 693 RemovePlayer(media_session_observer.get(), 0); | 692 RemovePlayer(media_session_observer.get(), 0); |
| 694 | 693 |
| 695 EXPECT_TRUE(IsControllable()); | 694 EXPECT_TRUE(IsControllable()); |
| 696 EXPECT_FALSE(IsSuspended()); | 695 EXPECT_FALSE(IsSuspended()); |
| 697 } | 696 } |
| 698 | 697 |
| 699 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 698 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 700 ControlsHideWhenTheLastPlayerIsRemoved) { | 699 ControlsHideWhenTheLastPlayerIsRemoved) { |
| 701 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 700 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 702 MediaSessionStateChanged(true, false, testing::_)); | 701 MediaSessionStateChanged(true, false)); |
| 703 EXPECT_CALL(*mock_web_contents_observer(), | 702 EXPECT_CALL(*mock_web_contents_observer(), |
| 704 MediaSessionStateChanged(false, true, testing::_)) | 703 MediaSessionStateChanged(false, true)) |
| 705 .After(showControls); | 704 .After(showControls); |
| 706 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 705 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 707 new MockMediaSessionObserver); | 706 new MockMediaSessionObserver); |
| 708 | 707 |
| 709 StartNewPlayer(media_session_observer.get(), | 708 StartNewPlayer(media_session_observer.get(), |
| 710 media::MediaContentType::Persistent); | 709 media::MediaContentType::Persistent); |
| 711 StartNewPlayer(media_session_observer.get(), | 710 StartNewPlayer(media_session_observer.get(), |
| 712 media::MediaContentType::Persistent); | 711 media::MediaContentType::Persistent); |
| 713 | 712 |
| 714 RemovePlayer(media_session_observer.get(), 0); | 713 RemovePlayer(media_session_observer.get(), 0); |
| 715 | 714 |
| 716 EXPECT_TRUE(IsControllable()); | 715 EXPECT_TRUE(IsControllable()); |
| 717 EXPECT_FALSE(IsSuspended()); | 716 EXPECT_FALSE(IsSuspended()); |
| 718 | 717 |
| 719 RemovePlayer(media_session_observer.get(), 1); | 718 RemovePlayer(media_session_observer.get(), 1); |
| 720 | 719 |
| 721 EXPECT_FALSE(IsControllable()); | 720 EXPECT_FALSE(IsControllable()); |
| 722 EXPECT_TRUE(IsSuspended()); | 721 EXPECT_TRUE(IsSuspended()); |
| 723 } | 722 } |
| 724 | 723 |
| 725 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 724 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 726 ControlsHideWhenAllThePlayersAreRemoved) { | 725 ControlsHideWhenAllThePlayersAreRemoved) { |
| 727 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 726 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 728 MediaSessionStateChanged(true, false, testing::_)); | 727 MediaSessionStateChanged(true, false)); |
| 729 EXPECT_CALL(*mock_web_contents_observer(), | 728 EXPECT_CALL(*mock_web_contents_observer(), |
| 730 MediaSessionStateChanged(false, true, testing::_)) | 729 MediaSessionStateChanged(false, true)) |
| 731 .After(showControls); | 730 .After(showControls); |
| 732 | 731 |
| 733 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 732 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 734 new MockMediaSessionObserver); | 733 new MockMediaSessionObserver); |
| 735 | 734 |
| 736 StartNewPlayer(media_session_observer.get(), | 735 StartNewPlayer(media_session_observer.get(), |
| 737 media::MediaContentType::Persistent); | 736 media::MediaContentType::Persistent); |
| 738 StartNewPlayer(media_session_observer.get(), | 737 StartNewPlayer(media_session_observer.get(), |
| 739 media::MediaContentType::Persistent); | 738 media::MediaContentType::Persistent); |
| 740 | 739 |
| 741 RemovePlayers(media_session_observer.get()); | 740 RemovePlayers(media_session_observer.get()); |
| 742 | 741 |
| 743 EXPECT_FALSE(IsControllable()); | 742 EXPECT_FALSE(IsControllable()); |
| 744 EXPECT_TRUE(IsSuspended()); | 743 EXPECT_TRUE(IsSuspended()); |
| 745 } | 744 } |
| 746 | 745 |
| 747 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 746 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 748 ControlsNotHideWhenTheLastPlayerIsPaused) { | 747 ControlsNotHideWhenTheLastPlayerIsPaused) { |
| 749 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 748 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 750 MediaSessionStateChanged(true, false, testing::_)); | 749 MediaSessionStateChanged(true, false)); |
| 751 EXPECT_CALL(*mock_web_contents_observer(), | 750 EXPECT_CALL(*mock_web_contents_observer(), |
| 752 MediaSessionStateChanged(true, true, testing::_)) | 751 MediaSessionStateChanged(true, true)) |
| 753 .After(showControls); | 752 .After(showControls); |
| 754 | 753 |
| 755 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 754 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 756 new MockMediaSessionObserver); | 755 new MockMediaSessionObserver); |
| 757 | 756 |
| 758 StartNewPlayer(media_session_observer.get(), | 757 StartNewPlayer(media_session_observer.get(), |
| 759 media::MediaContentType::Persistent); | 758 media::MediaContentType::Persistent); |
| 760 StartNewPlayer(media_session_observer.get(), | 759 StartNewPlayer(media_session_observer.get(), |
| 761 media::MediaContentType::Persistent); | 760 media::MediaContentType::Persistent); |
| 762 | 761 |
| 763 OnPlayerPaused(media_session_observer.get(), 0); | 762 OnPlayerPaused(media_session_observer.get(), 0); |
| 764 | 763 |
| 765 EXPECT_TRUE(IsControllable()); | 764 EXPECT_TRUE(IsControllable()); |
| 766 EXPECT_FALSE(IsSuspended()); | 765 EXPECT_FALSE(IsSuspended()); |
| 767 | 766 |
| 768 OnPlayerPaused(media_session_observer.get(), 1); | 767 OnPlayerPaused(media_session_observer.get(), 1); |
| 769 | 768 |
| 770 EXPECT_TRUE(IsControllable()); | 769 EXPECT_TRUE(IsControllable()); |
| 771 EXPECT_TRUE(IsSuspended()); | 770 EXPECT_TRUE(IsSuspended()); |
| 772 } | 771 } |
| 773 | 772 |
| 774 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 773 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 775 SuspendTemporaryUpdatesControls) { | 774 SuspendTemporaryUpdatesControls) { |
| 776 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 775 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 777 MediaSessionStateChanged(true, false, testing::_)); | 776 MediaSessionStateChanged(true, false)); |
| 778 EXPECT_CALL(*mock_web_contents_observer(), | 777 EXPECT_CALL(*mock_web_contents_observer(), |
| 779 MediaSessionStateChanged(true, true, testing::_)) | 778 MediaSessionStateChanged(true, true)) |
| 780 .After(showControls); | 779 .After(showControls); |
| 781 | 780 |
| 782 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 781 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 783 new MockMediaSessionObserver); | 782 new MockMediaSessionObserver); |
| 784 | 783 |
| 785 StartNewPlayer(media_session_observer.get(), | 784 StartNewPlayer(media_session_observer.get(), |
| 786 media::MediaContentType::Persistent); | 785 media::MediaContentType::Persistent); |
| 787 | 786 |
| 788 SystemSuspend(true); | 787 SystemSuspend(true); |
| 789 | 788 |
| 790 EXPECT_TRUE(IsControllable()); | 789 EXPECT_TRUE(IsControllable()); |
| 791 EXPECT_TRUE(IsSuspended()); | 790 EXPECT_TRUE(IsSuspended()); |
| 792 } | 791 } |
| 793 | 792 |
| 794 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsUpdatedWhenResumed) { | 793 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsUpdatedWhenResumed) { |
| 795 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 794 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 796 MediaSessionStateChanged(true, false, testing::_)); | 795 MediaSessionStateChanged(true, false)); |
| 797 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 796 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 798 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 797 MediaSessionStateChanged(true, true)) |
| 798 .After(showControls); |
| 799 EXPECT_CALL(*mock_web_contents_observer(), | 799 EXPECT_CALL(*mock_web_contents_observer(), |
| 800 MediaSessionStateChanged(true, false, testing::_)) | 800 MediaSessionStateChanged(true, false)) |
| 801 .After(pauseControls); | 801 .After(pauseControls); |
| 802 | 802 |
| 803 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 803 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 804 new MockMediaSessionObserver); | 804 new MockMediaSessionObserver); |
| 805 | 805 |
| 806 StartNewPlayer(media_session_observer.get(), | 806 StartNewPlayer(media_session_observer.get(), |
| 807 media::MediaContentType::Persistent); | 807 media::MediaContentType::Persistent); |
| 808 SystemSuspend(true); | 808 SystemSuspend(true); |
| 809 SystemResume(); | 809 SystemResume(); |
| 810 | 810 |
| 811 EXPECT_TRUE(IsControllable()); | 811 EXPECT_TRUE(IsControllable()); |
| 812 EXPECT_FALSE(IsSuspended()); | 812 EXPECT_FALSE(IsSuspended()); |
| 813 } | 813 } |
| 814 | 814 |
| 815 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 815 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 816 ControlsHideWhenSessionSuspendedPermanently) { | 816 ControlsHideWhenSessionSuspendedPermanently) { |
| 817 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 817 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 818 MediaSessionStateChanged(true, false, testing::_)); | 818 MediaSessionStateChanged(true, false)); |
| 819 EXPECT_CALL(*mock_web_contents_observer(), | 819 EXPECT_CALL(*mock_web_contents_observer(), |
| 820 MediaSessionStateChanged(false, true, testing::_)) | 820 MediaSessionStateChanged(false, true)) |
| 821 .After(showControls); | 821 .After(showControls); |
| 822 | 822 |
| 823 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 823 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 824 new MockMediaSessionObserver); | 824 new MockMediaSessionObserver); |
| 825 | 825 |
| 826 StartNewPlayer(media_session_observer.get(), | 826 StartNewPlayer(media_session_observer.get(), |
| 827 media::MediaContentType::Persistent); | 827 media::MediaContentType::Persistent); |
| 828 | 828 |
| 829 SystemSuspend(false); | 829 SystemSuspend(false); |
| 830 | 830 |
| 831 EXPECT_FALSE(IsControllable()); | 831 EXPECT_FALSE(IsControllable()); |
| 832 EXPECT_TRUE(IsSuspended()); | 832 EXPECT_TRUE(IsSuspended()); |
| 833 } | 833 } |
| 834 | 834 |
| 835 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 835 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 836 ConstrolsHideWhenSessionStops) { | 836 ConstrolsHideWhenSessionStops) { |
| 837 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 837 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 838 MediaSessionStateChanged(true, false, testing::_)); | 838 MediaSessionStateChanged(true, false)); |
| 839 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 839 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 840 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 840 MediaSessionStateChanged(true, true)) |
| 841 .After(showControls); |
| 841 EXPECT_CALL(*mock_web_contents_observer(), | 842 EXPECT_CALL(*mock_web_contents_observer(), |
| 842 MediaSessionStateChanged(false, true, testing::_)) | 843 MediaSessionStateChanged(false, true)) |
| 843 .After(pauseControls); | 844 .After(pauseControls); |
| 844 | 845 |
| 845 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 846 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 846 new MockMediaSessionObserver); | 847 new MockMediaSessionObserver); |
| 847 | 848 |
| 848 StartNewPlayer(media_session_observer.get(), | 849 StartNewPlayer(media_session_observer.get(), |
| 849 media::MediaContentType::Persistent); | 850 media::MediaContentType::Persistent); |
| 850 | 851 |
| 851 media_session_->Stop(MediaSession::SuspendType::UI); | 852 media_session_->Stop(MediaSession::SuspendType::UI); |
| 852 | 853 |
| 853 EXPECT_FALSE(IsControllable()); | 854 EXPECT_FALSE(IsControllable()); |
| 854 EXPECT_TRUE(IsSuspended()); | 855 EXPECT_TRUE(IsSuspended()); |
| 855 } | 856 } |
| 856 | 857 |
| 857 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 858 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 858 ControlsHideWhenSessionChangesFromContentToTransient) { | 859 ControlsHideWhenSessionChangesFromContentToTransient) { |
| 859 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 860 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 860 MediaSessionStateChanged(true, false, testing::_)); | 861 MediaSessionStateChanged(true, false)); |
| 861 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 862 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 862 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 863 MediaSessionStateChanged(true, true)) |
| 864 .After(showControls); |
| 863 EXPECT_CALL(*mock_web_contents_observer(), | 865 EXPECT_CALL(*mock_web_contents_observer(), |
| 864 MediaSessionStateChanged(false, false, testing::_)) | 866 MediaSessionStateChanged(false, false)) |
| 865 .After(pauseControls); | 867 .After(pauseControls); |
| 866 | 868 |
| 867 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 869 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 868 new MockMediaSessionObserver); | 870 new MockMediaSessionObserver); |
| 869 | 871 |
| 870 StartNewPlayer(media_session_observer.get(), | 872 StartNewPlayer(media_session_observer.get(), |
| 871 media::MediaContentType::Persistent); | 873 media::MediaContentType::Persistent); |
| 872 SystemSuspend(true); | 874 SystemSuspend(true); |
| 873 | 875 |
| 874 // This should reset the session and change it to a transient, so | 876 // This should reset the session and change it to a transient, so |
| 875 // hide the controls. | 877 // hide the controls. |
| 876 StartNewPlayer(media_session_observer.get(), | 878 StartNewPlayer(media_session_observer.get(), |
| 877 media::MediaContentType::Transient); | 879 media::MediaContentType::Transient); |
| 878 | 880 |
| 879 EXPECT_FALSE(IsControllable()); | 881 EXPECT_FALSE(IsControllable()); |
| 880 EXPECT_FALSE(IsSuspended()); | 882 EXPECT_FALSE(IsSuspended()); |
| 881 } | 883 } |
| 882 | 884 |
| 883 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 885 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 884 ControlsUpdatedWhenNewPlayerResetsSession) { | 886 ControlsUpdatedWhenNewPlayerResetsSession) { |
| 885 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 887 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 886 MediaSessionStateChanged(true, false, testing::_)); | 888 MediaSessionStateChanged(true, false)); |
| 887 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 889 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 888 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 890 MediaSessionStateChanged(true, true)) |
| 891 .After(showControls); |
| 889 EXPECT_CALL(*mock_web_contents_observer(), | 892 EXPECT_CALL(*mock_web_contents_observer(), |
| 890 MediaSessionStateChanged(true, false, testing::_)) | 893 MediaSessionStateChanged(true, false)) |
| 891 .After(pauseControls); | 894 .After(pauseControls); |
| 892 | 895 |
| 893 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 896 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 894 new MockMediaSessionObserver); | 897 new MockMediaSessionObserver); |
| 895 | 898 |
| 896 StartNewPlayer(media_session_observer.get(), | 899 StartNewPlayer(media_session_observer.get(), |
| 897 media::MediaContentType::Persistent); | 900 media::MediaContentType::Persistent); |
| 898 SystemSuspend(true); | 901 SystemSuspend(true); |
| 899 | 902 |
| 900 // This should reset the session and update the controls. | 903 // This should reset the session and update the controls. |
| 901 StartNewPlayer(media_session_observer.get(), | 904 StartNewPlayer(media_session_observer.get(), |
| 902 media::MediaContentType::Persistent); | 905 media::MediaContentType::Persistent); |
| 903 | 906 |
| 904 EXPECT_TRUE(IsControllable()); | 907 EXPECT_TRUE(IsControllable()); |
| 905 EXPECT_FALSE(IsSuspended()); | 908 EXPECT_FALSE(IsSuspended()); |
| 906 } | 909 } |
| 907 | 910 |
| 908 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 911 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 909 ControlsResumedWhenPlayerIsResumed) { | 912 ControlsResumedWhenPlayerIsResumed) { |
| 910 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 913 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 911 MediaSessionStateChanged(true, false, testing::_)); | 914 MediaSessionStateChanged(true, false)); |
| 912 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 915 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 913 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 916 MediaSessionStateChanged(true, true)) |
| 917 .After(showControls); |
| 914 EXPECT_CALL(*mock_web_contents_observer(), | 918 EXPECT_CALL(*mock_web_contents_observer(), |
| 915 MediaSessionStateChanged(true, false, testing::_)) | 919 MediaSessionStateChanged(true, false)) |
| 916 .After(pauseControls); | 920 .After(pauseControls); |
| 917 | 921 |
| 918 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 922 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 919 new MockMediaSessionObserver); | 923 new MockMediaSessionObserver); |
| 920 | 924 |
| 921 StartNewPlayer(media_session_observer.get(), | 925 StartNewPlayer(media_session_observer.get(), |
| 922 media::MediaContentType::Persistent); | 926 media::MediaContentType::Persistent); |
| 923 SystemSuspend(true); | 927 SystemSuspend(true); |
| 924 | 928 |
| 925 // This should resume the session and update the controls. | 929 // This should resume the session and update the controls. |
| 926 AddPlayer(media_session_observer.get(), 0, | 930 AddPlayer(media_session_observer.get(), 0, |
| 927 media::MediaContentType::Persistent); | 931 media::MediaContentType::Persistent); |
| 928 | 932 |
| 929 EXPECT_TRUE(IsControllable()); | 933 EXPECT_TRUE(IsControllable()); |
| 930 EXPECT_FALSE(IsSuspended()); | 934 EXPECT_FALSE(IsSuspended()); |
| 931 } | 935 } |
| 932 | 936 |
| 933 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 937 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 934 ControlsUpdatedDueToResumeSessionAction) { | 938 ControlsUpdatedDueToResumeSessionAction) { |
| 935 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 939 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 936 MediaSessionStateChanged(true, false, testing::_)); | 940 MediaSessionStateChanged(true, false)); |
| 937 EXPECT_CALL(*mock_web_contents_observer(), | 941 EXPECT_CALL(*mock_web_contents_observer(), |
| 938 MediaSessionStateChanged(true, true, testing::_)) | 942 MediaSessionStateChanged(true, true)) |
| 939 .After(showControls); | 943 .After(showControls); |
| 940 | 944 |
| 941 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 945 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 942 new MockMediaSessionObserver); | 946 new MockMediaSessionObserver); |
| 943 | 947 |
| 944 StartNewPlayer(media_session_observer.get(), | 948 StartNewPlayer(media_session_observer.get(), |
| 945 media::MediaContentType::Persistent); | 949 media::MediaContentType::Persistent); |
| 946 UISuspend(); | 950 UISuspend(); |
| 947 | 951 |
| 948 EXPECT_TRUE(IsControllable()); | 952 EXPECT_TRUE(IsControllable()); |
| 949 EXPECT_TRUE(IsSuspended()); | 953 EXPECT_TRUE(IsSuspended()); |
| 950 } | 954 } |
| 951 | 955 |
| 952 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 956 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 953 ControlsUpdatedDueToSuspendSessionAction) { | 957 ControlsUpdatedDueToSuspendSessionAction) { |
| 954 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 958 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 955 MediaSessionStateChanged(true, false, testing::_)); | 959 MediaSessionStateChanged(true, false)); |
| 956 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 960 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 957 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 961 MediaSessionStateChanged(true, true)) |
| 962 .After(showControls); |
| 958 EXPECT_CALL(*mock_web_contents_observer(), | 963 EXPECT_CALL(*mock_web_contents_observer(), |
| 959 MediaSessionStateChanged(true, false, testing::_)) | 964 MediaSessionStateChanged(true, false)) |
| 960 .After(pauseControls); | 965 .After(pauseControls); |
| 961 | 966 |
| 962 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 967 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 963 new MockMediaSessionObserver); | 968 new MockMediaSessionObserver); |
| 964 | 969 |
| 965 StartNewPlayer(media_session_observer.get(), | 970 StartNewPlayer(media_session_observer.get(), |
| 966 media::MediaContentType::Persistent); | 971 media::MediaContentType::Persistent); |
| 967 UISuspend(); | 972 UISuspend(); |
| 968 UIResume(); | 973 UIResume(); |
| 969 | 974 |
| (...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1338 media::MediaContentType::Persistent); | 1343 media::MediaContentType::Persistent); |
| 1339 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1344 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1340 media_session_->Stop(MediaSession::SuspendType::UI); | 1345 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1341 | 1346 |
| 1342 std::unique_ptr<base::HistogramSamples> samples( | 1347 std::unique_ptr<base::HistogramSamples> samples( |
| 1343 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1348 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1344 EXPECT_EQ(2, samples->TotalCount()); | 1349 EXPECT_EQ(2, samples->TotalCount()); |
| 1345 EXPECT_EQ(1, samples->GetCount(1000)); | 1350 EXPECT_EQ(1, samples->GetCount(1000)); |
| 1346 EXPECT_EQ(1, samples->GetCount(10000)); | 1351 EXPECT_EQ(1, samples->GetCount(10000)); |
| 1347 } | 1352 } |
| OLD | NEW |