| Index: content/browser/media/android/media_session_browsertest.cc
|
| diff --git a/content/browser/media/android/media_session_browsertest.cc b/content/browser/media/android/media_session_browsertest.cc
|
| index f613c6783dee5511742b30ccf61da74556ea586e..d0bf2e4d509d4165d21c67c943f08a8545678bee 100644
|
| --- a/content/browser/media/android/media_session_browsertest.cc
|
| +++ b/content/browser/media/android/media_session_browsertest.cc
|
| @@ -133,14 +133,17 @@ class MediaSessionBrowserTest : public content::ContentBrowserTest {
|
| mock_web_contents_observer_.reset(
|
| new MockWebContentsObserver(shell()->web_contents()));
|
| media_session_ = MediaSession::Get(shell()->web_contents());
|
| - media_session_->ResetJavaRefForTest();
|
| + // Reset |j_media_session_| ref to prevent calling the Java backend.
|
| + media_session_->j_media_session_.Reset();
|
| +
|
| ASSERT_TRUE(media_session_);
|
| }
|
|
|
| void TearDownOnMainThread() override {
|
| mock_web_contents_observer_.reset();
|
|
|
| - media_session_->RemoveAllPlayersForTest();
|
| + media_session_->players_.clear();
|
| + media_session_->AbandonSystemAudioFocusIfNeeded();
|
| media_session_ = nullptr;
|
|
|
| ContentBrowserTest::TearDownOnMainThread();
|
| @@ -175,10 +178,12 @@ class MediaSessionBrowserTest : public content::ContentBrowserTest {
|
| media_session_->OnPlayerPaused(media_session_observer, player_id);
|
| }
|
|
|
| - bool HasAudioFocus() { return media_session_->IsActiveForTest(); }
|
| + bool HasAudioFocus() const {
|
| + return media_session_->audio_focus_state_ == MediaSession::State::ACTIVE;
|
| + }
|
|
|
| - MediaSession::Type GetSessionType() {
|
| - return media_session_->audio_focus_type_for_test();
|
| + MediaSession::Type GetSessionType() const {
|
| + return media_session_->audio_focus_type_;
|
| }
|
|
|
| bool IsControllable() { return media_session_->IsControllable(); }
|
| @@ -215,7 +220,11 @@ class MediaSessionBrowserTest : public content::ContentBrowserTest {
|
| }
|
|
|
| MediaSessionUmaHelper* GetMediaSessionUMAHelper() {
|
| - return media_session_->uma_helper_for_test();
|
| + return &media_session_->uma_helper_;
|
| + }
|
| +
|
| + void SetSystemAudioFocusResponse(bool value) {
|
| + media_session_->default_system_audio_focus_response_ = value;
|
| }
|
|
|
| protected:
|
| @@ -334,6 +343,44 @@ IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| EXPECT_EQ(volume_multiplier, media_session_observer->GetVolumeMultiplier(2));
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| + VolumeMultiplierOnlySetOnSuccess) {
|
| + scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| + new MockMediaSessionObserver);
|
| +
|
| + // Start a new player and initialize it's volume multiplier to zero.
|
| + const int player_id = media_session_observer->StartNewPlayer();
|
| + media_session_observer->OnSetVolumeMultiplier(player_id, 0);
|
| +
|
| + // Force the MediaSession to deny the player request.
|
| + SetSystemAudioFocusResponse(false);
|
| +
|
| + // Verify AddPlayer fails and that the volume multiplier is unchanged.
|
| + EXPECT_FALSE(AddPlayer(media_session_observer.get(), player_id,
|
| + MediaSession::Type::Content));
|
| + EXPECT_DOUBLE_EQ(0, media_session_observer->GetVolumeMultiplier(player_id));
|
| +
|
| + // Repeat the test with transient type session.
|
| + EXPECT_FALSE(AddPlayer(media_session_observer.get(), player_id,
|
| + MediaSession::Type::Transient));
|
| + EXPECT_DOUBLE_EQ(0, media_session_observer->GetVolumeMultiplier(player_id));
|
| +
|
| + // Reset the MediaSession to allow the player request.
|
| + SetSystemAudioFocusResponse(true);
|
| + EXPECT_TRUE(AddPlayer(media_session_observer.get(), player_id,
|
| + MediaSession::Type::Content));
|
| + EXPECT_DOUBLE_EQ(1, media_session_observer->GetVolumeMultiplier(player_id));
|
| +
|
| + // Start a second player with a volume multiplier of zero then verify that it
|
| + // receives a multiplier update even when there's an existing active focus.
|
| + ASSERT_TRUE(HasAudioFocus());
|
| + const int player_id2 = media_session_observer->StartNewPlayer();
|
| + media_session_observer->OnSetVolumeMultiplier(player_id2, 0);
|
| + EXPECT_TRUE(AddPlayer(media_session_observer.get(), player_id2,
|
| + MediaSession::Type::Content));
|
| + EXPECT_DOUBLE_EQ(1, media_session_observer->GetVolumeMultiplier(player_id2));
|
| +}
|
| +
|
| IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, AudioFocusInitialState) {
|
| EXPECT_FALSE(HasAudioFocus());
|
| }
|
|
|