Index: media/filters/decoder_base_unittest.cc |
diff --git a/media/filters/decoder_base_unittest.cc b/media/filters/decoder_base_unittest.cc |
index 54686024b60c6fa5029d6fb690792af8a3348e86..e771989f947498af3246485e0f7286efad7e3975 100644 |
--- a/media/filters/decoder_base_unittest.cc |
+++ b/media/filters/decoder_base_unittest.cc |
@@ -9,6 +9,7 @@ |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+using ::testing::_; |
using ::testing::NotNull; |
using ::testing::StrictMock; |
@@ -25,8 +26,6 @@ class MockDecoderOutput : public media::StreamSample { |
MOCK_CONST_METHOD0(IsEndOfStream, bool()); |
}; |
-class MockDecoder : public media::MediaFilter {}; |
- |
class MockBuffer : public media::Buffer { |
public: |
MockBuffer() {} |
@@ -38,6 +37,24 @@ class MockBuffer : public media::Buffer { |
DISALLOW_COPY_AND_ASSIGN(MockBuffer); |
}; |
+class MockDecoder : public media::MediaFilter { |
+ public: |
+ typedef Callback1<scoped_refptr<MockDecoderOutput> >::Type |
+ FillBufferDoneCallback; |
+ void set_fill_buffer_done_callback_(FillBufferDoneCallback* callback) { |
+ fill_buffer_done_callback_.reset(callback); |
+ } |
+ FillBufferDoneCallback* fill_buffer_done_callback() { |
+ return fill_buffer_done_callback_.get(); |
+ } |
+ scoped_ptr<FillBufferDoneCallback> fill_buffer_done_callback_; |
+}; |
+ |
+class MockDecoderCallback { |
+ public: |
+ MOCK_METHOD1(OnReadComplete, void(scoped_refptr<MockDecoderOutput> output)); |
+}; |
+ |
class MockDecoderImpl : public media::DecoderBase< |
MockDecoder, MockDecoderOutput> { |
public: |
@@ -62,16 +79,6 @@ class MockDecoderImpl : public media::DecoderBase< |
DISALLOW_COPY_AND_ASSIGN(MockDecoderImpl); |
}; |
-class MockDecoderReadCallback { |
- public: |
- MockDecoderReadCallback() {} |
- virtual ~MockDecoderReadCallback() {} |
- MOCK_METHOD1(ReadCallback, void(MockDecoderOutput* output)); |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(MockDecoderReadCallback); |
-}; |
- |
} // namespace |
namespace media { |
@@ -107,6 +114,9 @@ ACTION(CompleteDemuxRequest) { |
TEST(DecoderBaseTest, FlowControl) { |
MessageLoop message_loop; |
scoped_refptr<MockDecoderImpl> decoder = new MockDecoderImpl(); |
+ MockDecoderCallback read_callback; |
+ decoder->set_fill_buffer_done_callback_( |
+ NewCallback(&read_callback, &MockDecoderCallback::OnReadComplete)); |
scoped_refptr<MockDemuxerStream> demuxer_stream = new MockDemuxerStream(); |
StrictMock<MockFilterCallback> callback; |
decoder->set_message_loop(&message_loop); |
@@ -120,7 +130,6 @@ TEST(DecoderBaseTest, FlowControl) { |
message_loop.RunAllPending(); |
// Read. |
- StrictMock<MockDecoderReadCallback> read_callback; |
std::vector<scoped_refptr<Buffer> > decode_requests; |
EXPECT_CALL(*demuxer_stream, Read(NotNull())) |
.Times(2) |
@@ -128,16 +137,13 @@ TEST(DecoderBaseTest, FlowControl) { |
EXPECT_CALL(*decoder, DoDecode(NotNull())) |
.Times(2) |
.WillRepeatedly(SaveDecodeRequest(&decode_requests)); |
- decoder->Read( |
- NewCallback(reinterpret_cast<MockDecoderReadCallback*>(&read_callback), |
- &MockDecoderReadCallback::ReadCallback)); |
- decoder->Read( |
- NewCallback(reinterpret_cast<MockDecoderReadCallback*>(&read_callback), |
- &MockDecoderReadCallback::ReadCallback)); |
+ scoped_refptr<MockDecoderOutput> output; |
+ decoder->FillThisBuffer(output); |
+ decoder->FillThisBuffer(output); |
message_loop.RunAllPending(); |
// Fulfill the decode request. |
- EXPECT_CALL(read_callback, ReadCallback(NotNull())).Times(2); |
+ EXPECT_CALL(read_callback, OnReadComplete(_)).Times(2); |
for (size_t i = 0; i < decode_requests.size(); ++i) { |
decoder->EnqueueResult(new MockDecoderOutput()); |
decoder->OnDecodeComplete(); |