Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(169)

Unified Diff: content/browser/media/session/audio_focus_manager_unittest.cc

Issue 2274873003: Letting Flash join MediaSession (stack implementaion) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@media_session_type
Patch Set: fixed existing tests (need new tests when behavior is decided) Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698