| 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 b7be329bed8f7b8a9b2e52cf69e3e3073a44911e..e7c3f0c4db33ba3fe4b0b7d294bd876743e8637f 100644
|
| --- a/media/filters/video_renderer_base_unittest.cc
|
| +++ b/media/filters/video_renderer_base_unittest.cc
|
| @@ -131,7 +131,7 @@ class VideoRendererBaseTest : public ::testing::Test {
|
| VideoDecoder::ReadCB read_cb(queued_read_cb_);
|
| queued_read_cb_.Reset();
|
| base::AutoUnlock u(lock_);
|
| - read_cb.Run(VideoFrame::CreateEmptyFrame());
|
| + read_cb.Run(VideoDecoder::kOk, VideoFrame::CreateEmptyFrame());
|
| }
|
|
|
| void StartSeeking(int64 timestamp) {
|
| @@ -192,27 +192,36 @@ class VideoRendererBaseTest : public ::testing::Test {
|
| VideoDecoder::ReadCB read_cb;
|
| {
|
| base::AutoLock l(lock_);
|
| - CHECK(!read_cb_.is_null()) << "Can't deliver a frame without a callback";
|
| std::swap(read_cb, read_cb_);
|
| }
|
|
|
| if (timestamp == kEndOfStream) {
|
| - read_cb.Run(VideoFrame::CreateEmptyFrame());
|
| + read_cb.Run(VideoDecoder::kOk, VideoFrame::CreateEmptyFrame());
|
| } else {
|
| - read_cb.Run(CreateFrame(timestamp, kFrameDuration));
|
| + read_cb.Run(VideoDecoder::kOk, CreateFrame(timestamp, kFrameDuration));
|
| }
|
| }
|
|
|
| + void DecoderError() {
|
| + // Lock+swap to avoid re-entrancy issues.
|
| + VideoDecoder::ReadCB read_cb;
|
| + {
|
| + base::AutoLock l(lock_);
|
| + std::swap(read_cb, read_cb_);
|
| + }
|
| +
|
| + read_cb.Run(VideoDecoder::kDecodeError, NULL);
|
| + }
|
| +
|
| void AbortRead() {
|
| // Lock+swap to avoid re-entrancy issues.
|
| VideoDecoder::ReadCB read_cb;
|
| {
|
| base::AutoLock l(lock_);
|
| - CHECK(!read_cb_.is_null()) << "Can't deliver a frame without a callback";
|
| std::swap(read_cb, read_cb_);
|
| }
|
|
|
| - read_cb.Run(NULL);
|
| + read_cb.Run(VideoDecoder::kOk, NULL);
|
| }
|
|
|
| void ExpectCurrentFrame(bool present) {
|
| @@ -335,7 +344,7 @@ class VideoRendererBaseTest : public ::testing::Test {
|
|
|
| // Abort pending read.
|
| if (!read_cb.is_null())
|
| - read_cb.Run(NULL);
|
| + read_cb.Run(VideoDecoder::kOk, NULL);
|
|
|
| callback.Run();
|
| }
|
| @@ -364,9 +373,10 @@ class VideoRendererBaseTest : public ::testing::Test {
|
| // Unlock to deliver the frame to avoid re-entrancy issues.
|
| base::AutoUnlock ul(lock_);
|
| if (timestamp == kEndOfStream) {
|
| - read_cb.Run(VideoFrame::CreateEmptyFrame());
|
| + read_cb.Run(VideoDecoder::kOk, VideoFrame::CreateEmptyFrame());
|
| } else {
|
| - read_cb.Run(CreateFrame(i * kFrameDuration, kFrameDuration));
|
| + read_cb.Run(VideoDecoder::kOk,
|
| + CreateFrame(i * kFrameDuration, kFrameDuration));
|
| i++;
|
| }
|
| } else {
|
| @@ -444,6 +454,15 @@ TEST_F(VideoRendererBaseTest, EndOfStream) {
|
| Shutdown();
|
| }
|
|
|
| +TEST_F(VideoRendererBaseTest, DecoderError) {
|
| + Initialize();
|
| + Play();
|
| + RenderFrame(kFrameDuration);
|
| + EXPECT_CALL(host_, SetError(PIPELINE_ERROR_DECODE));
|
| + DecoderError();
|
| + Shutdown();
|
| +}
|
| +
|
| TEST_F(VideoRendererBaseTest, Seek_Exact) {
|
| Initialize();
|
| Pause();
|
|
|