Index: media/base/pipeline_unittest.cc |
diff --git a/media/base/pipeline_unittest.cc b/media/base/pipeline_unittest.cc |
index 47e5f0a44749c7a723736942f3d98ca865c88462..45cc73ba36fa7b1a46c5f19aed717b78da5be1fe 100644 |
--- a/media/base/pipeline_unittest.cc |
+++ b/media/base/pipeline_unittest.cc |
@@ -51,10 +51,6 @@ |
pipeline->SetErrorForTesting(status); |
} |
-ACTION_P2(SetBufferingState, cb, buffering_state) { |
- cb->Run(buffering_state); |
-} |
- |
// Used for setting expectations on pipeline callbacks. Using a StrictMock |
// also lets us test for missing callbacks. |
class CallbackHelper { |
@@ -187,8 +183,7 @@ |
// Sets up expectations to allow the audio renderer to initialize. |
void InitializeAudioRenderer(DemuxerStream* stream) { |
EXPECT_CALL(*audio_renderer_, Initialize(stream, _, _, _, _, _, _)) |
- .WillOnce(DoAll(SaveArg<3>(&audio_time_cb_), |
- SaveArg<4>(&audio_buffering_state_cb_), |
+ .WillOnce(DoAll(SaveArg<4>(&audio_time_cb_), |
RunCallback<1>(PIPELINE_OK))); |
} |
@@ -210,9 +205,10 @@ |
if (audio_stream_) { |
EXPECT_CALL(*audio_renderer_, SetPlaybackRate(0.0f)); |
EXPECT_CALL(*audio_renderer_, SetVolume(1.0f)); |
- EXPECT_CALL(*audio_renderer_, StartPlayingFrom(base::TimeDelta())) |
- .WillOnce(SetBufferingState(&audio_buffering_state_cb_, |
- BUFFERING_HAVE_ENOUGH)); |
+ |
+ // Startup sequence. |
+ EXPECT_CALL(*audio_renderer_, Preroll(base::TimeDelta(), _)) |
+ .WillOnce(RunCallback<1>(PIPELINE_OK)); |
EXPECT_CALL(*audio_renderer_, StartRendering()); |
} |
EXPECT_CALL(callbacks_, OnPrerollCompleted()); |
@@ -258,21 +254,17 @@ |
return text_stream_.get(); |
} |
- void ExpectSeek(const base::TimeDelta& seek_time, bool underflowed) { |
+ void ExpectSeek(const base::TimeDelta& seek_time) { |
// Every filter should receive a call to Seek(). |
EXPECT_CALL(*demuxer_, Seek(seek_time, _)) |
.WillOnce(RunCallback<1>(PIPELINE_OK)); |
if (audio_stream_) { |
- if (!underflowed) |
- EXPECT_CALL(*audio_renderer_, StopRendering()); |
+ EXPECT_CALL(*audio_renderer_, StopRendering()); |
EXPECT_CALL(*audio_renderer_, Flush(_)) |
- .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, |
- BUFFERING_HAVE_NOTHING), |
- RunClosure<0>())); |
- EXPECT_CALL(*audio_renderer_, StartPlayingFrom(seek_time)) |
- .WillOnce(SetBufferingState(&audio_buffering_state_cb_, |
- BUFFERING_HAVE_ENOUGH)); |
+ .WillOnce(RunClosure<0>()); |
+ EXPECT_CALL(*audio_renderer_, Preroll(seek_time, _)) |
+ .WillOnce(RunCallback<1>(PIPELINE_OK)); |
EXPECT_CALL(*audio_renderer_, SetPlaybackRate(_)); |
EXPECT_CALL(*audio_renderer_, SetVolume(_)); |
EXPECT_CALL(*audio_renderer_, StartRendering()); |
@@ -341,7 +333,6 @@ |
scoped_ptr<StrictMock<MockDemuxerStream> > video_stream_; |
scoped_ptr<FakeTextTrackStream> text_stream_; |
AudioRenderer::TimeCB audio_time_cb_; |
- AudioRenderer::BufferingStateCB audio_buffering_state_cb_; |
VideoDecoderConfig video_decoder_config_; |
PipelineMetadata metadata_; |
@@ -519,7 +510,7 @@ |
// Every filter should receive a call to Seek(). |
base::TimeDelta expected = base::TimeDelta::FromSeconds(2000); |
- ExpectSeek(expected, false); |
+ ExpectSeek(expected); |
DoSeek(expected); |
} |
@@ -577,7 +568,7 @@ |
EXPECT_EQ(kDuration / 8, pipeline_->GetBufferedTimeRanges().end(0)); |
base::TimeDelta kSeekTime = kDuration / 2; |
- ExpectSeek(kSeekTime, false); |
+ ExpectSeek(kSeekTime); |
DoSeek(kSeekTime); |
EXPECT_FALSE(pipeline_->DidLoadingProgress()); |
@@ -679,9 +670,7 @@ |
// Preroll() isn't called as the demuxer errors out first. |
EXPECT_CALL(*audio_renderer_, StopRendering()); |
EXPECT_CALL(*audio_renderer_, Flush(_)) |
- .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, |
- BUFFERING_HAVE_NOTHING), |
- RunClosure<0>())); |
+ .WillOnce(RunClosure<0>()); |
EXPECT_CALL(*audio_renderer_, Stop(_)) |
.WillOnce(RunClosure<0>()); |
@@ -735,9 +724,7 @@ |
// Seek() isn't called as the demuxer errors out first. |
EXPECT_CALL(*audio_renderer_, StopRendering()); |
EXPECT_CALL(*audio_renderer_, Flush(_)) |
- .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, |
- BUFFERING_HAVE_NOTHING), |
- RunClosure<0>())); |
+ .WillOnce(RunClosure<0>()); |
EXPECT_CALL(*audio_renderer_, Stop(_)) |
.WillOnce(RunClosure<0>()); |
@@ -827,12 +814,9 @@ |
EXPECT_CALL(*audio_renderer_, StopRendering()); |
EXPECT_CALL(*audio_renderer_, Flush(_)) |
- .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, |
- BUFFERING_HAVE_NOTHING), |
- RunClosure<0>())); |
- EXPECT_CALL(*audio_renderer_, StartPlayingFrom(seek_time)) |
- .WillOnce(SetBufferingState(&audio_buffering_state_cb_, |
- BUFFERING_HAVE_ENOUGH)); |
+ .WillOnce(RunClosure<0>()); |
+ EXPECT_CALL(*audio_renderer_, Preroll(seek_time, _)) |
+ .WillOnce(RunCallback<1>(PIPELINE_OK)); |
EXPECT_CALL(*audio_renderer_, SetPlaybackRate(_)); |
EXPECT_CALL(*audio_renderer_, SetVolume(_)); |
EXPECT_CALL(*audio_renderer_, StartRendering()); |
@@ -868,28 +852,6 @@ |
Pipeline* pipeline = pipeline_.get(); |
pipeline->Stop(base::Bind(&DeletePipeline, base::Passed(&pipeline_))); |
message_loop_.RunUntilIdle(); |
-} |
- |
-TEST_F(PipelineTest, Underflow) { |
- CreateAudioStream(); |
- CreateVideoStream(); |
- MockDemuxerStreamVector streams; |
- streams.push_back(audio_stream()); |
- streams.push_back(video_stream()); |
- |
- InitializeDemuxer(&streams); |
- InitializeAudioRenderer(audio_stream()); |
- InitializeVideoRenderer(video_stream()); |
- InitializePipeline(PIPELINE_OK); |
- |
- // Simulate underflow. |
- EXPECT_CALL(*audio_renderer_, StopRendering()); |
- audio_buffering_state_cb_.Run(BUFFERING_HAVE_NOTHING); |
- |
- // Seek while underflowed. We shouldn't call StopRendering() again. |
- base::TimeDelta expected = base::TimeDelta::FromSeconds(5); |
- ExpectSeek(expected, true); |
- DoSeek(expected); |
} |
class PipelineTeardownTest : public PipelineTest { |
@@ -1004,8 +966,7 @@ |
} |
EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _)) |
- .WillOnce(DoAll(SaveArg<4>(&audio_buffering_state_cb_), |
- RunCallback<1>(PIPELINE_OK))); |
+ .WillOnce(RunCallback<1>(PIPELINE_OK)); |
if (state == kInitVideoRenderer) { |
if (stop_or_error == kStop) { |
@@ -1031,9 +992,8 @@ |
EXPECT_CALL(callbacks_, OnMetadata(_)); |
// If we get here it's a successful initialization. |
- EXPECT_CALL(*audio_renderer_, StartPlayingFrom(base::TimeDelta())) |
- .WillOnce(SetBufferingState(&audio_buffering_state_cb_, |
- BUFFERING_HAVE_ENOUGH)); |
+ EXPECT_CALL(*audio_renderer_, Preroll(base::TimeDelta(), _)) |
+ .WillOnce(RunCallback<1>(PIPELINE_OK)); |
EXPECT_CALL(*video_renderer_, Preroll(base::TimeDelta(), _)) |
.WillOnce(RunCallback<1>(PIPELINE_OK)); |
@@ -1080,26 +1040,17 @@ |
if (state == kFlushing) { |
if (stop_or_error == kStop) { |
EXPECT_CALL(*audio_renderer_, Flush(_)) |
- .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), |
- SetBufferingState(&audio_buffering_state_cb_, |
- BUFFERING_HAVE_NOTHING), |
- RunClosure<0>())); |
+ .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), RunClosure<0>())); |
} else { |
status = PIPELINE_ERROR_READ; |
EXPECT_CALL(*audio_renderer_, Flush(_)).WillOnce( |
- DoAll(SetError(pipeline_.get(), status), |
- SetBufferingState(&audio_buffering_state_cb_, |
- BUFFERING_HAVE_NOTHING), |
- RunClosure<0>())); |
+ DoAll(SetError(pipeline_.get(), status), RunClosure<0>())); |
} |
return status; |
} |
- EXPECT_CALL(*audio_renderer_, Flush(_)) |
- .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, |
- BUFFERING_HAVE_NOTHING), |
- RunClosure<0>())); |
+ EXPECT_CALL(*audio_renderer_, Flush(_)).WillOnce(RunClosure<0>()); |
EXPECT_CALL(*video_renderer_, Flush(_)).WillOnce(RunClosure<0>()); |
if (state == kSeeking) { |
@@ -1121,18 +1072,20 @@ |
if (state == kPrerolling) { |
if (stop_or_error == kStop) { |
- EXPECT_CALL(*audio_renderer_, StartPlayingFrom(_)) |
- .WillOnce(Stop(pipeline_.get(), stop_cb)); |
+ EXPECT_CALL(*audio_renderer_, Preroll(_, _)) |
+ .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), |
+ RunCallback<1>(PIPELINE_OK))); |
} else { |
status = PIPELINE_ERROR_READ; |
- EXPECT_CALL(*audio_renderer_, StartPlayingFrom(_)) |
- .WillOnce(SetError(pipeline_.get(), status)); |
+ EXPECT_CALL(*audio_renderer_, Preroll(_, _)) |
+ .WillOnce(RunCallback<1>(status)); |
} |
return status; |
} |
- EXPECT_CALL(*audio_renderer_, StartPlayingFrom(_)); |
+ EXPECT_CALL(*audio_renderer_, Preroll(_, _)) |
+ .WillOnce(RunCallback<1>(PIPELINE_OK)); |
EXPECT_CALL(*video_renderer_, Preroll(_, _)) |
.WillOnce(RunCallback<1>(PIPELINE_OK)); |