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 2c3a54651f7ae8c60d2d930a5f03004e667d137d..4c90500680664d01b444d3f078cbcafd8cf56b46 100644 |
--- a/media/filters/video_renderer_base_unittest.cc |
+++ b/media/filters/video_renderer_base_unittest.cc |
@@ -34,10 +34,15 @@ static const int kVideoDuration = kFrameDuration * 100; |
static const int kEndOfStream = -1; |
static const gfx::Size kNaturalSize(16u, 16u); |
+ACTION_P(RunPipelineStatusCB1, status) { |
+ arg1.Run(status); |
+} |
+ |
class VideoRendererBaseTest : public ::testing::Test { |
public: |
VideoRendererBaseTest() |
: decoder_(new MockVideoDecoder()), |
+ demuxer_stream_(new MockDemuxerStream()), |
cv_(&lock_), |
event_(false, false), |
timeout_(TestTimeouts::action_timeout()), |
@@ -51,6 +56,9 @@ class VideoRendererBaseTest : public ::testing::Test { |
base::Bind(&VideoRendererBaseTest::OnSetOpaque, base::Unretained(this)), |
true); |
+ EXPECT_CALL(*demuxer_stream_, type()) |
+ .WillRepeatedly(Return(DemuxerStream::VIDEO)); |
+ |
// We expect these to be called but we don't care how/when. |
EXPECT_CALL(*decoder_, Stop(_)) |
.WillRepeatedly(RunClosure()); |
@@ -98,13 +106,29 @@ class VideoRendererBaseTest : public ::testing::Test { |
InSequence s; |
+ EXPECT_CALL(*decoder_, Initialize(_, _, _)) |
+ .WillOnce(RunPipelineStatusCB1(PIPELINE_OK)); |
scherkus (not reviewing)
2012/08/14 22:00:24
fix indent
acolwell GONE FROM CHROMIUM
2012/08/15 21:36:57
Done.
|
+ |
// Set playback rate before anything else happens. |
renderer_->SetPlaybackRate(1.0f); |
// Initialize, we shouldn't have any reads. |
+ InitializeRenderer(PIPELINE_OK); |
+ |
+ // We expect the video size to be set. |
+ EXPECT_CALL(*this, OnNaturalSizeChanged(kNaturalSize)); |
+ |
+ // Start prerolling. |
+ Preroll(0); |
+ } |
+ |
+ void InitializeRenderer(PipelineStatus expected_status) { |
+ VideoRendererBase::VideoDecoderList decoders; |
+ decoders.push_back(decoder_); |
renderer_->Initialize( |
- decoder_, |
- NewExpectedStatusCB(PIPELINE_OK), |
+ demuxer_stream_, |
+ decoders, |
+ NewExpectedStatusCB(expected_status), |
base::Bind(&MockStatisticsCB::OnStatistics, |
base::Unretained(&statistics_cb_object_)), |
base::Bind(&VideoRendererBaseTest::OnTimeUpdate, |
@@ -116,12 +140,6 @@ class VideoRendererBaseTest : public ::testing::Test { |
base::Bind(&VideoRendererBaseTest::GetTime, base::Unretained(this)), |
base::Bind(&VideoRendererBaseTest::GetDuration, |
base::Unretained(this))); |
- |
- // We expect the video size to be set. |
- EXPECT_CALL(*this, OnNaturalSizeChanged(kNaturalSize)); |
- |
- // Start prerolling. |
- Preroll(0); |
} |
// Instead of immediately satisfying a decoder Read request, queue it up. |
@@ -311,6 +329,7 @@ class VideoRendererBaseTest : public ::testing::Test { |
// Fixture members. |
scoped_refptr<VideoRendererBase> renderer_; |
scoped_refptr<MockVideoDecoder> decoder_; |
+ scoped_refptr<MockDemuxerStream> demuxer_stream_; |
MockStatisticsCB statistics_cb_object_; |
// Receives all the buffers that renderer had provided to |decoder_|. |
@@ -671,4 +690,13 @@ TEST_F(VideoRendererBaseTest, AbortPendingRead_Preroll) { |
Shutdown(); |
} |
+TEST_F(VideoRendererBaseTest, VideoDecoder_InitFailure) { |
+ InSequence s; |
+ |
+ EXPECT_CALL(*decoder_, Initialize(_, _, _)) |
+ .WillOnce(RunPipelineStatusCB1(PIPELINE_ERROR_DECODE)); |
+ InitializeRenderer(PIPELINE_ERROR_DECODE); |
+ |
scherkus (not reviewing)
2012/08/14 22:00:24
remove extra newline
acolwell GONE FROM CHROMIUM
2012/08/15 21:36:57
Done.
|
+ } |
scherkus (not reviewing)
2012/08/14 22:00:24
fix indent
acolwell GONE FROM CHROMIUM
2012/08/15 21:36:57
Done.
|
+ |
} // namespace media |