| Index: media/filters/audio_renderer_impl_unittest.cc
|
| diff --git a/media/filters/audio_renderer_impl_unittest.cc b/media/filters/audio_renderer_impl_unittest.cc
|
| index 89c870b2be144a022c9f0b626ba750ef536e1a91..fe901f099465cc591d457303f3dac321e6ca7e73 100644
|
| --- a/media/filters/audio_renderer_impl_unittest.cc
|
| +++ b/media/filters/audio_renderer_impl_unittest.cc
|
| @@ -20,6 +20,10 @@ using ::testing::Return;
|
| using ::testing::NiceMock;
|
| using ::testing::StrictMock;
|
|
|
| +ACTION_P(RunPipelineStatusCB1, status) {
|
| + arg1.Run(status);
|
| +}
|
| +
|
| namespace media {
|
|
|
| // Constants for distinguishing between muted audio and playing audio when using
|
| @@ -32,7 +36,10 @@ class AudioRendererImplTest : public ::testing::Test {
|
| // Give the decoder some non-garbage media properties.
|
| AudioRendererImplTest()
|
| : renderer_(new AudioRendererImpl(new NiceMock<MockAudioRendererSink>())),
|
| + demuxer_stream_(new MockDemuxerStream()),
|
| decoder_(new MockAudioDecoder()) {
|
| + EXPECT_CALL(*demuxer_stream_, type())
|
| + .WillRepeatedly(Return(DemuxerStream::AUDIO));
|
|
|
| // Queue all reads from the decoder by default.
|
| ON_CALL(*decoder_, Read(_))
|
| @@ -46,6 +53,8 @@ class AudioRendererImplTest : public ::testing::Test {
|
| .Times(AnyNumber());
|
| EXPECT_CALL(*decoder_, samples_per_second())
|
| .Times(AnyNumber());
|
| +
|
| + decoders_.push_back(decoder_);
|
| }
|
|
|
| virtual ~AudioRendererImplTest() {
|
| @@ -76,6 +85,7 @@ class AudioRendererImplTest : public ::testing::Test {
|
| base::Unretained(this));
|
| }
|
|
|
| + MOCK_METHOD1(OnStatistics, void(const PipelineStatistics&));
|
| MOCK_METHOD0(OnUnderflow, void());
|
| MOCK_METHOD0(OnEnded, void());
|
| MOCK_METHOD0(OnDisabled, void());
|
| @@ -87,12 +97,19 @@ class AudioRendererImplTest : public ::testing::Test {
|
| }
|
|
|
| void Initialize() {
|
| + EXPECT_CALL(*decoder_, Initialize(_, _, _))
|
| + .WillOnce(RunPipelineStatusCB1(PIPELINE_OK));
|
| +
|
| InitializeWithStatus(PIPELINE_OK);
|
| }
|
|
|
| void InitializeWithStatus(PipelineStatus expected) {
|
| renderer_->Initialize(
|
| - decoder_, NewExpectedStatusCB(expected),
|
| + demuxer_stream_,
|
| + decoders_,
|
| + NewExpectedStatusCB(expected),
|
| + base::Bind(&AudioRendererImplTest::OnStatistics,
|
| + base::Unretained(this)),
|
| base::Bind(&AudioRendererImplTest::OnUnderflow,
|
| base::Unretained(this)),
|
| base::Bind(&AudioRendererImplTest::OnAudioTimeCallback,
|
| @@ -207,7 +224,9 @@ class AudioRendererImplTest : public ::testing::Test {
|
|
|
| // Fixture members.
|
| scoped_refptr<AudioRendererImpl> renderer_;
|
| + scoped_refptr<MockDemuxerStream> demuxer_stream_;
|
| scoped_refptr<MockAudioDecoder> decoder_;
|
| + AudioRendererImpl::AudioDecoderList decoders_;
|
| AudioDecoder::ReadCB read_cb_;
|
| base::TimeDelta next_timestamp_;
|
|
|
| @@ -221,7 +240,10 @@ class AudioRendererImplTest : public ::testing::Test {
|
| };
|
|
|
| TEST_F(AudioRendererImplTest, Initialize_Failed) {
|
| + EXPECT_CALL(*decoder_, Initialize(_, _, _))
|
| + .WillOnce(RunPipelineStatusCB1(PIPELINE_OK));
|
| SetUnsupportedAudioDecoderProperties();
|
| +
|
| InitializeWithStatus(PIPELINE_ERROR_INITIALIZATION_FAILED);
|
|
|
| // We should have no reads.
|
| @@ -235,6 +257,29 @@ TEST_F(AudioRendererImplTest, Initialize_Successful) {
|
| EXPECT_TRUE(read_cb_.is_null());
|
| }
|
|
|
| +TEST_F(AudioRendererImplTest, Initialize_DecoderInitFailure) {
|
| + EXPECT_CALL(*decoder_, Initialize(_, _, _))
|
| + .WillOnce(RunPipelineStatusCB1(PIPELINE_ERROR_DECODE));
|
| + InitializeWithStatus(PIPELINE_ERROR_DECODE);
|
| +
|
| + // We should have no reads.
|
| + EXPECT_TRUE(read_cb_.is_null());
|
| +}
|
| +
|
| +TEST_F(AudioRendererImplTest, Initialize_MultipleDecoders) {
|
| + scoped_refptr<MockAudioDecoder> decoder1 = new MockAudioDecoder();
|
| + // Insert |decoder1| as the first decoder in the list.
|
| + decoders_.push_front(decoder1);
|
| + EXPECT_CALL(*decoder1, Initialize(_, _, _))
|
| + .WillOnce(RunPipelineStatusCB1(DECODER_ERROR_NOT_SUPPORTED));
|
| + EXPECT_CALL(*decoder_, Initialize(_, _, _))
|
| + .WillOnce(RunPipelineStatusCB1(PIPELINE_OK));
|
| + InitializeWithStatus(PIPELINE_OK);
|
| +
|
| + // We should have no reads.
|
| + EXPECT_TRUE(read_cb_.is_null());
|
| +}
|
| +
|
| TEST_F(AudioRendererImplTest, Preroll) {
|
| Initialize();
|
| Preroll();
|
|
|