| Index: content/browser/media/session/audio_focus_manager_unittest.cc
|
| diff --git a/content/browser/media/session/audio_focus_manager_unittest.cc b/content/browser/media/session/audio_focus_manager_unittest.cc
|
| index 11bf186aa837b9dd44b11cda8fdcd1bd7767eef4..790db87d11571557e0437163f589ee4044ab17c1 100644
|
| --- a/content/browser/media/session/audio_focus_manager_unittest.cc
|
| +++ b/content/browser/media/session/audio_focus_manager_unittest.cc
|
| @@ -32,19 +32,42 @@ class AudioFocusManagerTest : public testing::Test {
|
| }
|
|
|
| WebContents* GetAudioFocusedContent() const {
|
| - if (!AudioFocusManager::GetInstance()->focus_entry_)
|
| - return nullptr;
|
| - return AudioFocusManager::GetInstance()->focus_entry_->web_contents();
|
| + const auto& audio_focus_stack =
|
| + AudioFocusManager::GetInstance()->audio_focus_stack_;
|
| + for (auto iter = audio_focus_stack.rbegin();
|
| + iter != audio_focus_stack.rend(); ++iter) {
|
| + if ((*iter)->type() == AudioFocusManager::AudioFocusType::Gain)
|
| + return (*iter)->web_contents();
|
| + }
|
| + return nullptr;
|
| }
|
|
|
| int GetTransientMaybeDuckCount() const {
|
| - return AudioFocusManager::GetInstance()->TransientMayDuckEntriesCount();
|
| + int count = 0;
|
| + const auto& audio_focus_stack =
|
| + AudioFocusManager::GetInstance()->audio_focus_stack_;
|
| + for (auto iter = audio_focus_stack.rbegin();
|
| + iter != audio_focus_stack.rend(); ++iter) {
|
| + if ((*iter)->type() ==
|
| + AudioFocusManager::AudioFocusType::GainTransientMayDuck) {
|
| + ++count;
|
| + } else {
|
| + break;
|
| + }
|
| + }
|
| +
|
| + return count;
|
| }
|
|
|
| double IsSessionDucking(MediaSession* session) {
|
| return session->is_ducking_; // Quack! Quack!
|
| }
|
|
|
| + void SetAudioFocusState(MediaSession* session,
|
| + MediaSession::State audio_focus_state) {
|
| + session->audio_focus_state_ = audio_focus_state;
|
| + }
|
| +
|
| WebContents* CreateWebContents() {
|
| return TestWebContents::Create(browser_context_.get(),
|
| SiteInstance::SiteInstance::Create(browser_context_.get()));
|
| @@ -256,19 +279,24 @@ TEST_F(AudioFocusManagerTest, DuckWhilePlaying) {
|
| ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| }
|
|
|
| -TEST_F(AudioFocusManagerTest, DuckWhenStarting) {
|
| +TEST_F(AudioFocusManagerTest, GainSuspendsTransient) {
|
| std::unique_ptr<WebContents> web_contents_1(CreateWebContents());
|
| MediaSession* media_session_1 = MediaSession::Get(web_contents_1.get());
|
|
|
| std::unique_ptr<WebContents> web_contents_2(CreateWebContents());
|
| MediaSession* media_session_2 = MediaSession::Get(web_contents_2.get());
|
|
|
| + SetAudioFocusState(media_session_2, MediaSession::State::ACTIVE);
|
| +
|
| AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| media_session_2, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
|
|
| AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| + ASSERT_TRUE(media_session_2->IsSuspended());
|
| +
|
| + // Clean up
|
| + SetAudioFocusState(media_session_2, MediaSession::State::INACTIVE);
|
| }
|
|
|
| TEST_F(AudioFocusManagerTest, DuckWithMultipleTransients) {
|
|
|