Chromium Code Reviews| Index: media/base/pipeline_unittest.cc |
| diff --git a/media/base/pipeline_unittest.cc b/media/base/pipeline_unittest.cc |
| index 1ff12c23d8b6e136059add328593151ab85bbbfb..683f870d5acbcb9e0b565e706bc985b41508d0f9 100644 |
| --- a/media/base/pipeline_unittest.cc |
| +++ b/media/base/pipeline_unittest.cc |
| @@ -42,6 +42,14 @@ ACTION_P(SetDemuxerProperties, duration) { |
| arg0->SetDuration(duration); |
| } |
| +ACTION_P2(Stop, pipeline, stop_cb) { |
| + pipeline->Stop(stop_cb); |
| +} |
| + |
| +ACTION_P2(SetError, pipeline, status) { |
| + pipeline->SetErrorForTesting(status); |
| +} |
| + |
| ACTION(RunPipelineStatusCB1) { |
| arg1.Run(PIPELINE_OK); |
| } |
| @@ -90,35 +98,23 @@ class PipelineTest : public ::testing::Test { |
| } |
| virtual ~PipelineTest() { |
| - if (!pipeline_->IsRunning()) { |
| - return; |
| - } |
| - |
| // Shutdown sequence. |
| - if (pipeline_->IsInitialized()) { |
| + if (pipeline_->IsRunning()) { |
| EXPECT_CALL(*mocks_->demuxer(), Stop(_)) |
| .WillOnce(RunClosure()); |
| if (audio_stream_) { |
| - EXPECT_CALL(*mocks_->audio_renderer(), Pause(_)) |
|
scherkus (not reviewing)
2012/07/28 02:26:07
Note lack of Pause/Flush prior to Stop!
|
| - .WillOnce(RunClosure()); |
| - EXPECT_CALL(*mocks_->audio_renderer(), Flush(_)) |
| - .WillOnce(RunClosure()); |
| EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)) |
| .WillOnce(RunClosure()); |
| } |
| if (video_stream_) { |
| - EXPECT_CALL(*mocks_->video_renderer(), Pause(_)) |
| - .WillOnce(RunClosure()); |
| - EXPECT_CALL(*mocks_->video_renderer(), Flush(_)) |
| - .WillOnce(RunClosure()); |
| EXPECT_CALL(*mocks_->video_renderer(), Stop(_)) |
| .WillOnce(RunClosure()); |
| } |
| } |
| - // Expect a stop callback if we were started. |
| + // Stop() callbacks are always executed regardless of run state. |
| EXPECT_CALL(callbacks_, OnStop()); |
| pipeline_->Stop(base::Bind(&CallbackHelper::OnStop, |
| base::Unretained(&callbacks_))); |
| @@ -250,6 +246,7 @@ class PipelineTest : public ::testing::Test { |
| // Every filter should receive a call to Seek(). |
| EXPECT_CALL(*mocks_->demuxer(), Seek(seek_time, _)) |
| .WillOnce(RunPipelineStatusCB1()); |
| + EXPECT_CALL(*mocks_->demuxer(), SetPlaybackRate(_)); |
| if (audio_stream_) { |
| EXPECT_CALL(*mocks_->audio_renderer(), Pause(_)) |
| @@ -258,6 +255,8 @@ class PipelineTest : public ::testing::Test { |
| .WillOnce(RunClosure()); |
| EXPECT_CALL(*mocks_->audio_renderer(), Preroll(seek_time, _)) |
| .WillOnce(RunPipelineStatusCB1()); |
| + EXPECT_CALL(*mocks_->audio_renderer(), SetPlaybackRate(_)); |
| + EXPECT_CALL(*mocks_->audio_renderer(), SetVolume(_)); |
|
scherkus (not reviewing)
2012/07/28 02:26:07
note new calls to SPR/SV()
|
| EXPECT_CALL(*mocks_->audio_renderer(), Play(_)) |
| .WillOnce(RunClosure()); |
| } |
| @@ -269,6 +268,7 @@ class PipelineTest : public ::testing::Test { |
| .WillOnce(RunClosure()); |
| EXPECT_CALL(*mocks_->video_renderer(), Preroll(seek_time, _)) |
| .WillOnce(RunPipelineStatusCB1()); |
| + EXPECT_CALL(*mocks_->video_renderer(), SetPlaybackRate(_)); |
| EXPECT_CALL(*mocks_->video_renderer(), Play(_)) |
| .WillOnce(RunClosure()); |
| } |
| @@ -288,6 +288,17 @@ class PipelineTest : public ::testing::Test { |
| EXPECT_EQ(seek_time, pipeline_->GetMediaTime()); |
| } |
| + void SetupErrorTest() { |
| + CreateAudioStream(); |
| + MockDemuxerStreamVector streams; |
| + streams.push_back(audio_stream()); |
| + |
| + InitializeDemuxer(&streams, base::TimeDelta::FromSeconds(3000)); |
| + InitializeAudioDecoder(audio_stream()); |
| + InitializeAudioRenderer(); |
| + InitializePipeline(PIPELINE_OK); |
| + } |
| + |
| // Fixture members. |
| StrictMock<CallbackHelper> callbacks_; |
| MessageLoop message_loop_; |
| @@ -307,7 +318,6 @@ TEST_F(PipelineTest, NotStarted) { |
| const base::TimeDelta kZero; |
| EXPECT_FALSE(pipeline_->IsRunning()); |
| - EXPECT_FALSE(pipeline_->IsInitialized()); |
| EXPECT_FALSE(pipeline_->HasAudio()); |
| EXPECT_FALSE(pipeline_->HasVideo()); |
| @@ -338,31 +348,6 @@ TEST_F(PipelineTest, NotStarted) { |
| EXPECT_EQ(0, size.height()); |
| } |
| -TEST_F(PipelineTest, NeverInitializes) { |
|
scherkus (not reviewing)
2012/07/28 02:26:07
this test hangs with the new pipeline because insi
acolwell GONE FROM CHROMIUM
2012/07/30 18:33:10
Doesn't this essentially test the case where the p
|
| - // Don't execute the callback passed into Initialize(). |
| - EXPECT_CALL(*mocks_->demuxer(), Initialize(_, _)); |
| - EXPECT_CALL(*mocks_->demuxer(), Stop(_)) |
| - .WillOnce(RunClosure()); |
| - |
| - // This test hangs during initialization by never calling |
| - // InitializationComplete(). StrictMock<> will ensure that the callback is |
| - // never executed. |
| - pipeline_->Start( |
| - mocks_->Create().Pass(), |
| - base::Bind(&CallbackHelper::OnEnded, base::Unretained(&callbacks_)), |
| - base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)), |
| - base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_))); |
| - message_loop_.RunAllPending(); |
| - |
| - EXPECT_FALSE(pipeline_->IsInitialized()); |
| - |
| - // Because our callback will get executed when the test tears down, we'll |
| - // verify that nothing has been called, then set our expectation for the call |
| - // made during tear down. |
| - Mock::VerifyAndClear(&callbacks_); |
| - EXPECT_CALL(callbacks_, OnStart(PIPELINE_OK)); |
| -} |
| - |
| TEST_F(PipelineTest, RequiredFilterMissing) { |
| // Create a filter collection with missing filter. |
| scoped_ptr<FilterCollection> collection(mocks_->Create()); |
| @@ -375,7 +360,6 @@ TEST_F(PipelineTest, RequiredFilterMissing) { |
| base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)), |
| base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_))); |
| message_loop_.RunAllPending(); |
| - EXPECT_FALSE(pipeline_->IsInitialized()); |
| } |
| TEST_F(PipelineTest, URLNotFound) { |
| @@ -385,7 +369,6 @@ TEST_F(PipelineTest, URLNotFound) { |
| .WillOnce(RunClosure()); |
| InitializePipeline(PIPELINE_ERROR_URL_NOT_FOUND); |
| - EXPECT_FALSE(pipeline_->IsInitialized()); |
| } |
| TEST_F(PipelineTest, NoStreams) { |
| @@ -395,7 +378,6 @@ TEST_F(PipelineTest, NoStreams) { |
| .WillOnce(RunClosure()); |
| InitializePipeline(PIPELINE_ERROR_COULD_NOT_RENDER); |
| - EXPECT_FALSE(pipeline_->IsInitialized()); |
| } |
| TEST_F(PipelineTest, AudioStream) { |
| @@ -408,7 +390,6 @@ TEST_F(PipelineTest, AudioStream) { |
| InitializeAudioRenderer(); |
| InitializePipeline(PIPELINE_OK); |
| - EXPECT_TRUE(pipeline_->IsInitialized()); |
| EXPECT_TRUE(pipeline_->HasAudio()); |
| EXPECT_FALSE(pipeline_->HasVideo()); |
| } |
| @@ -423,7 +404,6 @@ TEST_F(PipelineTest, VideoStream) { |
| InitializeVideoRenderer(); |
| InitializePipeline(PIPELINE_OK); |
| - EXPECT_TRUE(pipeline_->IsInitialized()); |
| EXPECT_FALSE(pipeline_->HasAudio()); |
| EXPECT_TRUE(pipeline_->HasVideo()); |
| } |
| @@ -442,7 +422,6 @@ TEST_F(PipelineTest, AudioVideoStream) { |
| InitializeVideoRenderer(); |
| InitializePipeline(PIPELINE_OK); |
| - EXPECT_TRUE(pipeline_->IsInitialized()); |
| EXPECT_TRUE(pipeline_->HasAudio()); |
| EXPECT_TRUE(pipeline_->HasVideo()); |
| } |
| @@ -469,6 +448,177 @@ TEST_F(PipelineTest, Seek) { |
| DoSeek(expected); |
| } |
| +TEST_F(PipelineTest, Stop_DuringStart) { |
| + base::Closure stop_cb = base::Bind( |
| + &CallbackHelper::OnStop, base::Unretained(&callbacks_)); |
| + |
| + EXPECT_CALL(*mocks_->demuxer(), Initialize(_, _)) |
| + .WillOnce(DoAll(Stop(pipeline_, stop_cb), RunPipelineStatusCB1())); |
| + EXPECT_CALL(*mocks_->demuxer(), Stop(_)) |
| + .WillOnce(RunClosure()); |
| + |
| + // Start and stop callback should fire. |
| + EXPECT_CALL(callbacks_, OnStop()); |
| + InitializePipeline(PIPELINE_OK); |
| +} |
| + |
| +TEST_F(PipelineTest, Stop_DuringPause) { |
| + SetupErrorTest(); |
| + base::Closure stop_cb = base::Bind( |
| + &CallbackHelper::OnStop, base::Unretained(&callbacks_)); |
| + |
| + EXPECT_CALL(*mocks_->audio_renderer(), Pause(_)) |
| + .WillOnce(DoAll(Stop(pipeline_, stop_cb), RunClosure())); |
| + EXPECT_CALL(*mocks_->demuxer(), Stop(_)).WillOnce(RunClosure()); |
| + EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)).WillOnce(RunClosure()); |
| + |
| + // Seek and stop callbacks should fire. |
| + EXPECT_CALL(callbacks_, OnSeek(PIPELINE_OK)); |
| + EXPECT_CALL(callbacks_, OnStop()); |
| + pipeline_->Seek(base::TimeDelta::FromSeconds(10), base::Bind( |
| + &CallbackHelper::OnSeek, base::Unretained(&callbacks_))); |
| + message_loop_.RunAllPending(); |
| +} |
| + |
| +TEST_F(PipelineTest, Stop_DuringFlush) { |
| + SetupErrorTest(); |
| + base::Closure stop_cb = base::Bind( |
| + &CallbackHelper::OnStop, base::Unretained(&callbacks_)); |
| + |
| + EXPECT_CALL(*mocks_->audio_renderer(), Pause(_)).WillOnce(RunClosure()); |
| + EXPECT_CALL(*mocks_->audio_renderer(), Flush(_)) |
| + .WillOnce(DoAll(Stop(pipeline_, stop_cb), RunClosure())); |
| + EXPECT_CALL(*mocks_->demuxer(), Stop(_)).WillOnce(RunClosure()); |
| + EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)).WillOnce(RunClosure()); |
| + |
| + // Seek and stop callbacks should fire. |
| + EXPECT_CALL(callbacks_, OnSeek(PIPELINE_OK)); |
| + EXPECT_CALL(callbacks_, OnStop()); |
| + pipeline_->Seek(base::TimeDelta::FromSeconds(10), base::Bind( |
| + &CallbackHelper::OnSeek, base::Unretained(&callbacks_))); |
| + message_loop_.RunAllPending(); |
| +} |
| + |
| +TEST_F(PipelineTest, Stop_DuringSeek) { |
| + SetupErrorTest(); |
| + base::Closure stop_cb = base::Bind( |
| + &CallbackHelper::OnStop, base::Unretained(&callbacks_)); |
| + |
| + EXPECT_CALL(*mocks_->audio_renderer(), Pause(_)).WillOnce(RunClosure()); |
| + EXPECT_CALL(*mocks_->audio_renderer(), Flush(_)).WillOnce(RunClosure()); |
| + EXPECT_CALL(*mocks_->demuxer(), Seek(_, _)) |
| + .WillOnce(DoAll(Stop(pipeline_, stop_cb), |
| + RunPipelineStatusCB1WithStatus(PIPELINE_OK))); |
| + EXPECT_CALL(*mocks_->audio_renderer(), Preroll(_, _)) |
| + .WillOnce(RunPipelineStatusCB1()); |
| + EXPECT_CALL(*mocks_->demuxer(), Stop(_)).WillOnce(RunClosure()); |
| + EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)).WillOnce(RunClosure()); |
| + |
| + // Seek and stop callbacks should fire. |
| + EXPECT_CALL(callbacks_, OnSeek(PIPELINE_OK)); |
| + EXPECT_CALL(callbacks_, OnStop()); |
| + pipeline_->Seek(base::TimeDelta::FromSeconds(10), base::Bind( |
| + &CallbackHelper::OnSeek, base::Unretained(&callbacks_))); |
| + message_loop_.RunAllPending(); |
| +} |
| + |
| +TEST_F(PipelineTest, Stop_DuringPlayback) { |
| + SetupErrorTest(); |
| + |
| + EXPECT_CALL(*mocks_->demuxer(), Stop(_)).WillOnce(RunClosure()); |
| + EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)).WillOnce(RunClosure()); |
| + |
| + // Stop callback should fire but nothing else. |
| + EXPECT_CALL(callbacks_, OnStop()); |
| + pipeline_->Stop(base::Bind( |
| + &CallbackHelper::OnStop, base::Unretained(&callbacks_))); |
| + message_loop_.RunAllPending(); |
| +} |
| + |
| +TEST_F(PipelineTest, Error_DuringStart) { |
| + EXPECT_CALL(*mocks_->demuxer(), Initialize(_, _)) |
| + .WillOnce(RunPipelineStatusCB1WithStatus(PIPELINE_ERROR_READ)); |
| + EXPECT_CALL(*mocks_->demuxer(), Stop(_)) |
| + .WillOnce(RunClosure()); |
| + |
| + // Start callback should fire with error but nothing else. |
| + InitializePipeline(PIPELINE_ERROR_READ); |
| +} |
| + |
| +TEST_F(PipelineTest, Error_DuringPause) { |
| + SetupErrorTest(); |
| + |
| + EXPECT_CALL(*mocks_->audio_renderer(), Pause(_)) |
| + .WillOnce(DoAll(SetError(pipeline_, PIPELINE_ERROR_READ), RunClosure())); |
| + EXPECT_CALL(*mocks_->demuxer(), Stop(_)).WillOnce(RunClosure()); |
| + EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)).WillOnce(RunClosure()); |
| + |
| + // Seek callback should fire with error but nothing else. |
| + EXPECT_CALL(callbacks_, OnSeek(PIPELINE_ERROR_READ)); |
| + pipeline_->Seek(base::TimeDelta::FromSeconds(10), base::Bind( |
| + &CallbackHelper::OnSeek, base::Unretained(&callbacks_))); |
| + message_loop_.RunAllPending(); |
| +} |
| + |
| +TEST_F(PipelineTest, Error_DuringFlush) { |
| + SetupErrorTest(); |
| + |
| + EXPECT_CALL(*mocks_->audio_renderer(), Pause(_)).WillOnce(RunClosure()); |
| + EXPECT_CALL(*mocks_->audio_renderer(), Flush(_)) |
| + .WillOnce(DoAll(SetError(pipeline_, PIPELINE_ERROR_READ), RunClosure())); |
| + EXPECT_CALL(*mocks_->demuxer(), Stop(_)).WillOnce(RunClosure()); |
| + EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)).WillOnce(RunClosure()); |
| + |
| + // Seek callback should fire with error but nothing else. |
| + EXPECT_CALL(callbacks_, OnSeek(PIPELINE_ERROR_READ)); |
| + pipeline_->Seek(base::TimeDelta::FromSeconds(10), base::Bind( |
| + &CallbackHelper::OnSeek, base::Unretained(&callbacks_))); |
| + message_loop_.RunAllPending(); |
| +} |
| + |
| +TEST_F(PipelineTest, Error_DuringSeek) { |
| + SetupErrorTest(); |
| + |
| + EXPECT_CALL(*mocks_->audio_renderer(), Pause(_)).WillOnce(RunClosure()); |
| + EXPECT_CALL(*mocks_->audio_renderer(), Flush(_)).WillOnce(RunClosure()); |
| + EXPECT_CALL(*mocks_->demuxer(), Seek(_, _)) |
| + .WillOnce(RunPipelineStatusCB1WithStatus(PIPELINE_ERROR_READ)); |
| + EXPECT_CALL(*mocks_->demuxer(), Stop(_)).WillOnce(RunClosure()); |
| + EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)).WillOnce(RunClosure()); |
| + |
| + // Seek callback fire with error but nothing else. |
| + EXPECT_CALL(callbacks_, OnSeek(PIPELINE_ERROR_READ)); |
| + pipeline_->Seek(base::TimeDelta::FromSeconds(10), base::Bind( |
| + &CallbackHelper::OnSeek, base::Unretained(&callbacks_))); |
| + message_loop_.RunAllPending(); |
| +} |
| + |
| +TEST_F(PipelineTest, Error_DuringPlayback) { |
| + SetupErrorTest(); |
| + |
| + EXPECT_CALL(*mocks_->demuxer(), Stop(_)).WillOnce(RunClosure()); |
| + EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)).WillOnce(RunClosure()); |
| + |
| + // Error callback should fire but nothing else. |
| + EXPECT_CALL(callbacks_, OnError(PIPELINE_ERROR_READ)); |
| + pipeline_->SetErrorForTesting(PIPELINE_ERROR_READ); |
| + message_loop_.RunAllPending(); |
| +} |
| + |
| +TEST_F(PipelineTest, Error_DuringStop) { |
| + SetupErrorTest(); |
| + |
| + EXPECT_CALL(*mocks_->demuxer(), Stop(_)) |
| + .WillOnce(DoAll(SetError(pipeline_, PIPELINE_ERROR_READ), RunClosure())); |
| + EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)).WillOnce(RunClosure()); |
| + |
| + // No error callback should fire. |
| + EXPECT_CALL(callbacks_, OnStop()); |
| + pipeline_->Stop(base::Bind(&CallbackHelper::OnStop, |
| + base::Unretained(&callbacks_))); |
| + message_loop_.RunAllPending(); |
| +} |
| + |
| TEST_F(PipelineTest, SetVolume) { |
| CreateAudioStream(); |
| MockDemuxerStreamVector streams; |
| @@ -498,7 +648,6 @@ TEST_F(PipelineTest, Properties) { |
| InitializeVideoRenderer(); |
| InitializePipeline(PIPELINE_OK); |
| - EXPECT_TRUE(pipeline_->IsInitialized()); |
| EXPECT_EQ(kDuration.ToInternalValue(), |
| pipeline_->GetMediaDuration().ToInternalValue()); |
| EXPECT_EQ(kTotalBytes, pipeline_->GetTotalBytes()); |
| @@ -516,7 +665,6 @@ TEST_F(PipelineTest, GetBufferedTimeRanges) { |
| InitializeVideoRenderer(); |
| InitializePipeline(PIPELINE_OK); |
| - EXPECT_TRUE(pipeline_->IsInitialized()); |
| EXPECT_EQ(0u, pipeline_->GetBufferedTimeRanges().size()); |
| @@ -572,7 +720,6 @@ TEST_F(PipelineTest, DisableAudioRenderer) { |
| InitializeVideoRenderer(); |
| InitializePipeline(PIPELINE_OK); |
| - EXPECT_TRUE(pipeline_->IsInitialized()); |
| EXPECT_TRUE(pipeline_->HasAudio()); |
| EXPECT_TRUE(pipeline_->HasVideo()); |
| @@ -603,7 +750,6 @@ TEST_F(PipelineTest, DisableAudioRendererDuringInit) { |
| OnAudioRendererDisabled()); |
| InitializePipeline(PIPELINE_OK); |
| - EXPECT_TRUE(pipeline_->IsInitialized()); |
| EXPECT_FALSE(pipeline_->HasAudio()); |
| EXPECT_TRUE(pipeline_->HasVideo()); |
| @@ -715,43 +861,6 @@ TEST_F(PipelineTest, AudioStreamShorterThanVideo) { |
| pipeline_->OnRendererEnded(); |
| } |
| -TEST_F(PipelineTest, ErrorDuringSeek) { |
|
scherkus (not reviewing)
2012/07/28 02:26:07
test moved up above
|
| - CreateAudioStream(); |
| - MockDemuxerStreamVector streams; |
| - streams.push_back(audio_stream()); |
| - |
| - InitializeDemuxer(&streams, base::TimeDelta::FromSeconds(10)); |
| - InitializeAudioDecoder(audio_stream()); |
| - InitializeAudioRenderer(); |
| - InitializePipeline(PIPELINE_OK); |
| - |
| - float playback_rate = 1.0f; |
| - EXPECT_CALL(*mocks_->demuxer(), SetPlaybackRate(playback_rate)); |
| - EXPECT_CALL(*mocks_->audio_renderer(), SetPlaybackRate(playback_rate)); |
| - pipeline_->SetPlaybackRate(playback_rate); |
| - message_loop_.RunAllPending(); |
| - |
| - base::TimeDelta seek_time = base::TimeDelta::FromSeconds(5); |
| - |
| - // Seek() isn't called as the demuxer errors out first. |
| - EXPECT_CALL(*mocks_->audio_renderer(), Pause(_)) |
| - .WillOnce(RunClosure()); |
| - EXPECT_CALL(*mocks_->audio_renderer(), Flush(_)) |
| - .WillOnce(RunClosure()); |
| - EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)) |
| - .WillOnce(RunClosure()); |
| - |
| - EXPECT_CALL(*mocks_->demuxer(), Seek(seek_time, _)) |
| - .WillOnce(RunPipelineStatusCB1WithStatus(PIPELINE_ERROR_READ)); |
| - EXPECT_CALL(*mocks_->demuxer(), Stop(_)) |
| - .WillOnce(RunClosure()); |
| - |
| - pipeline_->Seek(seek_time, base::Bind(&CallbackHelper::OnSeek, |
| - base::Unretained(&callbacks_))); |
| - EXPECT_CALL(callbacks_, OnSeek(PIPELINE_ERROR_READ)); |
| - message_loop_.RunAllPending(); |
| -} |
| - |
| // Invoked function OnError. This asserts that the pipeline does not enqueue |
| // non-teardown related tasks while tearing down. |
| static void TestNoCallsAfterError( |
| @@ -819,7 +928,6 @@ TEST_F(PipelineTest, StartTimeIsZero) { |
| InitializeVideoRenderer(); |
| InitializePipeline(PIPELINE_OK); |
| - EXPECT_TRUE(pipeline_->IsInitialized()); |
| EXPECT_FALSE(pipeline_->HasAudio()); |
| EXPECT_TRUE(pipeline_->HasVideo()); |
| @@ -842,7 +950,6 @@ TEST_F(PipelineTest, StartTimeIsNonZero) { |
| InitializeVideoRenderer(); |
| InitializePipeline(PIPELINE_OK); |
| - EXPECT_TRUE(pipeline_->IsInitialized()); |
| EXPECT_FALSE(pipeline_->HasAudio()); |
| EXPECT_TRUE(pipeline_->HasVideo()); |
| @@ -886,6 +993,7 @@ TEST_F(PipelineTest, AudioTimeUpdateDuringSeek) { |
| EXPECT_CALL(*mocks_->demuxer(), Seek(seek_time, _)) |
| .WillOnce(DoAll(InvokeWithoutArgs(&closure, &base::Closure::Run), |
| RunPipelineStatusCB1())); |
| + EXPECT_CALL(*mocks_->demuxer(), SetPlaybackRate(playback_rate)); |
| EXPECT_CALL(*mocks_->audio_renderer(), Pause(_)) |
| .WillOnce(RunClosure()); |
| @@ -893,6 +1001,8 @@ TEST_F(PipelineTest, AudioTimeUpdateDuringSeek) { |
| .WillOnce(RunClosure()); |
| EXPECT_CALL(*mocks_->audio_renderer(), Preroll(seek_time, _)) |
| .WillOnce(RunPipelineStatusCB1()); |
| + EXPECT_CALL(*mocks_->audio_renderer(), SetPlaybackRate(playback_rate)); |
| + EXPECT_CALL(*mocks_->audio_renderer(), SetVolume(_)); |
| EXPECT_CALL(*mocks_->audio_renderer(), Play(_)) |
| .WillOnce(RunClosure()); |