Index: content/browser/media/android/media_session_browsertest.cc |
diff --git a/content/browser/media/android/media_session_browsertest.cc b/content/browser/media/android/media_session_browsertest.cc |
index 1fc812189feb70e3189b7700a763a87e55d1a808..f2dd46550b84327f1689647e303429ac84bea446 100644 |
--- a/content/browser/media/android/media_session_browsertest.cc |
+++ b/content/browser/media/android/media_session_browsertest.cc |
@@ -8,10 +8,18 @@ |
#include <vector> |
#include "content/browser/media/android/media_session_observer.h" |
+#include "content/common/content_export.h" |
mlamouri (slow - plz ping)
2015/06/24 16:15:02
Why do you need that?
whywhat
2015/06/24 18:36:15
Left over from the experimentation I did with the
|
+#include "content/public/browser/web_contents.h" |
+#include "content/public/browser/web_contents_delegate.h" |
#include "content/public/test/content_browser_test.h" |
#include "content/shell/browser/shell.h" |
-namespace content { |
mlamouri (slow - plz ping)
2015/06/24 16:15:02
Maybe you could keep the namespace content and hav
whywhat
2015/06/24 18:36:15
I don't know I'd rather not :)
|
+using content::WebContents; |
+using content::WebContentsDelegate; |
+using content::MediaSession; |
+using content::MediaSessionObserver; |
+ |
+namespace { |
class MockMediaSessionObserver : public MediaSessionObserver { |
public: |
@@ -30,6 +38,7 @@ class MockMediaSessionObserver : public MediaSessionObserver { |
++received_suspend_calls_; |
players_[player_id] = false; |
} |
+ |
void OnResume(int player_id) override { |
DCHECK(player_id >= 0); |
DCHECK(players_.size() > static_cast<size_t>(player_id)); |
@@ -70,73 +79,145 @@ class MockMediaSessionObserver : public MediaSessionObserver { |
int received_suspend_calls_; |
}; |
-class MediaSessionBrowserTest : public ContentBrowserTest { |
+class MockWebContentsDelegate : public WebContentsDelegate { |
+ public: |
+ explicit MockWebContentsDelegate(WebContents* web_contents); |
+ |
+ void ShowMediaControls(WebContents* web_contents) override; |
+ |
+ void HideMediaControls(WebContents* web_contents) override; |
mlamouri (slow - plz ping)
2015/06/24 16:15:02
I guess these will need to change slightly.
whywhat
2015/06/24 18:36:15
Indeed.
|
+ |
+ int show_counter() const; |
+ int hide_counter() const; |
+ |
+ private: |
+ WebContents* web_contents_; |
+ int show_counter_; |
+ int hide_counter_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(MockWebContentsDelegate); |
+}; |
+ |
+MockWebContentsDelegate::MockWebContentsDelegate(WebContents* web_contents) |
+ : web_contents_(web_contents), |
+ show_counter_(0), |
+ hide_counter_(0) { |
+} |
+ |
+void MockWebContentsDelegate::ShowMediaControls(WebContents* web_contents) { |
+ EXPECT_EQ(web_contents_, web_contents); |
+ ++show_counter_; |
+} |
+ |
+void MockWebContentsDelegate::HideMediaControls(WebContents* web_contents) { |
+ EXPECT_EQ(web_contents_, web_contents); |
+ ++hide_counter_; |
+} |
+ |
+int MockWebContentsDelegate::show_counter() const { |
+ return show_counter_; |
+} |
+ |
+int MockWebContentsDelegate::hide_counter() const { |
+ return hide_counter_; |
+} |
+ |
+} // namespace |
+ |
+class MediaSessionBrowserTest : public content::ContentBrowserTest { |
protected: |
MediaSessionBrowserTest() = default; |
- void DisableNativeBackend(MediaSession* media_session) { |
- media_session->ResetJavaRefForTest(); |
+ void SetUpOnMainThread() override { |
+ ContentBrowserTest::SetUpOnMainThread(); |
+ |
+ mock_web_contents_delegate_.reset( |
+ new MockWebContentsDelegate(shell()->web_contents())); |
+ previous_delegate_ = shell()->web_contents()->GetDelegate(); |
mlamouri (slow - plz ping)
2015/06/24 16:15:02
Do you really need to save it? Isn't the WebConten
whywhat
2015/06/24 18:36:15
Have no idea, better safe than sorry?
|
+ shell()->web_contents()->SetDelegate(mock_web_contents_delegate_.get()); |
+ media_session_ = MediaSession::Get(shell()->web_contents()); |
+ media_session_->ResetJavaRefForTest(); |
+ ASSERT_TRUE(media_session_); |
+ } |
+ |
+ void TearDownOnMainThread() override { |
+ media_session_->RemoveAllPlayersForTest(); |
+ media_session_ = nullptr; |
+ |
+ shell()->web_contents()->SetDelegate(previous_delegate_); |
+ |
+ ContentBrowserTest::TearDownOnMainThread(); |
} |
- void StartNewPlayer(MediaSession* media_session, |
- MockMediaSessionObserver* media_session_observer, |
+ void StartNewPlayer(MockMediaSessionObserver* media_session_observer, |
MediaSession::Type type) { |
- bool result = media_session->AddPlayer( |
- media_session_observer, |
- media_session_observer->StartNewPlayer(), |
- type); |
+ bool result = AddPlayer( |
+ media_session_observer, media_session_observer->StartNewPlayer(), type); |
EXPECT_TRUE(result); |
} |
- void SuspendSession(MediaSession* media_session) { |
- media_session->OnSuspend(true); |
+ bool AddPlayer(MockMediaSessionObserver* media_session_observer, |
+ int player_id, |
+ MediaSession::Type type) { |
+ return media_session_->AddPlayer(media_session_observer, player_id, type); |
} |
- void ResumeSession(MediaSession* media_session) { |
- media_session->OnResume(); |
+ void RemovePlayer( |
+ MockMediaSessionObserver* media_session_observer, int player_id) { |
+ media_session_->RemovePlayer(media_session_observer, player_id); |
} |
- bool HasAudioFocus(MediaSession* media_session) { |
- return media_session->IsActiveForTest(); |
+ void RemovePlayers( |
+ MockMediaSessionObserver* media_session_observer) { |
+ media_session_->RemovePlayers(media_session_observer); |
} |
- MediaSession::Type GetSessionType(MediaSession* media_session) { |
- return media_session->audio_focus_type_for_test(); |
+ void SuspendSession(bool isTemporary) { |
+ media_session_->OnSuspend(NULL, NULL, isTemporary); |
mlamouri (slow - plz ping)
2015/06/24 16:15:02
s/NULL/nullptr/g
whywhat
2015/06/24 18:36:16
Done.
|
} |
- private: |
+ void ResumeSession() { |
+ media_session_->OnResume(NULL, NULL); |
mlamouri (slow - plz ping)
2015/06/24 16:15:02
nit: s/NULL/nullptr/g
whywhat
2015/06/24 18:36:15
Done.
|
+ } |
+ |
+ bool HasAudioFocus() { |
+ return media_session_->IsActiveForTest(); |
+ } |
+ |
+ MediaSession::Type GetSessionType() { |
+ return media_session_->audio_focus_type_for_test(); |
+ } |
+ |
+ const MockWebContentsDelegate* mock_web_contents_delegate() { |
+ return mock_web_contents_delegate_.get(); |
+ } |
+ |
+ protected: |
+ scoped_ptr<MockWebContentsDelegate> mock_web_contents_delegate_; |
+ |
+ MediaSession* media_session_; |
+ |
+ WebContentsDelegate* previous_delegate_; |
+ |
DISALLOW_COPY_AND_ASSIGN(MediaSessionBrowserTest); |
}; |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
PlayersFromSameObserverDoNotStopEachOtherInSameSession) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
scoped_ptr<MockMediaSessionObserver> media_session_observer( |
new MockMediaSessionObserver); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
EXPECT_TRUE(media_session_observer->IsPlaying(0)); |
EXPECT_TRUE(media_session_observer->IsPlaying(1)); |
EXPECT_TRUE(media_session_observer->IsPlaying(2)); |
- |
- media_session->RemovePlayers(media_session_observer.get()); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
PlayersFromManyObserverDoNotStopEachOtherInSameSession) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
scoped_ptr<MockMediaSessionObserver> media_session_observer_1( |
new MockMediaSessionObserver); |
scoped_ptr<MockMediaSessionObserver> media_session_observer_2( |
@@ -144,198 +225,129 @@ IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
scoped_ptr<MockMediaSessionObserver> media_session_observer_3( |
new MockMediaSessionObserver); |
- StartNewPlayer(media_session, media_session_observer_1.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer_2.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer_3.get(), |
- MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer_1.get(), MediaSession::Type::Content); |
+ |
+ StartNewPlayer(media_session_observer_2.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer_3.get(), MediaSession::Type::Content); |
EXPECT_TRUE(media_session_observer_1->IsPlaying(0)); |
EXPECT_TRUE(media_session_observer_2->IsPlaying(0)); |
EXPECT_TRUE(media_session_observer_3->IsPlaying(0)); |
- |
- media_session->RemovePlayers(media_session_observer_1.get()); |
- media_session->RemovePlayers(media_session_observer_2.get()); |
- media_session->RemovePlayers(media_session_observer_3.get()); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
SuspendedMediaSessionStopsPlayers) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
scoped_ptr<MockMediaSessionObserver> media_session_observer( |
new MockMediaSessionObserver); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
- SuspendSession(media_session); |
+ SuspendSession(true); |
EXPECT_FALSE(media_session_observer->IsPlaying(0)); |
EXPECT_FALSE(media_session_observer->IsPlaying(1)); |
EXPECT_FALSE(media_session_observer->IsPlaying(2)); |
- |
- media_session->RemovePlayers(media_session_observer.get()); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
ResumedMediaSessionRestartsPlayers) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
scoped_ptr<MockMediaSessionObserver> media_session_observer( |
new MockMediaSessionObserver); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
- SuspendSession(media_session); |
- ResumeSession(media_session); |
+ SuspendSession(true); |
+ ResumeSession(); |
EXPECT_TRUE(media_session_observer->IsPlaying(0)); |
EXPECT_TRUE(media_session_observer->IsPlaying(1)); |
EXPECT_TRUE(media_session_observer->IsPlaying(2)); |
- |
- media_session->RemovePlayers(media_session_observer.get()); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
StartedPlayerOnSuspendedSessionPlaysAlone) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
scoped_ptr<MockMediaSessionObserver> media_session_observer( |
new MockMediaSessionObserver); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
EXPECT_TRUE(media_session_observer->IsPlaying(0)); |
- SuspendSession(media_session); |
+ SuspendSession(true); |
EXPECT_FALSE(media_session_observer->IsPlaying(0)); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
EXPECT_FALSE(media_session_observer->IsPlaying(0)); |
EXPECT_TRUE(media_session_observer->IsPlaying(1)); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
EXPECT_FALSE(media_session_observer->IsPlaying(0)); |
EXPECT_TRUE(media_session_observer->IsPlaying(1)); |
EXPECT_TRUE(media_session_observer->IsPlaying(2)); |
- |
- media_session->RemovePlayers(media_session_observer.get()); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, AudioFocusInitialState) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
- EXPECT_FALSE(HasAudioFocus(media_session)); |
+ EXPECT_FALSE(HasAudioFocus()); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, StartPlayerGivesFocus) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
scoped_ptr<MockMediaSessionObserver> media_session_observer( |
new MockMediaSessionObserver); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- |
- EXPECT_TRUE(HasAudioFocus(media_session)); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
- media_session->RemovePlayers(media_session_observer.get()); |
+ EXPECT_TRUE(HasAudioFocus()); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, SuspendGivesAwayAudioFocus) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
scoped_ptr<MockMediaSessionObserver> media_session_observer( |
new MockMediaSessionObserver); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- |
- SuspendSession(media_session); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
- EXPECT_FALSE(HasAudioFocus(media_session)); |
+ SuspendSession(true); |
- media_session->RemovePlayers(media_session_observer.get()); |
+ EXPECT_FALSE(HasAudioFocus()); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumeGivesBackAudioFocus) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
scoped_ptr<MockMediaSessionObserver> media_session_observer( |
new MockMediaSessionObserver); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
- SuspendSession(media_session); |
- ResumeSession(media_session); |
+ SuspendSession(true); |
+ ResumeSession(); |
- EXPECT_TRUE(HasAudioFocus(media_session)); |
- |
- media_session->RemovePlayers(media_session_observer.get()); |
+ EXPECT_TRUE(HasAudioFocus()); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
- RemovingLastPlayerDropsAudioFocus_1) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
+ RemovingLastPlayerDropsAudioFocus) { |
scoped_ptr<MockMediaSessionObserver> media_session_observer( |
new MockMediaSessionObserver); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
- media_session->RemovePlayer(media_session_observer.get(), 0); |
- EXPECT_TRUE(HasAudioFocus(media_session)); |
- media_session->RemovePlayer(media_session_observer.get(), 1); |
- EXPECT_TRUE(HasAudioFocus(media_session)); |
- media_session->RemovePlayer(media_session_observer.get(), 2); |
- EXPECT_FALSE(HasAudioFocus(media_session)); |
+ RemovePlayer(media_session_observer.get(), 0); |
+ EXPECT_TRUE(HasAudioFocus()); |
+ RemovePlayer(media_session_observer.get(), 1); |
+ EXPECT_TRUE(HasAudioFocus()); |
+ RemovePlayer(media_session_observer.get(), 2); |
+ EXPECT_FALSE(HasAudioFocus()); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
- RemovingLastPlayerDropsAudioFocus_2) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
+ RemovingLastPlayerFromManyObserversDropsAudioFocus) { |
scoped_ptr<MockMediaSessionObserver> media_session_observer_1( |
new MockMediaSessionObserver); |
scoped_ptr<MockMediaSessionObserver> media_session_observer_2( |
@@ -343,202 +355,322 @@ IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
scoped_ptr<MockMediaSessionObserver> media_session_observer_3( |
new MockMediaSessionObserver); |
- StartNewPlayer(media_session, media_session_observer_1.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer_2.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer_3.get(), |
- MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer_1.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer_2.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer_3.get(), MediaSession::Type::Content); |
- media_session->RemovePlayer(media_session_observer_1.get(), 0); |
- EXPECT_TRUE(HasAudioFocus(media_session)); |
- media_session->RemovePlayer(media_session_observer_2.get(), 0); |
- EXPECT_TRUE(HasAudioFocus(media_session)); |
- media_session->RemovePlayer(media_session_observer_3.get(), 0); |
- EXPECT_FALSE(HasAudioFocus(media_session)); |
+ RemovePlayer(media_session_observer_1.get(), 0); |
+ EXPECT_TRUE(HasAudioFocus()); |
+ RemovePlayer(media_session_observer_2.get(), 0); |
+ EXPECT_TRUE(HasAudioFocus()); |
+ RemovePlayer(media_session_observer_3.get(), 0); |
+ EXPECT_FALSE(HasAudioFocus()); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
- RemovingLastPlayerDropsAudioFocus_3) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
+ RemovingAllPlayersFromObserversDropsAudioFocus) { |
scoped_ptr<MockMediaSessionObserver> media_session_observer_1( |
new MockMediaSessionObserver); |
scoped_ptr<MockMediaSessionObserver> media_session_observer_2( |
new MockMediaSessionObserver); |
- StartNewPlayer(media_session, media_session_observer_1.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer_1.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer_2.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer_2.get(), |
- MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer_1.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer_1.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer_2.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer_2.get(), MediaSession::Type::Content); |
- media_session->RemovePlayers(media_session_observer_1.get()); |
- EXPECT_TRUE(HasAudioFocus(media_session)); |
- media_session->RemovePlayers(media_session_observer_2.get()); |
- EXPECT_FALSE(HasAudioFocus(media_session)); |
+ RemovePlayers(media_session_observer_1.get()); |
+ EXPECT_TRUE(HasAudioFocus()); |
+ RemovePlayers(media_session_observer_2.get()); |
+ EXPECT_FALSE(HasAudioFocus()); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumePlayGivesAudioFocus) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
scoped_ptr<MockMediaSessionObserver> media_session_observer( |
new MockMediaSessionObserver); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
- media_session->RemovePlayer(media_session_observer.get(), 0); |
- EXPECT_FALSE(HasAudioFocus(media_session)); |
+ RemovePlayer(media_session_observer.get(), 0); |
+ EXPECT_FALSE(HasAudioFocus()); |
- EXPECT_TRUE(media_session->AddPlayer(media_session_observer.get(), 0, |
- MediaSession::Type::Content)); |
- EXPECT_TRUE(HasAudioFocus(media_session)); |
- |
- media_session->RemovePlayers(media_session_observer.get()); |
+ EXPECT_TRUE(AddPlayer( |
+ media_session_observer.get(), 0, MediaSession::Type::Content)); |
+ EXPECT_TRUE(HasAudioFocus()); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
- ResumeSuspendAreSentOnlyOncePerPlayers_1) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
+ ResumeSuspendAreSentOnlyOncePerPlayers) { |
scoped_ptr<MockMediaSessionObserver> media_session_observer( |
new MockMediaSessionObserver); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
EXPECT_EQ(0, media_session_observer->received_suspend_calls()); |
EXPECT_EQ(0, media_session_observer->received_resume_calls()); |
- SuspendSession(media_session); |
+ SuspendSession(true); |
EXPECT_EQ(3, media_session_observer->received_suspend_calls()); |
- ResumeSession(media_session); |
+ ResumeSession(); |
EXPECT_EQ(3, media_session_observer->received_resume_calls()); |
- |
- media_session->RemovePlayers(media_session_observer.get()); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
- ResumeSuspendAreSentOnlyOncePerPlayers_2) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
+ ResumeSuspendAreSentOnlyOncePerPlayersAddedTwice) { |
scoped_ptr<MockMediaSessionObserver> media_session_observer( |
new MockMediaSessionObserver); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
// Adding the three players above again. |
- EXPECT_TRUE(media_session->AddPlayer(media_session_observer.get(), 0, |
- MediaSession::Type::Content)); |
- EXPECT_TRUE(media_session->AddPlayer(media_session_observer.get(), 1, |
- MediaSession::Type::Content)); |
- EXPECT_TRUE(media_session->AddPlayer(media_session_observer.get(), 2, |
- MediaSession::Type::Content)); |
+ EXPECT_TRUE(AddPlayer( |
+ media_session_observer.get(), 0, MediaSession::Type::Content)); |
+ EXPECT_TRUE(AddPlayer( |
+ media_session_observer.get(), 1, MediaSession::Type::Content)); |
+ EXPECT_TRUE(AddPlayer( |
+ media_session_observer.get(), 2, MediaSession::Type::Content)); |
EXPECT_EQ(0, media_session_observer->received_suspend_calls()); |
EXPECT_EQ(0, media_session_observer->received_resume_calls()); |
- SuspendSession(media_session); |
+ SuspendSession(true); |
EXPECT_EQ(3, media_session_observer->received_suspend_calls()); |
- ResumeSession(media_session); |
+ ResumeSession(); |
EXPECT_EQ(3, media_session_observer->received_resume_calls()); |
- |
- media_session->RemovePlayers(media_session_observer.get()); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
RemovingTheSamePlayerTwiceIsANoop) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
scoped_ptr<MockMediaSessionObserver> media_session_observer( |
new MockMediaSessionObserver); |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- |
- media_session->RemovePlayer(media_session_observer.get(), 0); |
- media_session->RemovePlayer(media_session_observer.get(), 0); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
- media_session->RemovePlayers(media_session_observer.get()); |
+ RemovePlayer(media_session_observer.get(), 0); |
+ RemovePlayer(media_session_observer.get(), 0); |
} |
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, MediaSessionType) { |
- MediaSession* media_session = MediaSession::Get(shell()->web_contents()); |
- ASSERT_TRUE(media_session); |
- DisableNativeBackend(media_session); |
- |
scoped_ptr<MockMediaSessionObserver> media_session_observer( |
new MockMediaSessionObserver); |
// Starting a player with a given type should set the session to that type. |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Transient); |
- EXPECT_EQ(MediaSession::Type::Transient, GetSessionType(media_session)); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
+ EXPECT_EQ(MediaSession::Type::Transient, GetSessionType()); |
// Adding a player of the same type should have no effect on the type. |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Transient); |
- EXPECT_EQ(MediaSession::Type::Transient, GetSessionType(media_session)); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
+ EXPECT_EQ(MediaSession::Type::Transient, GetSessionType()); |
// Adding a player of Content type should override the current type. |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Content); |
- EXPECT_EQ(MediaSession::Type::Content, GetSessionType(media_session)); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ EXPECT_EQ(MediaSession::Type::Content, GetSessionType()); |
// Adding a player of the Transient type should have no effect on the type. |
- StartNewPlayer(media_session, media_session_observer.get(), |
- MediaSession::Type::Transient); |
- EXPECT_EQ(MediaSession::Type::Content, GetSessionType(media_session)); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
+ EXPECT_EQ(MediaSession::Type::Content, GetSessionType()); |
EXPECT_TRUE(media_session_observer->IsPlaying(0)); |
EXPECT_TRUE(media_session_observer->IsPlaying(1)); |
EXPECT_TRUE(media_session_observer->IsPlaying(2)); |
EXPECT_TRUE(media_session_observer->IsPlaying(3)); |
- SuspendSession(media_session); |
+ SuspendSession(true); |
EXPECT_FALSE(media_session_observer->IsPlaying(0)); |
EXPECT_FALSE(media_session_observer->IsPlaying(1)); |
EXPECT_FALSE(media_session_observer->IsPlaying(2)); |
EXPECT_FALSE(media_session_observer->IsPlaying(3)); |
- EXPECT_EQ(MediaSession::Type::Content, GetSessionType(media_session)); |
+ EXPECT_EQ(MediaSession::Type::Content, GetSessionType()); |
- ResumeSession(media_session); |
+ ResumeSession(); |
EXPECT_TRUE(media_session_observer->IsPlaying(0)); |
EXPECT_TRUE(media_session_observer->IsPlaying(1)); |
EXPECT_TRUE(media_session_observer->IsPlaying(2)); |
EXPECT_TRUE(media_session_observer->IsPlaying(3)); |
- EXPECT_EQ(MediaSession::Type::Content, GetSessionType(media_session)); |
+ EXPECT_EQ(MediaSession::Type::Content, GetSessionType()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShowForContent) { |
+ scoped_ptr<MockMediaSessionObserver> media_session_observer( |
+ new MockMediaSessionObserver); |
+ |
+ // Starting a player with a content type should show the media controls. |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
- media_session->RemovePlayers(media_session_observer.get()); |
+ EXPECT_EQ(1, mock_web_contents_delegate()->show_counter()); |
} |
-} // namespace content |
+IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsNoShowForTransient) { |
+ scoped_ptr<MockMediaSessionObserver> media_session_observer( |
+ new MockMediaSessionObserver); |
+ |
+ // Starting a player with a content type should show the media controls. |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
+ |
+ EXPECT_EQ(0, mock_web_contents_delegate()->show_counter()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsHideWhenStopped) { |
+ scoped_ptr<MockMediaSessionObserver> media_session_observer( |
+ new MockMediaSessionObserver); |
+ |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ |
+ RemovePlayers(media_session_observer.get()); |
+ |
+ EXPECT_EQ(1, mock_web_contents_delegate()->hide_counter()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShownAcceptTransient) { |
+ scoped_ptr<MockMediaSessionObserver> media_session_observer( |
+ new MockMediaSessionObserver); |
+ |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ |
+ // Transient player join the session without affecting the controls. |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
+ |
+ EXPECT_EQ(1, mock_web_contents_delegate()->show_counter()); |
+ EXPECT_EQ(0, mock_web_contents_delegate()->hide_counter()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
+ ControlsShownAfterContentAdded) { |
+ scoped_ptr<MockMediaSessionObserver> media_session_observer( |
+ new MockMediaSessionObserver); |
+ |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
+ |
+ EXPECT_EQ(0, mock_web_contents_delegate()->show_counter()); |
+ |
+ // The controls are shown when the content player is added. |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ |
+ EXPECT_EQ(1, mock_web_contents_delegate()->show_counter()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
+ ControlsStayIfOnlyOnePlayerHasBeenPaused) { |
+ scoped_ptr<MockMediaSessionObserver> media_session_observer( |
+ new MockMediaSessionObserver); |
+ |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
+ |
+ // Removing only content player doesn't hide the controls since the session |
+ // is still active. |
+ RemovePlayer(media_session_observer.get(), 0); |
+ |
+ EXPECT_EQ(0, mock_web_contents_delegate()->hide_counter()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
+ ControlsHideWhenTheLastPlayerIsStopped) { |
+ scoped_ptr<MockMediaSessionObserver> media_session_observer( |
+ new MockMediaSessionObserver); |
+ |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ |
+ RemovePlayer(media_session_observer.get(), 0); |
+ |
+ EXPECT_EQ(0, mock_web_contents_delegate()->hide_counter()); |
+ |
+ RemovePlayer(media_session_observer.get(), 1); |
+ |
+ EXPECT_EQ(1, mock_web_contents_delegate()->hide_counter()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
+ ControlsHideWhenTheAllPlayersAreRemoved) { |
mlamouri (slow - plz ping)
2015/06/24 16:15:02
nit: ControlsHideWhenAllThePlayersAreRemoved
whywhat
2015/06/24 18:36:15
Done.
|
+ scoped_ptr<MockMediaSessionObserver> media_session_observer( |
+ new MockMediaSessionObserver); |
+ |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ |
+ EXPECT_EQ(0, mock_web_contents_delegate()->hide_counter()); |
+ |
+ RemovePlayers(media_session_observer.get()); |
+ |
+ EXPECT_EQ(1, mock_web_contents_delegate()->hide_counter()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
+ SuspendTemporaryUpdatesControls) { |
+ scoped_ptr<MockMediaSessionObserver> media_session_observer( |
+ new MockMediaSessionObserver); |
+ |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ |
+ EXPECT_EQ(1, mock_web_contents_delegate()->show_counter()); |
+ |
+ SuspendSession(true); |
+ |
+ EXPECT_EQ(2, mock_web_contents_delegate()->show_counter()); |
+ // Temporary suspend doesn't hide controls. |
+ EXPECT_EQ(0, mock_web_contents_delegate()->hide_counter()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsUpdatedWhenResumed) { |
+ scoped_ptr<MockMediaSessionObserver> media_session_observer( |
+ new MockMediaSessionObserver); |
+ |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ SuspendSession(true); |
+ ResumeSession(); |
+ |
+ EXPECT_EQ(3, mock_web_contents_delegate()->show_counter()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
+ ControlsHideWhenSessionSuspendedPermanently) { |
+ scoped_ptr<MockMediaSessionObserver> media_session_observer( |
+ new MockMediaSessionObserver); |
+ |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ |
+ SuspendSession(false); |
+ |
+ EXPECT_EQ(1, mock_web_contents_delegate()->hide_counter()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
+ ControlsHideWhenSessionChangesFromContentToTransient) { |
+ scoped_ptr<MockMediaSessionObserver> media_session_observer( |
+ new MockMediaSessionObserver); |
+ |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ SuspendSession(true); |
+ |
+ // This should reset the session and change it to a transient, so |
+ // hide the controls. |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
+ |
+ EXPECT_EQ(2, mock_web_contents_delegate()->show_counter()); |
+ EXPECT_EQ(1, mock_web_contents_delegate()->hide_counter()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
+ ControlsUpdatedWhenNewPlayerResetsSession) { |
+ scoped_ptr<MockMediaSessionObserver> media_session_observer( |
+ new MockMediaSessionObserver); |
+ |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ SuspendSession(true); |
+ |
+ // This should reset the session and update the controls. |
+ StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
+ |
+ EXPECT_EQ(3, mock_web_contents_delegate()->show_counter()); |
+} |
mlamouri (slow - plz ping)
2015/06/24 16:15:02
Can you add a test that call AddPlayer() on an alr
whywhat
2015/06/24 18:36:15
Done.
|