Index: content/browser/media/session/media_session_browsertest.cc |
diff --git a/content/browser/media/android/media_session_browsertest.cc b/content/browser/media/session/media_session_browsertest.cc |
similarity index 93% |
rename from content/browser/media/android/media_session_browsertest.cc |
rename to content/browser/media/session/media_session_browsertest.cc |
index f613c6783dee5511742b30ccf61da74556ea586e..ebf3a83544ddb01552776333833a746f727efc37 100644 |
--- a/content/browser/media/android/media_session_browsertest.cc |
+++ b/content/browser/media/session/media_session_browsertest.cc |
@@ -2,27 +2,31 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "content/browser/media/android/media_session.h" |
+#include "content/browser/media/session/media_session.h" |
#include <stddef.h> |
#include <list> |
#include <vector> |
+#include "base/command_line.h" |
#include "base/macros.h" |
#include "base/metrics/histogram_samples.h" |
#include "base/test/histogram_tester.h" |
#include "base/test/simple_test_clock.h" |
-#include "content/browser/media/android/media_session_observer.h" |
+#include "content/browser/media/session/media_session_delegate.h" |
+#include "content/browser/media/session/media_session_observer.h" |
#include "content/public/browser/web_contents.h" |
#include "content/public/browser/web_contents_observer.h" |
#include "content/public/test/content_browser_test.h" |
#include "content/shell/browser/shell.h" |
+#include "media/base/media_switches.h" |
#include "testing/gmock/include/gmock/gmock.h" |
using content::WebContents; |
using content::WebContentsObserver; |
using content::MediaSession; |
+using content::MediaSessionDelegate; |
using content::MediaSessionObserver; |
using content::MediaSessionUmaHelper; |
@@ -30,6 +34,16 @@ using ::testing::Expectation; |
namespace { |
+class MockMediaSessionDelegate : public MediaSessionDelegate { |
+ public: |
+ bool RequestAudioFocus(MediaSession::Type) override { |
+ return true; |
+ } |
+ |
+ void AbandonAudioFocus() override { |
+ } |
+}; |
+ |
class MockMediaSessionObserver : public MediaSessionObserver { |
public: |
MockMediaSessionObserver() |
@@ -133,10 +147,15 @@ 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(); |
+ media_session_->SetDelegateForTest( |
+ scoped_ptr<MediaSessionDelegate>(new MockMediaSessionDelegate())); |
ASSERT_TRUE(media_session_); |
} |
+ void SetUpCommandLine(base::CommandLine* command_line) override { |
+ command_line->AppendSwitch(switches::kEnableDefaultMediaSession); |
+ } |
+ |
void TearDownOnMainThread() override { |
mock_web_contents_observer_.reset(); |
@@ -186,24 +205,26 @@ class MediaSessionBrowserTest : public content::ContentBrowserTest { |
bool IsSuspended() { return media_session_->IsSuspended(); } |
void UIResume() { |
- media_session_->Resume(); |
+ media_session_->Resume(MediaSession::SuspendType::UI); |
} |
void SystemResume() { |
- media_session_->OnResume(nullptr, nullptr); |
+ media_session_->OnResumeInternal(MediaSession::SuspendType::SYSTEM); |
} |
void UISuspend() { |
- media_session_->Suspend(); |
+ media_session_->Suspend(MediaSession::SuspendType::UI); |
} |
void SystemSuspend(bool temporary) { |
- media_session_->OnSuspend(nullptr, nullptr, temporary); |
+ media_session_->OnSuspendInternal( |
+ MediaSession::SuspendType::SYSTEM, |
+ temporary ? MediaSession::State::SUSPENDED |
+ : MediaSession::State::INACTIVE); |
} |
void SystemSetVolumeMultiplier(double volume_multiplier) { |
- media_session_->OnSetVolumeMultiplier( |
- nullptr, nullptr, volume_multiplier); |
+ media_session_->SetVolumeMultiplier(volume_multiplier); |
} |
MockWebContentsObserver* mock_web_contents_observer() { |
@@ -364,7 +385,7 @@ IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, StopGivesAwayAudioFocus) { |
StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
- media_session_->Stop(); |
+ media_session_->Stop(MediaSession::SuspendType::UI); |
EXPECT_FALSE(HasAudioFocus()); |
} |
@@ -797,7 +818,7 @@ IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
- media_session_->Stop(); |
+ media_session_->Stop(MediaSession::SuspendType::UI); |
EXPECT_FALSE(IsControllable()); |
EXPECT_TRUE(IsSuspended()); |
@@ -1080,7 +1101,7 @@ IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_Stop) { |
base::HistogramTester tester; |
StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
- media_session_->Stop(); |
+ media_session_->Stop(MediaSession::SuspendType::UI); |
scoped_ptr<base::HistogramSamples> samples( |
tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); |
@@ -1117,7 +1138,7 @@ IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
- media_session_->Stop(); |
+ media_session_->Stop(MediaSession::SuspendType::UI); |
scoped_ptr<base::HistogramSamples> samples( |
tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
@@ -1146,7 +1167,7 @@ IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
UIResume(); |
clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
- media_session_->Stop(); |
+ media_session_->Stop(MediaSession::SuspendType::UI); |
scoped_ptr<base::HistogramSamples> samples( |
tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
@@ -1175,7 +1196,7 @@ IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
SystemResume(); |
clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
- media_session_->Stop(); |
+ media_session_->Stop(MediaSession::SuspendType::UI); |
scoped_ptr<base::HistogramSamples> samples( |
tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
@@ -1231,12 +1252,12 @@ IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
clock->Advance(base::TimeDelta::FromMilliseconds(500)); |
SystemSuspend(true); |
- media_session_->Stop(); |
+ media_session_->Stop(MediaSession::SuspendType::UI); |
StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
clock->Advance(base::TimeDelta::FromMilliseconds(5000)); |
SystemResume(); |
- media_session_->Stop(); |
+ media_session_->Stop(MediaSession::SuspendType::UI); |
scoped_ptr<base::HistogramSamples> samples( |
tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
@@ -1263,7 +1284,7 @@ IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
- media_session_->Stop(); |
+ media_session_->Stop(MediaSession::SuspendType::UI); |
scoped_ptr<base::HistogramSamples> samples( |
tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
@@ -1271,3 +1292,41 @@ IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
EXPECT_EQ(1, samples->GetCount(1000)); |
EXPECT_EQ(1, samples->GetCount(10000)); |
} |
+ |
+#if !defined(OS_ANDROID) |
+class DefaultMediaSessionBrowserTest : public content::ContentBrowserTest { |
mlamouri (slow - plz ping)
2016/02/17 19:30:12
I'm going to move this test to media_session_deleg
mlamouri (slow - plz ping)
2016/02/23 20:27:55
Done.
|
+ protected: |
+ void SetUpCommandLine(base::CommandLine* command_line) override { |
+ command_line->AppendSwitch(switches::kEnableDefaultMediaSession); |
+ } |
+}; |
+ |
+IN_PROC_BROWSER_TEST_F(DefaultMediaSessionBrowserTest, |
+ ActiveWebContentsPauseOthers) { |
+ scoped_ptr<MockMediaSessionObserver> media_session_observer( |
+ new MockMediaSessionObserver); |
+ |
+ MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
+ ASSERT_TRUE(media_session); |
+ |
+ WebContents* other_web_contents = CreateBrowser()->web_contents(); |
+ MediaSession* other_media_session = MediaSession::Get(other_web_contents); |
+ ASSERT_TRUE(other_media_session); |
+ |
+ media_session_observer->StartNewPlayer(); |
+ media_session->AddPlayer( |
+ media_session_observer.get(), 0, MediaSession::Type::Content); |
+ EXPECT_TRUE(media_session->IsActive()); |
+ EXPECT_FALSE(other_media_session->IsActive()); |
+ |
+ media_session_observer->StartNewPlayer(); |
+ other_media_session->AddPlayer( |
+ media_session_observer.get(), 1, MediaSession::Type::Content); |
+ EXPECT_FALSE(media_session->IsActive()); |
+ EXPECT_TRUE(other_media_session->IsActive()); |
+ |
+ media_session->Stop(MediaSession::SuspendType::UI); |
+ other_media_session->Stop(MediaSession::SuspendType::UI); |
+} |
+ |
+#endif // !OS_ANDROID |