| Index: media/filters/video_renderer_base_unittest.cc
|
| diff --git a/media/filters/video_renderer_base_unittest.cc b/media/filters/video_renderer_base_unittest.cc
|
| index 98892a8850685375911b9b333302c13cd4e948d9..aa86a5e0480353ce1d9428381c1477056139a110 100644
|
| --- a/media/filters/video_renderer_base_unittest.cc
|
| +++ b/media/filters/video_renderer_base_unittest.cc
|
| @@ -14,7 +14,6 @@
|
| #include "media/base/data_buffer.h"
|
| #include "media/base/limits.h"
|
| #include "media/base/mock_callback.h"
|
| -#include "media/base/mock_filter_host.h"
|
| #include "media/base/mock_filters.h"
|
| #include "media/base/video_frame.h"
|
| #include "media/filters/video_renderer_base.h"
|
| @@ -49,21 +48,20 @@ class VideoRendererBaseTest : public ::testing::Test {
|
| should_queue_read_cb_(false) {
|
| renderer_ = new VideoRendererBase(
|
| base::Bind(&VideoRendererBaseTest::Paint, base::Unretained(this)),
|
| - base::Bind(&VideoRendererBaseTest::SetOpaqueCBWasCalled,
|
| - base::Unretained(this)),
|
| + base::Bind(&VideoRendererBaseTest::OnSetOpaque, base::Unretained(this)),
|
| true);
|
| - renderer_->SetHost(&host_);
|
|
|
| + // We expect these to be called but we don't care how/when.
|
| EXPECT_CALL(*decoder_, natural_size())
|
| .WillRepeatedly(ReturnRef(kNaturalSize));
|
| - EXPECT_CALL(statistics_cb_object_, OnStatistics(_))
|
| - .Times(AnyNumber());
|
| - EXPECT_CALL(*this, SetOpaqueCBWasCalled(_))
|
| - .WillRepeatedly(::testing::Return());
|
| EXPECT_CALL(*decoder_, Stop(_))
|
| .WillRepeatedly(RunClosure());
|
| - EXPECT_CALL(*this, TimeCBWasCalled(_))
|
| - .WillRepeatedly(::testing::Return());
|
| + EXPECT_CALL(statistics_cb_object_, OnStatistics(_))
|
| + .Times(AnyNumber());
|
| + EXPECT_CALL(*this, OnTimeUpdate(_))
|
| + .Times(AnyNumber());
|
| + EXPECT_CALL(*this, OnSetOpaque(_))
|
| + .Times(AnyNumber());
|
| }
|
|
|
| virtual ~VideoRendererBaseTest() {
|
| @@ -74,20 +72,18 @@ class VideoRendererBaseTest : public ::testing::Test {
|
| }
|
| }
|
|
|
| - MOCK_METHOD1(TimeCBWasCalled, void(base::TimeDelta));
|
| + // Callbacks passed into VideoRendererBase().
|
| + MOCK_CONST_METHOD1(OnSetOpaque, void(bool));
|
|
|
| - MOCK_CONST_METHOD1(SetOpaqueCBWasCalled, void(bool));
|
| + // Callbacks passed into Initialize().
|
| + MOCK_METHOD1(OnTimeUpdate, void(base::TimeDelta));
|
| + MOCK_METHOD1(OnNaturalSizeChanged, void(const gfx::Size&));
|
| + MOCK_METHOD0(OnEnded, void());
|
| + MOCK_METHOD1(OnError, void(PipelineStatus));
|
|
|
| void Initialize() {
|
| // TODO(scherkus): really, really, really need to inject a thread into
|
| // VideoRendererBase... it makes mocking much harder.
|
| - EXPECT_CALL(host_, GetTime())
|
| - .WillRepeatedly(Invoke(this, &VideoRendererBaseTest::GetTime));
|
| -
|
| - // Expects the video renderer to get duration from the host.
|
| - EXPECT_CALL(host_, GetDuration())
|
| - .WillRepeatedly(Return(
|
| - base::TimeDelta::FromMicroseconds(kVideoDuration)));
|
|
|
| // Monitor reads from the decoder.
|
| EXPECT_CALL(*decoder_, Read(_))
|
| @@ -99,16 +95,26 @@ class VideoRendererBaseTest : public ::testing::Test {
|
| InSequence s;
|
|
|
| // We expect the video size to be set.
|
| - EXPECT_CALL(host_, SetNaturalVideoSize(kNaturalSize));
|
| + EXPECT_CALL(*this, OnNaturalSizeChanged(kNaturalSize));
|
|
|
| // Set playback rate before anything else happens.
|
| renderer_->SetPlaybackRate(1.0f);
|
|
|
| // Initialize, we shouldn't have any reads.
|
| - renderer_->Initialize(decoder_,
|
| - NewExpectedStatusCB(PIPELINE_OK),
|
| - NewStatisticsCB(),
|
| - NewTimeCB());
|
| + renderer_->Initialize(
|
| + decoder_,
|
| + NewExpectedStatusCB(PIPELINE_OK),
|
| + base::Bind(&MockStatisticsCB::OnStatistics,
|
| + base::Unretained(&statistics_cb_object_)),
|
| + base::Bind(&VideoRendererBaseTest::OnTimeUpdate,
|
| + base::Unretained(this)),
|
| + base::Bind(&VideoRendererBaseTest::OnNaturalSizeChanged,
|
| + base::Unretained(this)),
|
| + base::Bind(&VideoRendererBaseTest::OnEnded, base::Unretained(this)),
|
| + base::Bind(&VideoRendererBaseTest::OnError, base::Unretained(this)),
|
| + base::Bind(&VideoRendererBaseTest::GetTime, base::Unretained(this)),
|
| + base::Bind(&VideoRendererBaseTest::GetDuration,
|
| + base::Unretained(this)));
|
|
|
| // Now seek to trigger prerolling.
|
| Seek(0);
|
| @@ -271,7 +277,7 @@ class VideoRendererBaseTest : public ::testing::Test {
|
| // Advances clock to |timestamp| (which should be the timestamp of the last
|
| // frame plus duration) and waits for the ended signal before returning.
|
| void RenderLastFrame(int64 timestamp) {
|
| - EXPECT_CALL(host_, NotifyEnded())
|
| + EXPECT_CALL(*this, OnEnded())
|
| .WillOnce(Invoke(&event_, &base::WaitableEvent::Signal));
|
| {
|
| base::AutoLock l(lock_);
|
| @@ -289,20 +295,9 @@ class VideoRendererBaseTest : public ::testing::Test {
|
| }
|
|
|
| protected:
|
| - StatisticsCB NewStatisticsCB() {
|
| - return base::Bind(&MockStatisticsCB::OnStatistics,
|
| - base::Unretained(&statistics_cb_object_));
|
| - }
|
| -
|
| - VideoRenderer::TimeCB NewTimeCB() {
|
| - return base::Bind(&VideoRendererBaseTest::TimeCBWasCalled,
|
| - base::Unretained(this));
|
| - }
|
| -
|
| // Fixture members.
|
| scoped_refptr<VideoRendererBase> renderer_;
|
| scoped_refptr<MockVideoDecoder> decoder_;
|
| - StrictMock<MockFilterHost> host_;
|
| MockStatisticsCB statistics_cb_object_;
|
|
|
| // Receives all the buffers that renderer had provided to |decoder_|.
|
| @@ -315,6 +310,10 @@ class VideoRendererBaseTest : public ::testing::Test {
|
| return time_;
|
| }
|
|
|
| + base::TimeDelta GetDuration() {
|
| + return base::TimeDelta::FromMicroseconds(kVideoDuration);
|
| + }
|
| +
|
| // Called by VideoRendererBase when it wants a frame.
|
| void FrameRequested(const VideoDecoder::ReadCB& callback) {
|
| base::AutoLock l(lock_);
|
| @@ -452,7 +451,7 @@ TEST_F(VideoRendererBaseTest, DecoderError) {
|
| Initialize();
|
| Play();
|
| RenderFrame(kFrameDuration);
|
| - EXPECT_CALL(host_, SetError(PIPELINE_ERROR_DECODE));
|
| + EXPECT_CALL(*this, OnError(PIPELINE_ERROR_DECODE));
|
| DecoderError();
|
| Shutdown();
|
| }
|
| @@ -540,7 +539,7 @@ TEST_F(VideoRendererBaseTest, MAYBE_GetCurrentFrame_EndOfStream) {
|
| ExpectCurrentFrame(false);
|
|
|
| // Start playing, we should immediately get notified of end of stream.
|
| - EXPECT_CALL(host_, NotifyEnded())
|
| + EXPECT_CALL(*this, OnEnded())
|
| .WillOnce(Invoke(event(), &base::WaitableEvent::Signal));
|
| Play();
|
| CHECK(event()->TimedWait(timeout())) << "Timed out waiting for ended signal.";
|
|
|