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

Unified Diff: chromecast/browser/test/cast_media_blocker_test.cc

Issue 2450433002: Let CastMediaBlocker observe MediaSession instead of WebContents (Closed)
Patch Set: addressed comments Created 4 years, 2 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: chromecast/browser/test/cast_media_blocker_test.cc
diff --git a/chromecast/browser/test/cast_media_blocker_test.cc b/chromecast/browser/test/cast_media_blocker_test.cc
index 9153ebb6f22e2d266a124b6d8787d00c5b49f832..311f63c7660557d965f0e230402af9c8f5806261 100644
--- a/chromecast/browser/test/cast_media_blocker_test.cc
+++ b/chromecast/browser/test/cast_media_blocker_test.cc
@@ -7,7 +7,7 @@
#include <memory>
#include "base/memory/ptr_util.h"
-#include "base/bind.h"
+#include "content/public/browser/media_session.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/test_content_client_initializer.h"
#include "content/public/test/test_renderer_host.h"
@@ -18,13 +18,25 @@
namespace chromecast {
namespace shell {
-class MockMediaSession {
+using ::testing::_;
+using ::testing::Invoke;
+
+class MockMediaSession : public content::MediaSession {
public:
- MockMediaSession() {}
+ MockMediaSession(content::MediaSession* session) {
+ // Delegate the calls to the real MediaSession.
+ ON_CALL(*this, Resume(_))
+ .WillByDefault(Invoke(session, &MediaSession::Resume));
+ ON_CALL(*this, Suspend(_))
+ .WillByDefault(Invoke(session, &MediaSession::Suspend));
+ ON_CALL(*this, Stop(_))
+ .WillByDefault(Invoke(session, &MediaSession::Stop));
+ }
~MockMediaSession() {}
- MOCK_CONST_METHOD0(Suspend, void());
- MOCK_CONST_METHOD0(Resume, void());
+ MOCK_METHOD1(Resume, void(content::MediaSession::SuspendType));
+ MOCK_METHOD1(Suspend, void(content::MediaSession::SuspendType));
+ MOCK_METHOD1(Stop, void(content::MediaSession::SuspendType));
private:
DISALLOW_COPY_AND_ASSIGN(MockMediaSession);
@@ -38,12 +50,10 @@ class CastMediaBlockerTest : public content::RenderViewHostTestHarness {
void SetUp() override {
initializer_ = base::MakeUnique<content::TestContentClientInitializer>();
content::RenderViewHostTestHarness::SetUp();
- media_session_ = base::MakeUnique<MockMediaSession>();
+ media_session_ = base::MakeUnique<MockMediaSession>(
+ content::MediaSession::Get(web_contents()));
media_blocker_ = base::MakeUnique<CastMediaBlocker>(
- web_contents(), base::Bind(&MockMediaSession::Suspend,
- base::Unretained(media_session_.get())),
- base::Bind(&MockMediaSession::Resume,
- base::Unretained(media_session_.get())));
+ media_session_.get(), web_contents());
content::WebContentsTester::For(web_contents())
->NavigateAndCommit(GURL("https://www.youtube.com"));
@@ -66,8 +76,8 @@ class CastMediaBlockerTest : public content::RenderViewHostTestHarness {
TEST_F(CastMediaBlockerTest, Block_Unblock_Suspended) {
// Testing block/unblock operations do nothing if media never plays.
- EXPECT_CALL(*media_session_, Suspend()).Times(0);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(0);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
media_blocker_->BlockMediaLoading(true);
media_blocker_->BlockMediaLoading(false);
@@ -82,8 +92,8 @@ TEST_F(CastMediaBlockerTest, Block_Unblock_Suspended) {
TEST_F(CastMediaBlockerTest, No_Block) {
// Tests CastMediaBlocker does nothing if block/unblock is not called.
- EXPECT_CALL(*media_session_, Suspend()).Times(0);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(0);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
// Media becomes controllable/uncontrollable.
MediaSessionChanged(true, true);
@@ -107,59 +117,59 @@ TEST_F(CastMediaBlockerTest, No_Block) {
TEST_F(CastMediaBlockerTest, Block_Before_Controllable) {
// Tests CastMediaBlocker only suspends when controllable.
- EXPECT_CALL(*media_session_, Suspend()).Times(0);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(0);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
media_blocker_->BlockMediaLoading(true);
testing::Mock::VerifyAndClearExpectations(media_session_.get());
// Session becomes controllable
- EXPECT_CALL(*media_session_, Suspend()).Times(1);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(1);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
MediaSessionChanged(true, false);
}
TEST_F(CastMediaBlockerTest, Block_After_Controllable) {
// Tests CastMediaBlocker suspends immediately on block if controllable.
- EXPECT_CALL(*media_session_, Suspend()).Times(0);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(0);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
MediaSessionChanged(true, false);
testing::Mock::VerifyAndClearExpectations(media_session_.get());
// Block when media is playing
- EXPECT_CALL(*media_session_, Suspend()).Times(1);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(1);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
media_blocker_->BlockMediaLoading(true);
MediaSessionChanged(true, true);
testing::Mock::VerifyAndClearExpectations(media_session_.get());
// Unblock
- EXPECT_CALL(*media_session_, Suspend()).Times(0);
- EXPECT_CALL(*media_session_, Resume()).Times(1);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(0);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(1);
media_blocker_->BlockMediaLoading(false);
}
TEST_F(CastMediaBlockerTest, Block_Multiple) {
// Tests CastMediaBlocker repeatively suspends when blocked.
- EXPECT_CALL(*media_session_, Suspend()).Times(0);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(0);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
media_blocker_->BlockMediaLoading(true);
MediaSessionChanged(false, false);
testing::Mock::VerifyAndClearExpectations(media_session_.get());
- EXPECT_CALL(*media_session_, Suspend()).Times(1);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(1);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
MediaSessionChanged(true, false);
MediaSessionChanged(true, true);
testing::Mock::VerifyAndClearExpectations(media_session_.get());
- EXPECT_CALL(*media_session_, Suspend()).Times(1);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(1);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
MediaSessionChanged(true, false);
testing::Mock::VerifyAndClearExpectations(media_session_.get());
MediaSessionChanged(true, true);
- EXPECT_CALL(*media_session_, Suspend()).Times(0);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(0);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
MediaSessionChanged(false, true);
MediaSessionChanged(false, false);
MediaSessionChanged(false, true);
@@ -168,8 +178,8 @@ TEST_F(CastMediaBlockerTest, Block_Multiple) {
TEST_F(CastMediaBlockerTest, Block_Unblock_Uncontrollable) {
// Tests CastMediaBlocker does not suspend or resume when uncontrollable.
- EXPECT_CALL(*media_session_, Suspend()).Times(0);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(0);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
media_blocker_->BlockMediaLoading(true);
MediaSessionChanged(false, false);
media_blocker_->BlockMediaLoading(false);
@@ -181,8 +191,8 @@ TEST_F(CastMediaBlockerTest, Block_Unblock_Uncontrollable) {
}
TEST_F(CastMediaBlockerTest, Block_Unblock_Uncontrollable2) {
- EXPECT_CALL(*media_session_, Suspend()).Times(1);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(1);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
MediaSessionChanged(true, true);
media_blocker_->BlockMediaLoading(true);
MediaSessionChanged(false, true);
@@ -190,23 +200,23 @@ TEST_F(CastMediaBlockerTest, Block_Unblock_Uncontrollable2) {
MediaSessionChanged(true, false);
testing::Mock::VerifyAndClearExpectations(media_session_.get());
- EXPECT_CALL(*media_session_, Suspend()).Times(1);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(1);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
MediaSessionChanged(false, false);
MediaSessionChanged(false, true);
MediaSessionChanged(true, true);
MediaSessionChanged(true, false);
testing::Mock::VerifyAndClearExpectations(media_session_.get());
- EXPECT_CALL(*media_session_, Suspend()).Times(0);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(0);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
media_blocker_->BlockMediaLoading(false);
}
TEST_F(CastMediaBlockerTest, Resume_When_Controllable) {
// Tests CastMediaBlocker will only resume after unblock when controllable.
- EXPECT_CALL(*media_session_, Suspend()).Times(1);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(1);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
MediaSessionChanged(true, false);
media_blocker_->BlockMediaLoading(true);
MediaSessionChanged(true, true);
@@ -214,16 +224,16 @@ TEST_F(CastMediaBlockerTest, Resume_When_Controllable) {
media_blocker_->BlockMediaLoading(false);
testing::Mock::VerifyAndClearExpectations(media_session_.get());
- EXPECT_CALL(*media_session_, Suspend()).Times(0);
- EXPECT_CALL(*media_session_, Resume()).Times(1);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(0);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(1);
MediaSessionChanged(true, true);
}
TEST_F(CastMediaBlockerTest, No_Resume) {
// Tests CastMediaBlocker will not resume if media starts playing by itself
// after unblock.
- EXPECT_CALL(*media_session_, Suspend()).Times(1);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(1);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
MediaSessionChanged(true, false);
media_blocker_->BlockMediaLoading(true);
MediaSessionChanged(true, true);
@@ -231,15 +241,15 @@ TEST_F(CastMediaBlockerTest, No_Resume) {
media_blocker_->BlockMediaLoading(false);
testing::Mock::VerifyAndClearExpectations(media_session_.get());
- EXPECT_CALL(*media_session_, Suspend()).Times(0);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(0);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
MediaSessionChanged(false, false);
}
TEST_F(CastMediaBlockerTest, Block_Before_Resume) {
// Tests CastMediaBlocker does not resume if blocked again after an unblock.
- EXPECT_CALL(*media_session_, Suspend()).Times(1);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(1);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
MediaSessionChanged(true, false);
media_blocker_->BlockMediaLoading(true);
MediaSessionChanged(true, true);
@@ -247,16 +257,16 @@ TEST_F(CastMediaBlockerTest, Block_Before_Resume) {
media_blocker_->BlockMediaLoading(false);
testing::Mock::VerifyAndClearExpectations(media_session_.get());
- EXPECT_CALL(*media_session_, Suspend()).Times(0);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(0);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
media_blocker_->BlockMediaLoading(true);
MediaSessionChanged(true, true);
}
TEST_F(CastMediaBlockerTest, Unblocked_Already_Playing) {
// Tests CastMediaBlocker does not resume if unblocked and media is playing.
- EXPECT_CALL(*media_session_, Suspend()).Times(1);
- EXPECT_CALL(*media_session_, Resume()).Times(0);
+ EXPECT_CALL(*media_session_, Suspend(_)).Times(1);
+ EXPECT_CALL(*media_session_, Resume(_)).Times(0);
MediaSessionChanged(true, false);
media_blocker_->BlockMediaLoading(true);
media_blocker_->BlockMediaLoading(false);

Powered by Google App Engine
This is Rietveld 408576698