| 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 df66e862491718d70a5045ba82c7fbe0b1a42ab9..11bf186aa837b9dd44b11cda8fdcd1bd7767eef4 100644
|
| --- a/content/browser/media/session/audio_focus_manager_unittest.cc
|
| +++ b/content/browser/media/session/audio_focus_manager_unittest.cc
|
| @@ -4,29 +4,13 @@
|
|
|
| #include "content/browser/media/session/audio_focus_manager.h"
|
|
|
| -#include "base/command_line.h"
|
| #include "content/browser/media/session/media_session.h"
|
| -#include "content/browser/media/session/media_session_observer.h"
|
| #include "content/public/test/mock_render_process_host.h"
|
| #include "content/public/test/test_browser_context.h"
|
| #include "content/public/test/test_browser_thread.h"
|
| #include "content/test/test_web_contents.h"
|
| -#include "media/base/media_content_type.h"
|
| -#include "media/base/media_switches.h"
|
|
|
| namespace content {
|
| -
|
| -namespace {
|
| -
|
| -class MockMediaSessionObserver : public MediaSessionObserver {
|
| - public:
|
| - void OnSuspend(int player_id) override {}
|
| - void OnResume(int player_id) override {}
|
| - void OnSetVolumeMultiplier(
|
| - int player_id, double volume_multiplier) override {}
|
| -};
|
| -
|
| -} // anonymous namespace
|
|
|
| using AudioFocusType = AudioFocusManager::AudioFocusType;
|
| using SuspendType = MediaSession::SuspendType;
|
| @@ -36,12 +20,9 @@
|
| AudioFocusManagerTest() : ui_thread_(BrowserThread::UI, &message_loop_) {}
|
|
|
| void SetUp() override {
|
| - base::CommandLine::ForCurrentProcess()->AppendSwitch(
|
| - switches::kEnableDefaultMediaSession);
|
| rph_factory_.reset(new MockRenderProcessHostFactory());
|
| SiteInstanceImpl::set_render_process_host_factory(rph_factory_.get());
|
| browser_context_.reset(new TestBrowserContext());
|
| - pepper_observer_.reset(new MockMediaSessionObserver());
|
| }
|
|
|
| void TearDown() override {
|
| @@ -50,54 +31,24 @@
|
| rph_factory_.reset();
|
| }
|
|
|
| - MediaSession* GetAudioFocusedSession() const {
|
| - 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)->audio_focus_type() ==
|
| - AudioFocusManager::AudioFocusType::Gain)
|
| - return (*iter);
|
| - }
|
| - return nullptr;
|
| + WebContents* GetAudioFocusedContent() const {
|
| + if (!AudioFocusManager::GetInstance()->focus_entry_)
|
| + return nullptr;
|
| + return AudioFocusManager::GetInstance()->focus_entry_->web_contents();
|
| }
|
|
|
| int GetTransientMaybeDuckCount() const {
|
| - 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)->audio_focus_type() ==
|
| - AudioFocusManager::AudioFocusType::GainTransientMayDuck) {
|
| - ++count;
|
| - } else {
|
| - break;
|
| - }
|
| - }
|
| -
|
| - return count;
|
| + return AudioFocusManager::GetInstance()->TransientMayDuckEntriesCount();
|
| }
|
|
|
| double IsSessionDucking(MediaSession* session) {
|
| return session->is_ducking_; // Quack! Quack!
|
| - }
|
| -
|
| - void RequestAudioFocus(MediaSession* session,
|
| - AudioFocusManager::AudioFocusType audio_focus_type) {
|
| - session->RequestSystemAudioFocus(audio_focus_type);
|
| - }
|
| -
|
| - void AbandonAudioFocus(MediaSession* session) {
|
| - session->AbandonSystemAudioFocusIfNeeded();
|
| }
|
|
|
| WebContents* CreateWebContents() {
|
| return TestWebContents::Create(browser_context_.get(),
|
| SiteInstance::SiteInstance::Create(browser_context_.get()));
|
| }
|
| -
|
| - std::unique_ptr<MediaSessionObserver> pepper_observer_;
|
|
|
| private:
|
| base::MessageLoopForUI message_loop_;
|
| @@ -123,42 +74,48 @@
|
| std::unique_ptr<WebContents> web_contents_3(CreateWebContents());
|
| MediaSession* media_session_3 = MediaSession::Get(web_contents_3.get());
|
|
|
| - ASSERT_EQ(nullptr, GetAudioFocusedSession());
|
| -
|
| - RequestAudioFocus(media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_EQ(media_session_1, GetAudioFocusedSession());
|
| -
|
| - RequestAudioFocus(media_session_2, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_EQ(media_session_2, GetAudioFocusedSession());
|
| -
|
| - RequestAudioFocus(media_session_3, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_EQ(media_session_3, GetAudioFocusedSession());
|
| + ASSERT_EQ(nullptr, GetAudioFocusedContent());
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_EQ(web_contents_1.get(), GetAudioFocusedContent());
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_2, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_EQ(web_contents_2.get(), GetAudioFocusedContent());
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_3, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_EQ(web_contents_3.get(), GetAudioFocusedContent());
|
| }
|
|
|
| TEST_F(AudioFocusManagerTest, RequestAudioFocusGain_Duplicate) {
|
| std::unique_ptr<WebContents> web_contents(CreateWebContents());
|
| MediaSession* media_session = MediaSession::Get(web_contents.get());
|
|
|
| - ASSERT_EQ(nullptr, GetAudioFocusedSession());
|
| -
|
| - RequestAudioFocus(media_session, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_EQ(media_session, GetAudioFocusedSession());
|
| -
|
| - RequestAudioFocus(media_session, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_EQ(media_session, GetAudioFocusedSession());
|
| + ASSERT_EQ(nullptr, GetAudioFocusedContent());
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_EQ(web_contents.get(), GetAudioFocusedContent());
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_EQ(web_contents.get(), GetAudioFocusedContent());
|
| }
|
|
|
| TEST_F(AudioFocusManagerTest, RequestAudioFocusGain_FromTransient) {
|
| std::unique_ptr<WebContents> web_contents(CreateWebContents());
|
| MediaSession* media_session = MediaSession::Get(web_contents.get());
|
|
|
| - RequestAudioFocus(
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| media_session, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| - ASSERT_EQ(nullptr, GetAudioFocusedSession());
|
| - ASSERT_EQ(1, GetTransientMaybeDuckCount());
|
| -
|
| - RequestAudioFocus(media_session, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_EQ(media_session, GetAudioFocusedSession());
|
| + ASSERT_EQ(nullptr, GetAudioFocusedContent());
|
| + ASSERT_EQ(1, GetTransientMaybeDuckCount());
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_EQ(web_contents.get(), GetAudioFocusedContent());
|
| ASSERT_EQ(0, GetTransientMaybeDuckCount());
|
| }
|
|
|
| @@ -166,13 +123,14 @@
|
| std::unique_ptr<WebContents> web_contents(CreateWebContents());
|
| MediaSession* media_session = MediaSession::Get(web_contents.get());
|
|
|
| - RequestAudioFocus(media_session, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_EQ(media_session, GetAudioFocusedSession());
|
| - ASSERT_EQ(0, GetTransientMaybeDuckCount());
|
| -
|
| - RequestAudioFocus(
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_EQ(web_contents.get(), GetAudioFocusedContent());
|
| + ASSERT_EQ(0, GetTransientMaybeDuckCount());
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| media_session, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| - ASSERT_EQ(nullptr, GetAudioFocusedSession());
|
| + ASSERT_EQ(nullptr, GetAudioFocusedContent());
|
| ASSERT_EQ(1, GetTransientMaybeDuckCount());
|
| ASSERT_FALSE(IsSessionDucking(media_session));
|
| }
|
| @@ -184,16 +142,17 @@
|
| std::unique_ptr<WebContents> web_contents_2(CreateWebContents());
|
| MediaSession* media_session_2 = MediaSession::Get(web_contents_2.get());
|
|
|
| - RequestAudioFocus(media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_EQ(0, GetTransientMaybeDuckCount());
|
| - ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| -
|
| - RequestAudioFocus(
|
| - media_session_2, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| - ASSERT_EQ(1, GetTransientMaybeDuckCount());
|
| - ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| -
|
| - RequestAudioFocus(
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_EQ(0, GetTransientMaybeDuckCount());
|
| + ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_2, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| + ASSERT_EQ(1, GetTransientMaybeDuckCount());
|
| + ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| media_session_1, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| ASSERT_EQ(2, GetTransientMaybeDuckCount());
|
| ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| @@ -203,30 +162,31 @@
|
| std::unique_ptr<WebContents> web_contents(CreateWebContents());
|
| MediaSession* media_session = MediaSession::Get(web_contents.get());
|
|
|
| - RequestAudioFocus(media_session, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_EQ(media_session, GetAudioFocusedSession());
|
| -
|
| - AbandonAudioFocus(media_session);
|
| - ASSERT_EQ(nullptr, GetAudioFocusedSession());
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_EQ(web_contents.get(), GetAudioFocusedContent());
|
| +
|
| + AudioFocusManager::GetInstance()->AbandonAudioFocus(media_session);
|
| + ASSERT_EQ(nullptr, GetAudioFocusedContent());
|
| }
|
|
|
| TEST_F(AudioFocusManagerTest, AbandonAudioFocus_NoAssociatedEntry) {
|
| std::unique_ptr<WebContents> web_contents(CreateWebContents());
|
| MediaSession* media_session = MediaSession::Get(web_contents.get());
|
|
|
| - AbandonAudioFocus(media_session);
|
| - ASSERT_EQ(nullptr, GetAudioFocusedSession());
|
| + AudioFocusManager::GetInstance()->AbandonAudioFocus(media_session);
|
| + ASSERT_EQ(nullptr, GetAudioFocusedContent());
|
| }
|
|
|
| TEST_F(AudioFocusManagerTest, AbandonAudioFocus_RemovesTransientEntry) {
|
| std::unique_ptr<WebContents> web_contents(CreateWebContents());
|
| MediaSession* media_session = MediaSession::Get(web_contents.get());
|
|
|
| - RequestAudioFocus(
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| media_session, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| ASSERT_EQ(1, GetTransientMaybeDuckCount());
|
|
|
| - AbandonAudioFocus(media_session);
|
| + AudioFocusManager::GetInstance()->AbandonAudioFocus(media_session);
|
| ASSERT_EQ(0, GetTransientMaybeDuckCount());
|
| }
|
|
|
| @@ -237,22 +197,24 @@
|
| std::unique_ptr<WebContents> web_contents_2(CreateWebContents());
|
| MediaSession* media_session_2 = MediaSession::Get(web_contents_2.get());
|
|
|
| - RequestAudioFocus(media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_EQ(0, GetTransientMaybeDuckCount());
|
| - ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| -
|
| - RequestAudioFocus(
|
| - media_session_2, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| - ASSERT_EQ(1, GetTransientMaybeDuckCount());
|
| - ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| -
|
| - AbandonAudioFocus(media_session_1);
|
| - ASSERT_EQ(1, GetTransientMaybeDuckCount());
|
| -
|
| - AbandonAudioFocus(media_session_2);
|
| - ASSERT_EQ(0, GetTransientMaybeDuckCount());
|
| -
|
| - RequestAudioFocus(media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_EQ(0, GetTransientMaybeDuckCount());
|
| + ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_2, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| + ASSERT_EQ(1, GetTransientMaybeDuckCount());
|
| + ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| +
|
| + AudioFocusManager::GetInstance()->AbandonAudioFocus(media_session_1);
|
| + ASSERT_EQ(1, GetTransientMaybeDuckCount());
|
| +
|
| + AudioFocusManager::GetInstance()->AbandonAudioFocus(media_session_2);
|
| + ASSERT_EQ(0, GetTransientMaybeDuckCount());
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| }
|
|
|
| @@ -263,16 +225,17 @@
|
| std::unique_ptr<WebContents> web_contents_2(CreateWebContents());
|
| MediaSession* media_session_2 = MediaSession::Get(web_contents_2.get());
|
|
|
| - RequestAudioFocus(media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_EQ(0, GetTransientMaybeDuckCount());
|
| - ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| -
|
| - RequestAudioFocus(
|
| - media_session_2, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| - ASSERT_EQ(1, GetTransientMaybeDuckCount());
|
| - ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| -
|
| - AbandonAudioFocus(media_session_2);
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_EQ(0, GetTransientMaybeDuckCount());
|
| + ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_2, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| + ASSERT_EQ(1, GetTransientMaybeDuckCount());
|
| + ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| +
|
| + AudioFocusManager::GetInstance()->AbandonAudioFocus(media_session_2);
|
| ASSERT_EQ(0, GetTransientMaybeDuckCount());
|
| ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| }
|
| @@ -284,26 +247,28 @@
|
| std::unique_ptr<WebContents> web_contents_2(CreateWebContents());
|
| MediaSession* media_session_2 = MediaSession::Get(web_contents_2.get());
|
|
|
| - RequestAudioFocus(media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| -
|
| - RequestAudioFocus(
|
| - media_session_2, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| - ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| -}
|
| -
|
| -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());
|
| -
|
| - RequestAudioFocus(
|
| - media_session_2, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| -
|
| - RequestAudioFocus(media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_TRUE(media_session_2->IsSuspended());
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_2, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| + ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| +}
|
| +
|
| +TEST_F(AudioFocusManagerTest, DuckWhenStarting) {
|
| + 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());
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_2, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| }
|
|
|
| TEST_F(AudioFocusManagerTest, DuckWithMultipleTransients) {
|
| @@ -316,21 +281,22 @@
|
| std::unique_ptr<WebContents> web_contents_3(CreateWebContents());
|
| MediaSession* media_session_3 = MediaSession::Get(web_contents_3.get());
|
|
|
| - RequestAudioFocus(media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| -
|
| - RequestAudioFocus(
|
| - media_session_2, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| - ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| -
|
| - RequestAudioFocus(
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_2, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| + ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| media_session_3, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| ASSERT_TRUE(IsSessionDucking(media_session_1));
|
|
|
| - AbandonAudioFocus(media_session_2);
|
| - ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| -
|
| - AbandonAudioFocus(media_session_3);
|
| + AudioFocusManager::GetInstance()->AbandonAudioFocus(media_session_2);
|
| + ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| +
|
| + AudioFocusManager::GetInstance()->AbandonAudioFocus(media_session_3);
|
| ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| }
|
|
|
| @@ -338,18 +304,19 @@
|
| std::unique_ptr<WebContents> web_contents(CreateWebContents());
|
| MediaSession* media_session = MediaSession::Get(web_contents.get());
|
|
|
| - RequestAudioFocus(media_session, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_EQ(media_session, GetAudioFocusedSession());
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_EQ(web_contents.get(), GetAudioFocusedContent());
|
|
|
| web_contents.reset();
|
| - ASSERT_EQ(nullptr, GetAudioFocusedSession());
|
| + ASSERT_EQ(nullptr, GetAudioFocusedContent());
|
| }
|
|
|
| TEST_F(AudioFocusManagerTest, WebContentsDestroyed_ReleasesTransients) {
|
| std::unique_ptr<WebContents> web_contents(CreateWebContents());
|
| MediaSession* media_session = MediaSession::Get(web_contents.get());
|
|
|
| - RequestAudioFocus(
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| media_session, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| ASSERT_EQ(1, GetTransientMaybeDuckCount());
|
|
|
| @@ -364,10 +331,11 @@
|
| std::unique_ptr<WebContents> web_contents_2(CreateWebContents());
|
| MediaSession* media_session_2 = MediaSession::Get(web_contents_2.get());
|
|
|
| - RequestAudioFocus(media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| - ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| -
|
| - RequestAudioFocus(
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| + media_session_1, AudioFocusManager::AudioFocusType::Gain);
|
| + ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| +
|
| + AudioFocusManager::GetInstance()->RequestAudioFocus(
|
| media_session_2, AudioFocusManager::AudioFocusType::GainTransientMayDuck);
|
| ASSERT_TRUE(IsSessionDucking(media_session_1));
|
|
|
| @@ -375,61 +343,4 @@
|
| ASSERT_FALSE(IsSessionDucking(media_session_1));
|
| }
|
|
|
| -TEST_F(AudioFocusManagerTest, PepperRequestsGainFocus) {
|
| - std::unique_ptr<WebContents> web_contents(CreateWebContents());
|
| - MediaSession* media_session = MediaSession::Get(web_contents.get());
|
| -
|
| - media_session->AddPlayer(
|
| - pepper_observer_.get(), 0, media::MediaContentType::Pepper);
|
| - ASSERT_EQ(media_session, GetAudioFocusedSession());
|
| -
|
| - media_session->RemovePlayer(pepper_observer_.get(), 0);
|
| - ASSERT_EQ(nullptr, GetAudioFocusedSession());
|
| -}
|
| -
|
| -TEST_F(AudioFocusManagerTest, GainDucksPepper) {
|
| - 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());
|
| -
|
| - media_session_1->AddPlayer(
|
| - pepper_observer_.get(), 0, media::MediaContentType::Pepper);
|
| -
|
| - RequestAudioFocus(
|
| - media_session_2, AudioFocusManager::AudioFocusType::Gain);
|
| -
|
| - ASSERT_EQ(media_session_2, GetAudioFocusedSession());
|
| - ASSERT_TRUE(media_session_1->IsActive());
|
| - ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| -}
|
| -
|
| -TEST_F(AudioFocusManagerTest, AbandoningGainFocusRevokesTopMostPepperSession) {
|
| - 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());
|
| -
|
| - std::unique_ptr<WebContents> web_contents_3(CreateWebContents());
|
| - MediaSession* media_session_3 = MediaSession::Get(web_contents_3.get());
|
| -
|
| - media_session_1->AddPlayer(
|
| - pepper_observer_.get(), 0, media::MediaContentType::Pepper);
|
| -
|
| - RequestAudioFocus(
|
| - media_session_2, AudioFocusManager::AudioFocusType::Gain);
|
| - RequestAudioFocus(
|
| - media_session_3, AudioFocusManager::AudioFocusType::Gain);
|
| -
|
| - ASSERT_EQ(media_session_3, GetAudioFocusedSession());
|
| - ASSERT_TRUE(media_session_2->IsReallySuspended());
|
| - ASSERT_TRUE(media_session_1->IsActive());
|
| - ASSERT_TRUE(IsSessionDucking(media_session_1));
|
| -
|
| - AbandonAudioFocus(media_session_3);
|
| - ASSERT_EQ(media_session_1, GetAudioFocusedSession());
|
| -}
|
| -
|
| } // namespace content
|
|
|