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 explicit 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 |