| 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 efa45fb1ab52686104ea8efadb10a7d5d3d72982..56898926cc63092c376fb05694f0e5cbcd9237bc 100644
|
| --- a/media/filters/video_renderer_impl_unittest.cc
|
| +++ b/media/filters/video_renderer_impl_unittest.cc
|
| @@ -421,7 +421,7 @@ TEST_F(VideoRendererImplTest, FlushWithNothingBuffered) {
|
|
|
| TEST_F(VideoRendererImplTest, EndOfStream_ClipDuration) {
|
| Initialize();
|
| - QueueFrames("0 10 20 30");
|
| + QueueFrames("0");
|
| EXPECT_CALL(mock_cb_, Display(HasTimestamp(0)));
|
| EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH));
|
| StartPlayingFrom(0);
|
| @@ -497,8 +497,12 @@ TEST_F(VideoRendererImplTest, StartPlayingFrom_LowDelay) {
|
| InitializeWithLowDelay(true);
|
| QueueFrames("0");
|
|
|
| + // Expect to frequently have enough/nothing due to only requiring one frame.
|
| EXPECT_CALL(mock_cb_, Display(HasTimestamp(0)));
|
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH));
|
| + EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH))
|
| + .Times(AtLeast(1));
|
| + EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_NOTHING))
|
| + .Times(AtLeast(1));
|
| StartPlayingFrom(0);
|
|
|
| QueueFrames("10");
|
| @@ -547,4 +551,35 @@ TEST_F(VideoRendererImplTest, VideoDecoder_InitFailure) {
|
| Stop();
|
| }
|
|
|
| +TEST_F(VideoRendererImplTest, Underflow) {
|
| + Initialize();
|
| + QueueFrames("0 10 20 30");
|
| + EXPECT_CALL(mock_cb_, Display(HasTimestamp(0)));
|
| + EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH));
|
| + StartPlayingFrom(0);
|
| +
|
| + // Frames should be dropped and we should signal having nothing.
|
| + {
|
| + SCOPED_TRACE("Waiting for BUFFERING_HAVE_NOTHING");
|
| + WaitableMessageLoopEvent event;
|
| + EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_NOTHING))
|
| + .WillOnce(RunClosure(event.GetClosure()));
|
| + AdvanceTimeInMs(100);
|
| + event.RunAndWait();
|
| + }
|
| +
|
| + // Receiving end of stream should signal having enough.
|
| + {
|
| + SCOPED_TRACE("Waiting for BUFFERING_HAVE_ENOUGH");
|
| + WaitableMessageLoopEvent event;
|
| + EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH))
|
| + .WillOnce(RunClosure(event.GetClosure()));
|
| + SatisfyPendingReadWithEndOfStream();
|
| + event.RunAndWait();
|
| + }
|
| +
|
| + WaitForEnded();
|
| + Shutdown();
|
| +}
|
| +
|
| } // namespace media
|
|
|