| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "media/base/mock_filters.h" | 7 #include "media/base/mock_filters.h" |
| 8 #include "media/base/mock_task.h" | 8 #include "media/base/mock_task.h" |
| 9 #include "media/filters/decoder_base.h" | 9 #include "media/filters/decoder_base.h" |
| 10 #include "testing/gmock/include/gmock/gmock.h" | 10 #include "testing/gmock/include/gmock/gmock.h" |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 }; | 54 }; |
| 55 | 55 |
| 56 class MockDecoderCallback { | 56 class MockDecoderCallback { |
| 57 public: | 57 public: |
| 58 MOCK_METHOD1(OnReadComplete, void(scoped_refptr<MockDecoderOutput> output)); | 58 MOCK_METHOD1(OnReadComplete, void(scoped_refptr<MockDecoderOutput> output)); |
| 59 }; | 59 }; |
| 60 | 60 |
| 61 class MockDecoderImpl : public media::DecoderBase< | 61 class MockDecoderImpl : public media::DecoderBase< |
| 62 MockDecoder, MockDecoderOutput> { | 62 MockDecoder, MockDecoderOutput> { |
| 63 public: | 63 public: |
| 64 MockDecoderImpl() { | 64 MockDecoderImpl(MessageLoop* message_loop) : |
| 65 media::DecoderBase<MockDecoder, MockDecoderOutput>(message_loop) { |
| 65 media_format_.SetAsString(media::MediaFormat::kMimeType, "mock"); | 66 media_format_.SetAsString(media::MediaFormat::kMimeType, "mock"); |
| 66 } | 67 } |
| 67 | 68 |
| 68 virtual ~MockDecoderImpl() {} | 69 virtual ~MockDecoderImpl() {} |
| 69 | 70 |
| 70 // DecoderBase Implementations. | 71 // DecoderBase Implementations. |
| 71 MOCK_METHOD3(DoInitialize, | 72 MOCK_METHOD3(DoInitialize, |
| 72 void(media::DemuxerStream* demuxer_stream, | 73 void(media::DemuxerStream* demuxer_stream, |
| 73 bool* success, | 74 bool* success, |
| 74 Task* done_cb)); | 75 Task* done_cb)); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 // - ReadCallback() -> DecoderBase | 110 // - ReadCallback() -> DecoderBase |
| 110 // \ DoDecode() -> Decoder | 111 // \ DoDecode() -> Decoder |
| 111 // - ReadCallback() -> DecoderBase | 112 // - ReadCallback() -> DecoderBase |
| 112 // \ DoDecode() -> Decoder | 113 // \ DoDecode() -> Decoder |
| 113 // - DecodeCallback() -> DecoderBase | 114 // - DecodeCallback() -> DecoderBase |
| 114 // \ ReadCallback() -> client | 115 // \ ReadCallback() -> client |
| 115 // - DecodeCallback() -> DecoderBase | 116 // - DecodeCallback() -> DecoderBase |
| 116 // \ ReadCallback() -> client | 117 // \ ReadCallback() -> client |
| 117 TEST(DecoderBaseTest, FlowControl) { | 118 TEST(DecoderBaseTest, FlowControl) { |
| 118 MessageLoop message_loop; | 119 MessageLoop message_loop; |
| 119 scoped_refptr<MockDecoderImpl> decoder(new MockDecoderImpl()); | 120 scoped_refptr<MockDecoderImpl> decoder(new MockDecoderImpl(&message_loop)); |
| 120 MockDecoderCallback read_callback; | 121 MockDecoderCallback read_callback; |
| 121 decoder->set_consume_audio_samples_callback( | 122 decoder->set_consume_audio_samples_callback( |
| 122 NewCallback(&read_callback, &MockDecoderCallback::OnReadComplete)); | 123 NewCallback(&read_callback, &MockDecoderCallback::OnReadComplete)); |
| 123 scoped_refptr<MockDemuxerStream> demuxer_stream(new MockDemuxerStream()); | 124 scoped_refptr<MockDemuxerStream> demuxer_stream(new MockDemuxerStream()); |
| 124 StrictMock<MockFilterCallback> callback; | 125 StrictMock<MockFilterCallback> callback; |
| 125 decoder->set_message_loop(&message_loop); | |
| 126 | 126 |
| 127 // Initailize. | 127 // Initailize. |
| 128 EXPECT_CALL(callback, OnFilterCallback()); | 128 EXPECT_CALL(callback, OnFilterCallback()); |
| 129 EXPECT_CALL(callback, OnCallbackDestroyed()); | 129 EXPECT_CALL(callback, OnCallbackDestroyed()); |
| 130 EXPECT_CALL(*decoder, DoInitialize(NotNull(), NotNull(), NotNull())) | 130 EXPECT_CALL(*decoder, DoInitialize(NotNull(), NotNull(), NotNull())) |
| 131 .WillOnce(Initialize()); | 131 .WillOnce(Initialize()); |
| 132 decoder->Initialize(demuxer_stream.get(), callback.NewCallback()); | 132 decoder->Initialize(demuxer_stream.get(), callback.NewCallback()); |
| 133 message_loop.RunAllPending(); | 133 message_loop.RunAllPending(); |
| 134 | 134 |
| 135 // Read. | 135 // Read. |
| (...skipping 21 matching lines...) Expand all Loading... |
| 157 // Stop. | 157 // Stop. |
| 158 EXPECT_CALL(*decoder, DoStop(_)) | 158 EXPECT_CALL(*decoder, DoStop(_)) |
| 159 .WillOnce(WithArg<0>(InvokeRunnable())); | 159 .WillOnce(WithArg<0>(InvokeRunnable())); |
| 160 EXPECT_CALL(callback, OnFilterCallback()); | 160 EXPECT_CALL(callback, OnFilterCallback()); |
| 161 EXPECT_CALL(callback, OnCallbackDestroyed()); | 161 EXPECT_CALL(callback, OnCallbackDestroyed()); |
| 162 decoder->Stop(callback.NewCallback()); | 162 decoder->Stop(callback.NewCallback()); |
| 163 message_loop.RunAllPending(); | 163 message_loop.RunAllPending(); |
| 164 } | 164 } |
| 165 | 165 |
| 166 } // namespace media | 166 } // namespace media |
| OLD | NEW |