Index: media/filters/video_renderer_impl_unittest.cc |
diff --git a/media/filters/video_renderer_impl_unittest.cc b/media/filters/video_renderer_impl_unittest.cc |
index 6bf6ca1a5886acd52bf9a2668eedab44f1978275..355d8751741f82e7937efce893a167239c94e1e4 100644 |
--- a/media/filters/video_renderer_impl_unittest.cc |
+++ b/media/filters/video_renderer_impl_unittest.cc |
@@ -174,10 +174,9 @@ class VideoRendererImplTest : public ::testing::Test { |
// nn - Queue a decoder buffer with timestamp nn * 1000us |
// abort - Queue an aborted read |
// error - Queue a decoder error |
- // eos - Queue an end of stream decoder buffer |
// |
// Examples: |
- // A clip that is four frames long: "0 10 20 30 eos" |
+ // A clip that is four frames long: "0 10 20 30" |
// A clip that has a decode error: "60 70 error" |
void QueueFrames(const std::string& str) { |
std::vector<std::string> tokens; |
@@ -197,12 +196,6 @@ class VideoRendererImplTest : public ::testing::Test { |
continue; |
} |
- if (tokens[i] == "eos") { |
- decode_results_.push_back( |
- std::make_pair(VideoDecoder::kOk, VideoFrame::CreateEOSFrame())); |
- continue; |
- } |
- |
int timestamp_in_ms = 0; |
if (base::StringToInt(tokens[i], ×tamp_in_ms)) { |
gfx::Size natural_size = TestVideoConfig::NormalCodedSize(); |
@@ -263,6 +256,26 @@ class VideoRendererImplTest : public ::testing::Test { |
decode_results_.pop_front(); |
} |
+ void SatisfyPendingReadWithEndOfStream() { |
+ DCHECK(!decode_cb_.is_null()); |
+ |
+ // Return EOS buffer to trigger EOS frame. |
+ EXPECT_CALL(demuxer_stream_, Read(_)) |
+ .WillOnce(RunCallback<0>(DemuxerStream::kOk, |
+ DecoderBuffer::CreateEOSBuffer())); |
+ |
+ // Satify pending |decode_cb_| to trigger a new DemuxerStream::Read(). |
+ message_loop_.PostTask( |
+ FROM_HERE, |
+ base::Bind(base::ResetAndReturn(&decode_cb_), VideoDecoder::kOk)); |
+ |
+ WaitForPendingRead(); |
+ |
+ message_loop_.PostTask( |
+ FROM_HERE, |
+ base::Bind(base::ResetAndReturn(&decode_cb_), VideoDecoder::kOk)); |
+ } |
+ |
void AdvanceTimeInMs(int time_ms) { |
DCHECK_EQ(&message_loop_, base::MessageLoop::current()); |
base::AutoLock l(lock_); |
@@ -414,10 +427,12 @@ TEST_F(VideoRendererImplTest, EndOfStream_ClipDuration) { |
// Next frame has timestamp way past duration. Its timestamp will be adjusted |
// to match the duration of the video. |
QueueFrames(base::IntToString(kVideoDurationInMs + 1000)); |
+ SatisfyPendingRead(); |
+ WaitForPendingRead(); |
// Queue the end of stream frame and wait for the last frame to be rendered. |
- QueueFrames("eos"); |
- SatisfyPendingRead(); |
+ SatisfyPendingReadWithEndOfStream(); |
+ |
EXPECT_CALL(mock_display_cb_, Display(HasTimestamp(kVideoDurationInMs))); |
AdvanceTimeInMs(kVideoDurationInMs); |
WaitForEnded(); |