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) { |