Index: media/filters/decoder_base_unittest.cc |
diff --git a/media/filters/decoder_base_unittest.cc b/media/filters/decoder_base_unittest.cc |
deleted file mode 100644 |
index c742f919d157c8c64cee488852b4f79f061f0632..0000000000000000000000000000000000000000 |
--- a/media/filters/decoder_base_unittest.cc |
+++ /dev/null |
@@ -1,134 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include <vector> |
- |
-#include "base/bind.h" |
-#include "media/base/data_buffer.h" |
-#include "media/base/mock_callback.h" |
-#include "media/base/mock_filters.h" |
-#include "media/base/mock_task.h" |
-#include "media/base/pipeline.h" |
-#include "media/filters/decoder_base.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-using ::testing::_; |
-using ::testing::AnyNumber; |
-using ::testing::NotNull; |
-using ::testing::StrictMock; |
-using ::testing::WithArg; |
- |
-namespace media { |
- |
-class GTEST_TEST_CLASS_NAME_(DecoderBaseTest, FlowControl); |
- |
-class MockDecoderCallback { |
- public: |
- MOCK_METHOD1(OnReadComplete, void(scoped_refptr<Buffer> output)); |
-}; |
- |
-class MockDecoderImpl : public DecoderBase<MockAudioDecoder, Buffer> { |
- public: |
- explicit MockDecoderImpl(MessageLoop* message_loop) |
- : DecoderBase<MockAudioDecoder, Buffer>(message_loop) { |
- } |
- |
- virtual ~MockDecoderImpl() {} |
- |
- // DecoderBase implementation. |
- MOCK_METHOD3(DoInitialize, |
- void(DemuxerStream* demuxer_stream, |
- bool* success, |
- Task* done_cb)); |
- MOCK_METHOD1(DoStop, void(Task* done_cb)); |
- MOCK_METHOD2(DoSeek, void(base::TimeDelta time, Task* done_cb)); |
- MOCK_METHOD1(DoDecode, void(Buffer* input)); |
- |
- private: |
- FRIEND_TEST(DecoderBaseTest, FlowControl); |
- |
- DISALLOW_COPY_AND_ASSIGN(MockDecoderImpl); |
-}; |
- |
-ACTION(Initialize) { |
- base::ScopedTaskRunner done_runner(arg2); |
- *arg1 = true; |
-} |
- |
-ACTION_P(SaveDecodeRequest, list) { |
- scoped_refptr<Buffer> buffer(arg0); |
- list->push_back(buffer); |
-} |
- |
-ACTION(CompleteDemuxRequest) { |
- arg0.Run(new DataBuffer(0)); |
-} |
- |
-// Test the flow control of decoder base by the following sequence of actions: |
-// - Read() -> DecoderStream |
-// \ Read() -> DemuxerStream |
-// - Read() -> DecoderBase |
-// \ Read() -> DemixerStream |
-// - ReadCallback() -> DecoderBase |
-// \ DoDecode() -> Decoder |
-// - ReadCallback() -> DecoderBase |
-// \ DoDecode() -> Decoder |
-// - DecodeCallback() -> DecoderBase |
-// \ ReadCallback() -> client |
-// - DecodeCallback() -> DecoderBase |
-// \ ReadCallback() -> client |
-TEST(DecoderBaseTest, FlowControl) { |
- MessageLoop message_loop; |
- scoped_refptr<MockDecoderImpl> decoder(new MockDecoderImpl(&message_loop)); |
- |
- MockDecoderCallback read_callback; |
- decoder->set_consume_audio_samples_callback( |
- base::Bind(&MockDecoderCallback::OnReadComplete, |
- base::Unretained(&read_callback))); |
- |
- scoped_refptr<MockDemuxerStream> demuxer_stream(new MockDemuxerStream()); |
- MockStatisticsCallback stats_callback_object; |
- EXPECT_CALL(stats_callback_object, OnStatistics(_)) |
- .Times(AnyNumber()); |
- |
- // Initialize. |
- EXPECT_CALL(*decoder, DoInitialize(NotNull(), NotNull(), NotNull())) |
- .WillOnce(Initialize()); |
- decoder->Initialize(demuxer_stream.get(), NewExpectedCallback(), |
- NewCallback(&stats_callback_object, |
- &MockStatisticsCallback::OnStatistics)); |
- message_loop.RunAllPending(); |
- |
- // Read. |
- std::vector<scoped_refptr<Buffer> > decode_requests; |
- EXPECT_CALL(*demuxer_stream, Read(_)) |
- .Times(2) |
- .WillRepeatedly(CompleteDemuxRequest()); |
- EXPECT_CALL(*decoder, DoDecode(NotNull())) |
- .Times(2) |
- .WillRepeatedly(SaveDecodeRequest(&decode_requests)); |
- scoped_refptr<DataBuffer> output; |
- decoder->PostReadTaskHack(output); |
- decoder->PostReadTaskHack(output); |
- message_loop.RunAllPending(); |
- |
- // Fulfill the decode request. |
- EXPECT_CALL(read_callback, OnReadComplete(_)).Times(2); |
- PipelineStatistics statistics; |
- for (size_t i = 0; i < decode_requests.size(); ++i) { |
- decoder->EnqueueResult(new DataBuffer(0)); |
- decoder->OnDecodeComplete(statistics); |
- } |
- decode_requests.clear(); |
- message_loop.RunAllPending(); |
- |
- // Stop. |
- EXPECT_CALL(*decoder, DoStop(_)) |
- .WillOnce(WithArg<0>(InvokeRunnable())); |
- decoder->Stop(NewExpectedCallback()); |
- message_loop.RunAllPending(); |
-} |
- |
-} // namespace media |