Chromium Code Reviews| Index: media/renderers/video_renderer_impl_unittest.cc |
| diff --git a/media/renderers/video_renderer_impl_unittest.cc b/media/renderers/video_renderer_impl_unittest.cc |
| index e6a8c9ac9d144c54db5ae399cc979a1338ea2468..b3eb2ae54e91b0c29b9149a8f39ae4d4b80b9bd4 100644 |
| --- a/media/renderers/video_renderer_impl_unittest.cc |
| +++ b/media/renderers/video_renderer_impl_unittest.cc |
| @@ -51,8 +51,7 @@ MATCHER_P(HasTimestamp, ms, "") { |
| return arg->timestamp().InMilliseconds() == ms; |
| } |
| -class VideoRendererImplTest |
| - : public testing::Test { |
| +class VideoRendererImplTest : public testing::Test { |
| public: |
| VideoRendererImplTest() |
| : tick_clock_(new base::SimpleTestTickClock()), |
| @@ -120,18 +119,11 @@ class VideoRendererImplTest |
| EXPECT_CALL(*decoder_, Initialize(_, _, _, _, _)) |
| .WillOnce( |
| DoAll(SaveArg<4>(&output_cb_), RunCallback<3>(expect_success))); |
| - EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0); |
| - renderer_->Initialize( |
| - &demuxer_stream_, status_cb, nullptr, |
| - base::Bind(&VideoRendererImplTest::OnStatisticsUpdate, |
| - base::Unretained(this)), |
| - base::Bind(&StrictMock<MockCB>::BufferingStateChange, |
| - base::Unretained(&mock_cb_)), |
| - ended_event_.GetClosure(), error_event_.GetPipelineStatusCB(), |
| - base::Bind(&WallClockTimeSource::GetWallClockTimes, |
| - base::Unretained(&time_source_)), |
| - base::Bind(&VideoRendererImplTest::OnWaitingForDecryptionKey, |
| - base::Unretained(this))); |
| + EXPECT_CALL(mock_cb_, OnWaitingForDecryptionKey()).Times(0); |
| + renderer_->Initialize(&demuxer_stream_, nullptr, &mock_cb_, |
| + base::Bind(&WallClockTimeSource::GetWallClockTimes, |
| + base::Unretained(&time_source_)), |
| + status_cb); |
| } |
| void StartPlayingFrom(int milliseconds) { |
| @@ -205,12 +197,20 @@ class VideoRendererImplTest |
| void WaitForError(PipelineStatus expected) { |
| SCOPED_TRACE(base::StringPrintf("WaitForError(%d)", expected)); |
| - error_event_.RunAndWaitForStatus(expected); |
| + |
| + WaitableMessageLoopEvent event; |
| + PipelineStatusCB error_cb = event.GetPipelineStatusCB(); |
| + EXPECT_CALL(mock_cb_, OnError(_)) |
| + .WillOnce(Invoke(&error_cb, &PipelineStatusCB::Run)); |
| + event.RunAndWaitForStatus(expected); |
| } |
| void WaitForEnded() { |
| SCOPED_TRACE("WaitForEnded()"); |
| - ended_event_.RunAndWait(); |
| + |
| + WaitableMessageLoopEvent event; |
| + EXPECT_CALL(mock_cb_, OnEnded()).WillOnce(RunClosure(event.GetClosure())); |
| + event.RunAndWait(); |
| } |
| void WaitForPendingRead() { |
| @@ -277,10 +277,6 @@ class VideoRendererImplTest |
| time_source_.StartTicking(); |
| } |
| - bool has_ended() const { |
| - return ended_event_.is_signaled(); |
| - } |
| - |
| enum class UnderflowTestType { |
| NORMAL, |
| LOW_DELAY, |
| @@ -296,8 +292,9 @@ class VideoRendererImplTest |
| { |
| WaitableMessageLoopEvent event; |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(0))); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| .WillOnce(RunClosure(event.GetClosure())); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| StartPlayingFrom(0); |
| event.RunAndWait(); |
| Mock::VerifyAndClearExpectations(&mock_cb_); |
| @@ -321,6 +318,7 @@ class VideoRendererImplTest |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(60))).Times(0); |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(90))) |
| .WillOnce(RunClosure(event.GetClosure())); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| AdvanceTimeInMs(91); |
| event.RunAndWait(); |
| @@ -332,7 +330,7 @@ class VideoRendererImplTest |
| { |
| SCOPED_TRACE("Waiting for BUFFERING_HAVE_NOTHING"); |
| WaitableMessageLoopEvent event; |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_NOTHING)) |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)) |
| .WillOnce(RunClosure(event.GetClosure())); |
| AdvanceTimeInMs(30); |
| event.RunAndWait(); |
| @@ -347,13 +345,13 @@ class VideoRendererImplTest |
| { |
| SCOPED_TRACE("Waiting for BUFFERING_HAVE_ENOUGH"); |
| WaitableMessageLoopEvent event; |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| .WillOnce(RunClosure(event.GetClosure())); |
| + EXPECT_CALL(mock_cb_, OnEnded()); |
| SatisfyPendingReadWithEndOfStream(); |
| event.RunAndWait(); |
| } |
| - WaitForEnded(); |
| Destroy(); |
| } |
| @@ -366,8 +364,9 @@ class VideoRendererImplTest |
| { |
| WaitableMessageLoopEvent event; |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(0))); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| .WillOnce(RunClosure(event.GetClosure())); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| StartPlayingFrom(0); |
| event.RunAndWait(); |
| Mock::VerifyAndClearExpectations(&mock_cb_); |
| @@ -380,9 +379,10 @@ class VideoRendererImplTest |
| { |
| SCOPED_TRACE("Waiting for BUFFERING_HAVE_NOTHING"); |
| WaitableMessageLoopEvent event; |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_NOTHING)) |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)) |
| .WillOnce(RunClosure(event.GetClosure())); |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(20))).Times(1); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| AdvanceTimeInMs(20); |
| event.RunAndWait(); |
| Mock::VerifyAndClearExpectations(&mock_cb_); |
| @@ -401,7 +401,7 @@ class VideoRendererImplTest |
| SCOPED_TRACE("Waiting for BUFFERING_HAVE_ENOUGH"); |
| WaitableMessageLoopEvent event; |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(80))).Times(1); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| .WillOnce(RunClosure(event.GetClosure())); |
| if (type == UnderflowTestType::NORMAL) |
| QueueFrames("80 100 120 140 160"); |
| @@ -422,18 +422,22 @@ class VideoRendererImplTest |
| NiceMock<MockDemuxerStream> demuxer_stream_; |
| // Use StrictMock<T> to catch missing/extra callbacks. |
| - class MockCB { |
| + class MockCB : public RendererClient { |
| public: |
| MOCK_METHOD1(FrameReceived, void(const scoped_refptr<VideoFrame>&)); |
| - MOCK_METHOD1(BufferingStateChange, void(BufferingState)); |
| + |
| + // RendererClient implementation. |
| + MOCK_METHOD1(OnError, void(PipelineStatus)); |
| + MOCK_METHOD0(OnEnded, void()); |
| + MOCK_METHOD1(OnStatisticsUpdate, void(const PipelineStatistics&)); |
| + MOCK_METHOD1(OnBufferingStateChange, void(BufferingState)); |
| + MOCK_METHOD0(OnWaitingForDecryptionKey, void()); |
|
xhwang
2016/05/12 20:51:19
ditto about using MockRendererClient.
alokp
2016/05/12 21:46:51
Done. And also in renderer_impl_unittest.cc
|
| }; |
| StrictMock<MockCB> mock_cb_; |
| // Must be destroyed before |renderer_| since they share |tick_clock_|. |
| std::unique_ptr<NullVideoSink> null_video_sink_; |
| - PipelineStatistics last_pipeline_statistics_; |
| - |
| WallClockTimeSource time_source_; |
| base::MessageLoop message_loop_; |
| @@ -466,12 +470,6 @@ class VideoRendererImplTest |
| message_loop_.PostTask(FROM_HERE, callback); |
| } |
| - void OnStatisticsUpdate(const PipelineStatistics& stats) { |
| - last_pipeline_statistics_ = stats; |
| - } |
| - |
| - MOCK_METHOD0(OnWaitingForDecryptionKey, void(void)); |
| - |
| // Used to protect |time_|. |
| base::Lock lock_; |
| base::TimeDelta time_; |
| @@ -481,9 +479,6 @@ class VideoRendererImplTest |
| VideoDecoder::DecodeCB decode_cb_; |
| base::TimeDelta next_frame_timestamp_; |
| - WaitableMessageLoopEvent error_event_; |
| - WaitableMessageLoopEvent ended_event_; |
| - |
| // Run during DecodeRequested() to unblock WaitForPendingRead(). |
| base::Closure wait_for_pending_decode_cb_; |
| @@ -511,7 +506,8 @@ TEST_F(VideoRendererImplTest, InitializeAndStartPlayingFrom) { |
| Initialize(); |
| QueueFrames("0 10 20 30"); |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(0))); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| StartPlayingFrom(0); |
| Destroy(); |
| } |
| @@ -523,8 +519,9 @@ TEST_F(VideoRendererImplTest, InitializeAndEndOfStream) { |
| { |
| SCOPED_TRACE("Waiting for BUFFERING_HAVE_ENOUGH"); |
| WaitableMessageLoopEvent event; |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| .WillOnce(RunClosure(event.GetClosure())); |
| + EXPECT_CALL(mock_cb_, OnEnded()); |
| SatisfyPendingReadWithEndOfStream(); |
| event.RunAndWait(); |
| } |
| @@ -543,9 +540,9 @@ TEST_F(VideoRendererImplTest, DestroyWhileFlushing) { |
| Initialize(); |
| QueueFrames("0 10 20 30"); |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(0))); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| StartPlayingFrom(0); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_NOTHING)); |
| renderer_->Flush(NewExpectedClosure()); |
| Destroy(); |
| } |
| @@ -554,7 +551,8 @@ TEST_F(VideoRendererImplTest, Play) { |
| Initialize(); |
| QueueFrames("0 10 20 30"); |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(0))); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| StartPlayingFrom(0); |
| Destroy(); |
| } |
| @@ -577,9 +575,10 @@ TEST_F(VideoRendererImplTest, DecodeError_Playing) { |
| // Consider the case that rendering is faster than we setup the test event. |
| // In that case, when we run out of the frames, BUFFERING_HAVE_NOTHING will |
| // be called. |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_NOTHING)) |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)) |
| .Times(testing::AtMost(1)); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| StartPlayingFrom(0); |
| renderer_->OnTimeStateChanged(true); |
| @@ -595,6 +594,7 @@ TEST_F(VideoRendererImplTest, DecodeError_Playing) { |
| TEST_F(VideoRendererImplTest, DecodeError_DuringStartPlayingFrom) { |
| Initialize(); |
| QueueFrames("error"); |
| + EXPECT_CALL(mock_cb_, OnError(PIPELINE_ERROR_DECODE)); |
| StartPlayingFrom(0); |
| Destroy(); |
| } |
| @@ -604,7 +604,8 @@ TEST_F(VideoRendererImplTest, StartPlayingFrom_Exact) { |
| QueueFrames("50 60 70 80 90"); |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(60))); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| StartPlayingFrom(60); |
| Destroy(); |
| } |
| @@ -614,7 +615,8 @@ TEST_F(VideoRendererImplTest, StartPlayingFrom_RightBefore) { |
| QueueFrames("50 60 70 80 90"); |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(50))); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| StartPlayingFrom(59); |
| Destroy(); |
| } |
| @@ -624,7 +626,8 @@ TEST_F(VideoRendererImplTest, StartPlayingFrom_RightAfter) { |
| QueueFrames("50 60 70 80 90"); |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(60))); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| StartPlayingFrom(61); |
| Destroy(); |
| } |
| @@ -637,10 +640,11 @@ TEST_F(VideoRendererImplTest, StartPlayingFrom_LowDelay) { |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(10))); |
| // Expect some amount of have enough/nothing due to only requiring one frame. |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| .Times(AnyNumber()); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_NOTHING)) |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)) |
| .Times(AnyNumber()); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| StartPlayingFrom(10); |
| QueueFrames("20"); |
| @@ -663,7 +667,8 @@ TEST_F(VideoRendererImplTest, DestroyDuringOutstandingRead) { |
| Initialize(); |
| QueueFrames("0 10 20 30"); |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(0))); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| StartPlayingFrom(0); |
| // Check that there is an outstanding Read() request. |
| @@ -708,7 +713,9 @@ TEST_F(VideoRendererImplTest, RenderingStopsAfterFirstFrame) { |
| QueueFrames("0"); |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(0))); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| + EXPECT_CALL(mock_cb_, OnEnded()).Times(0); |
| { |
| SCOPED_TRACE("Waiting for sink to stop."); |
| @@ -724,7 +731,6 @@ TEST_F(VideoRendererImplTest, RenderingStopsAfterFirstFrame) { |
| event.RunAndWait(); |
| } |
| - EXPECT_FALSE(has_ended()); |
| Destroy(); |
| } |
| @@ -735,7 +741,8 @@ TEST_F(VideoRendererImplTest, RenderingStopsAfterOneFrameWithEOS) { |
| QueueFrames("0"); |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(0))); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| { |
| SCOPED_TRACE("Waiting for sink to stop."); |
| @@ -764,26 +771,29 @@ TEST_F(VideoRendererImplTest, RenderingStartedThenStopped) { |
| // Start the sink and wait for the first callback. Set statistics to a non |
| // zero value, once we have some decoded frames they should be overwritten. |
| - last_pipeline_statistics_.video_frames_dropped = 1; |
| + PipelineStatistics last_pipeline_statistics; |
| + last_pipeline_statistics.video_frames_dropped = 1; |
| { |
| WaitableMessageLoopEvent event; |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(0))) |
| .WillOnce(RunClosure(event.GetClosure())); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)) |
| + .WillRepeatedly(SaveArg<0>(&last_pipeline_statistics)); |
| StartPlayingFrom(0); |
| event.RunAndWait(); |
| Mock::VerifyAndClearExpectations(&mock_cb_); |
| - EXPECT_EQ(0u, last_pipeline_statistics_.video_frames_dropped); |
| - EXPECT_EQ(460800, last_pipeline_statistics_.video_memory_usage); |
| + EXPECT_EQ(0u, last_pipeline_statistics.video_frames_dropped); |
| + EXPECT_EQ(460800, last_pipeline_statistics.video_memory_usage); |
| } |
| // Consider the case that rendering is faster than we setup the test event. |
| // In that case, when we run out of the frames, BUFFERING_HAVE_NOTHING will |
| // be called. And then during SatisfyPendingReadWithEndOfStream, |
| // BUFFER_HAVE_ENOUGH will be called again. |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| .Times(testing::AtMost(1)); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_NOTHING)) |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)) |
| .Times(testing::AtMost(1)); |
| renderer_->OnTimeStateChanged(true); |
| time_source_.StartTicking(); |
| @@ -800,9 +810,9 @@ TEST_F(VideoRendererImplTest, RenderingStartedThenStopped) { |
| // If this wasn't background rendering mode, this would result in two frames |
| // being dropped, but since we set background render to true, none should be |
| // reported |
| - EXPECT_EQ(0u, last_pipeline_statistics_.video_frames_dropped); |
| - EXPECT_EQ(4u, last_pipeline_statistics_.video_frames_decoded); |
| - EXPECT_EQ(460800, last_pipeline_statistics_.video_memory_usage); |
| + EXPECT_EQ(0u, last_pipeline_statistics.video_frames_dropped); |
| + EXPECT_EQ(4u, last_pipeline_statistics.video_frames_decoded); |
| + EXPECT_EQ(460800, last_pipeline_statistics.video_memory_usage); |
| AdvanceTimeInMs(30); |
| WaitForEnded(); |
| @@ -815,8 +825,9 @@ TEST_F(VideoRendererImplTest, StartPlayingFromThenFlushThenEOS) { |
| WaitableMessageLoopEvent event; |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(0))); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| .WillOnce(RunClosure(event.GetClosure())); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| StartPlayingFrom(0); |
| event.RunAndWait(); |
| @@ -826,13 +837,13 @@ TEST_F(VideoRendererImplTest, StartPlayingFromThenFlushThenEOS) { |
| // Flush and simulate a seek past EOS, where some error prevents the decoder |
| // from returning any frames. |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_NOTHING)); |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)); |
| Flush(); |
| StartPlayingFrom(200); |
| WaitForPendingRead(); |
| SatisfyPendingReadWithEndOfStream(); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| WaitForEnded(); |
| Destroy(); |
| } |
| @@ -846,9 +857,10 @@ TEST_F(VideoRendererImplTest, FramesAreNotExpiredDuringPreroll) { |
| // by VFC. |
| null_video_sink_->set_background_render(true); |
| QueueFrames("0 10 20"); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
| .Times(testing::AtMost(1)); |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(0))); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| StartPlayingFrom(0); |
| renderer_->OnTimeStateChanged(true); |
| @@ -881,7 +893,8 @@ TEST_F(VideoRendererImplAsyncAddFrameReadyTest, InitializeAndStartPlayingFrom) { |
| Initialize(); |
| QueueFrames("0 10 20 30"); |
| EXPECT_CALL(mock_cb_, FrameReceived(HasTimestamp(0))); |
| - EXPECT_CALL(mock_cb_, BufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| + EXPECT_CALL(mock_cb_, OnStatisticsUpdate(_)).Times(AnyNumber()); |
| StartPlayingFrom(0); |
| ASSERT_EQ(1u, frame_ready_cbs_.size()); |