OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_callback.h" | 7 #include "media/base/mock_callback.h" |
8 #include "media/base/mock_filters.h" | 8 #include "media/base/mock_filters.h" |
9 #include "media/base/mock_task.h" | 9 #include "media/base/mock_task.h" |
10 #include "media/base/pipeline.h" | 10 #include "media/base/pipeline.h" |
11 #include "media/filters/decoder_base.h" | 11 #include "media/filters/decoder_base.h" |
12 #include "testing/gmock/include/gmock/gmock.h" | 12 #include "testing/gmock/include/gmock/gmock.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
14 | 14 |
15 using ::testing::_; | 15 using ::testing::_; |
16 using ::testing::AnyNumber; | 16 using ::testing::AnyNumber; |
17 using ::testing::NotNull; | 17 using ::testing::NotNull; |
18 using ::testing::StrictMock; | 18 using ::testing::StrictMock; |
19 using ::testing::WithArg; | 19 using ::testing::WithArg; |
20 | 20 |
21 namespace media { | 21 namespace media { |
22 | 22 |
23 class GTEST_TEST_CLASS_NAME_(DecoderBaseTest, FlowControl); | 23 class GTEST_TEST_CLASS_NAME_(DecoderBaseTest, FlowControl); |
24 | 24 |
25 } // namespace media | 25 class MockDecoderOutput : public StreamSample { |
26 | |
27 namespace { | |
28 | |
29 class MockDecoderOutput : public media::StreamSample { | |
30 public: | 26 public: |
31 MOCK_CONST_METHOD0(IsEndOfStream, bool()); | 27 MOCK_CONST_METHOD0(IsEndOfStream, bool()); |
32 }; | 28 }; |
33 | 29 |
34 class MockBuffer : public media::Buffer { | 30 class MockBuffer : public Buffer { |
35 public: | 31 public: |
36 MockBuffer() {} | 32 MockBuffer() {} |
37 virtual ~MockBuffer() {} | 33 virtual ~MockBuffer() {} |
38 MOCK_CONST_METHOD0(GetData, const uint8*()); | 34 MOCK_CONST_METHOD0(GetData, const uint8*()); |
39 MOCK_CONST_METHOD0(GetDataSize, size_t()); | 35 MOCK_CONST_METHOD0(GetDataSize, size_t()); |
40 | 36 |
41 private: | 37 private: |
42 DISALLOW_COPY_AND_ASSIGN(MockBuffer); | 38 DISALLOW_COPY_AND_ASSIGN(MockBuffer); |
43 }; | 39 }; |
44 | 40 |
45 class MockDecoder : public media::Filter { | 41 class MockDecoder : public Filter { |
46 public: | 42 public: |
47 typedef Callback1<scoped_refptr<MockDecoderOutput> >::Type | 43 typedef Callback1<scoped_refptr<MockDecoderOutput> >::Type |
48 ConsumeAudioSamplesCallback; | 44 ConsumeAudioSamplesCallback; |
49 void set_consume_audio_samples_callback( | 45 void set_consume_audio_samples_callback( |
50 ConsumeAudioSamplesCallback* callback) { | 46 ConsumeAudioSamplesCallback* callback) { |
51 consume_audio_samples_callback_.reset(callback); | 47 consume_audio_samples_callback_.reset(callback); |
52 } | 48 } |
53 ConsumeAudioSamplesCallback* consume_audio_samples_callback() { | 49 ConsumeAudioSamplesCallback* consume_audio_samples_callback() { |
54 return consume_audio_samples_callback_.get(); | 50 return consume_audio_samples_callback_.get(); |
55 } | 51 } |
56 scoped_ptr<ConsumeAudioSamplesCallback> consume_audio_samples_callback_; | 52 scoped_ptr<ConsumeAudioSamplesCallback> consume_audio_samples_callback_; |
57 }; | 53 }; |
58 | 54 |
59 class MockDecoderCallback { | 55 class MockDecoderCallback { |
60 public: | 56 public: |
61 MOCK_METHOD1(OnReadComplete, void(scoped_refptr<MockDecoderOutput> output)); | 57 MOCK_METHOD1(OnReadComplete, void(scoped_refptr<MockDecoderOutput> output)); |
62 }; | 58 }; |
63 | 59 |
64 class MockDecoderImpl : public media::DecoderBase< | 60 class MockDecoderImpl : public DecoderBase< |
65 MockDecoder, MockDecoderOutput> { | 61 MockDecoder, MockDecoderOutput> { |
66 public: | 62 public: |
67 explicit MockDecoderImpl(MessageLoop* message_loop) | 63 explicit MockDecoderImpl(MessageLoop* message_loop) |
68 : media::DecoderBase<MockDecoder, MockDecoderOutput>(message_loop) { | 64 : DecoderBase<MockDecoder, MockDecoderOutput>(message_loop) { |
69 media_format_.SetAsString(media::MediaFormat::kMimeType, "mock"); | 65 media_format_.SetAsString(MediaFormat::kMimeType, "mock"); |
70 } | 66 } |
71 | 67 |
72 virtual ~MockDecoderImpl() {} | 68 virtual ~MockDecoderImpl() {} |
73 | 69 |
74 // DecoderBase Implementations. | 70 // DecoderBase Implementations. |
75 MOCK_METHOD3(DoInitialize, | 71 MOCK_METHOD3(DoInitialize, |
76 void(media::DemuxerStream* demuxer_stream, | 72 void(DemuxerStream* demuxer_stream, |
77 bool* success, | 73 bool* success, |
78 Task* done_cb)); | 74 Task* done_cb)); |
79 MOCK_METHOD1(DoStop, void(Task* done_cb)); | 75 MOCK_METHOD1(DoStop, void(Task* done_cb)); |
80 MOCK_METHOD2(DoSeek, void(base::TimeDelta time, Task* done_cb)); | 76 MOCK_METHOD2(DoSeek, void(base::TimeDelta time, Task* done_cb)); |
81 MOCK_METHOD1(DoDecode, void(media::Buffer* input)); | 77 MOCK_METHOD1(DoDecode, void(Buffer* input)); |
82 | 78 |
83 private: | 79 private: |
84 FRIEND_TEST(media::DecoderBaseTest, FlowControl); | 80 FRIEND_TEST(DecoderBaseTest, FlowControl); |
85 | 81 |
86 DISALLOW_COPY_AND_ASSIGN(MockDecoderImpl); | 82 DISALLOW_COPY_AND_ASSIGN(MockDecoderImpl); |
87 }; | 83 }; |
88 | 84 |
89 } // namespace | |
90 | |
91 namespace media { | |
92 | |
93 ACTION(Initialize) { | 85 ACTION(Initialize) { |
94 AutoTaskRunner done_runner(arg2); | 86 AutoTaskRunner done_runner(arg2); |
95 *arg1 = true; | 87 *arg1 = true; |
96 } | 88 } |
97 | 89 |
98 ACTION_P(SaveDecodeRequest, list) { | 90 ACTION_P(SaveDecodeRequest, list) { |
99 scoped_refptr<Buffer> buffer(arg0); | 91 scoped_refptr<Buffer> buffer(arg0); |
100 list->push_back(buffer); | 92 list->push_back(buffer); |
101 } | 93 } |
102 | 94 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 message_loop.RunAllPending(); | 153 message_loop.RunAllPending(); |
162 | 154 |
163 // Stop. | 155 // Stop. |
164 EXPECT_CALL(*decoder, DoStop(_)) | 156 EXPECT_CALL(*decoder, DoStop(_)) |
165 .WillOnce(WithArg<0>(InvokeRunnable())); | 157 .WillOnce(WithArg<0>(InvokeRunnable())); |
166 decoder->Stop(NewExpectedCallback()); | 158 decoder->Stop(NewExpectedCallback()); |
167 message_loop.RunAllPending(); | 159 message_loop.RunAllPending(); |
168 } | 160 } |
169 | 161 |
170 } // namespace media | 162 } // namespace media |
OLD | NEW |