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

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

Issue 1698933004: Make MediaSession a runtime-enabled feature on Desktop. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: with flag Created 4 years, 10 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/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

Powered by Google App Engine
This is Rietveld 408576698