Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Side by Side Diff: media/base/mock_filters.h

Issue 6056008: Move lots of GMock stuff out of line. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Copyright junk Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 // A new breed of mock media filters, this time using gmock! Feel free to add 5 // A new breed of mock media filters, this time using gmock! Feel free to add
6 // actions if you need interesting side-effects (i.e., copying data to the 6 // actions if you need interesting side-effects (i.e., copying data to the
7 // buffer passed into MockDataSource::Read()). 7 // buffer passed into MockDataSource::Read()).
8 // 8 //
9 // Don't forget you can use StrictMock<> and NiceMock<> if you want the mock 9 // Don't forget you can use StrictMock<> and NiceMock<> if you want the mock
10 // filters to fail the test or do nothing when an unexpected method is called. 10 // filters to fail the test or do nothing when an unexpected method is called.
11 // http://code.google.com/p/googlemock/wiki/CookBook#Nice_Mocks_and_Strict_Mocks 11 // http://code.google.com/p/googlemock/wiki/CookBook#Nice_Mocks_and_Strict_Mocks
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 private: 43 private:
44 DISALLOW_COPY_AND_ASSIGN(Destroyable); 44 DISALLOW_COPY_AND_ASSIGN(Destroyable);
45 }; 45 };
46 46
47 // Helper class used to test that callbacks are executed. It is recommend you 47 // Helper class used to test that callbacks are executed. It is recommend you
48 // combine this class with StrictMock<> to verify that the callback is executed. 48 // combine this class with StrictMock<> to verify that the callback is executed.
49 // You can reuse the same instance of a MockFilterCallback many times since 49 // You can reuse the same instance of a MockFilterCallback many times since
50 // gmock will track the number of times the methods are executed. 50 // gmock will track the number of times the methods are executed.
51 class MockFilterCallback { 51 class MockFilterCallback {
52 public: 52 public:
53 MockFilterCallback() {} 53 MockFilterCallback();
54 virtual ~MockFilterCallback() {} 54 virtual ~MockFilterCallback();
55 55
56 MOCK_METHOD0(OnCallbackDestroyed, void()); 56 MOCK_METHOD0(OnCallbackDestroyed, void());
57 MOCK_METHOD0(OnFilterCallback, void()); 57 MOCK_METHOD0(OnFilterCallback, void());
58 58
59 // Helper method to create a new callback for this mock. The callback will 59 // Helper method to create a new callback for this mock. The callback will
60 // call OnFilterCallback() when executed and OnCallbackDestroyed() when 60 // call OnFilterCallback() when executed and OnCallbackDestroyed() when
61 // destroyed. Clients should use NiceMock<> or StrictMock<> depending on the 61 // destroyed. Clients should use NiceMock<> or StrictMock<> depending on the
62 // test. 62 // test.
63 FilterCallback* NewCallback() { 63 FilterCallback* NewCallback();
64 return new CallbackImpl(this);
65 }
66 64
67 private: 65 private:
68 // Private implementation of CallbackRunner used to trigger expectations on 66 // Private implementation of CallbackRunner used to trigger expectations on
69 // MockFilterCallback. 67 // MockFilterCallback.
70 class CallbackImpl : public CallbackRunner<Tuple0> { 68 class CallbackImpl : public CallbackRunner<Tuple0> {
71 public: 69 public:
72 explicit CallbackImpl(MockFilterCallback* mock_callback) 70 explicit CallbackImpl(MockFilterCallback* mock_callback)
73 : mock_callback_(mock_callback) { 71 : mock_callback_(mock_callback) {
74 } 72 }
75 73
76 virtual ~CallbackImpl() { 74 virtual ~CallbackImpl() {
77 mock_callback_->OnCallbackDestroyed(); 75 mock_callback_->OnCallbackDestroyed();
78 } 76 }
79 77
80 virtual void RunWithParams(const Tuple0& params) { 78 virtual void RunWithParams(const Tuple0& params) {
81 mock_callback_->OnFilterCallback(); 79 mock_callback_->OnFilterCallback();
82 } 80 }
83 81
84 private: 82 private:
85 MockFilterCallback* mock_callback_; 83 MockFilterCallback* mock_callback_;
86 84
87 DISALLOW_COPY_AND_ASSIGN(CallbackImpl); 85 DISALLOW_COPY_AND_ASSIGN(CallbackImpl);
88 }; 86 };
89 87
90 DISALLOW_COPY_AND_ASSIGN(MockFilterCallback); 88 DISALLOW_COPY_AND_ASSIGN(MockFilterCallback);
91 }; 89 };
92 90
93 class MockDataSource : public DataSource { 91 class MockDataSource : public DataSource {
94 public: 92 public:
95 MockDataSource() {} 93 MockDataSource();
96 94
97 // Filter implementation. 95 // Filter implementation.
98 MOCK_METHOD1(Stop, void(FilterCallback* callback)); 96 MOCK_METHOD1(Stop, void(FilterCallback* callback));
99 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); 97 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
100 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); 98 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback));
101 MOCK_METHOD0(OnAudioRendererDisabled, void()); 99 MOCK_METHOD0(OnAudioRendererDisabled, void());
102 100
103 // DataSource implementation. 101 // DataSource implementation.
104 MOCK_METHOD1(IsUrlSupported, bool(const std::string& url)); 102 MOCK_METHOD1(IsUrlSupported, bool(const std::string& url));
105 MOCK_METHOD2(Initialize, void(const std::string& url, 103 MOCK_METHOD2(Initialize, void(const std::string& url,
106 FilterCallback* callback)); 104 FilterCallback* callback));
107 MOCK_METHOD0(media_format, const MediaFormat&()); 105 MOCK_METHOD0(media_format, const MediaFormat&());
108 MOCK_METHOD4(Read, void(int64 position, size_t size, uint8* data, 106 MOCK_METHOD4(Read, void(int64 position, size_t size, uint8* data,
109 DataSource::ReadCallback* callback)); 107 DataSource::ReadCallback* callback));
110 MOCK_METHOD1(GetSize, bool(int64* size_out)); 108 MOCK_METHOD1(GetSize, bool(int64* size_out));
111 MOCK_METHOD0(IsStreaming, bool()); 109 MOCK_METHOD0(IsStreaming, bool());
112 110
113 protected: 111 protected:
114 virtual ~MockDataSource() {} 112 virtual ~MockDataSource();
115 113
116 private: 114 private:
117 DISALLOW_COPY_AND_ASSIGN(MockDataSource); 115 DISALLOW_COPY_AND_ASSIGN(MockDataSource);
118 }; 116 };
119 117
120 class MockDemuxer : public Demuxer { 118 class MockDemuxer : public Demuxer {
121 public: 119 public:
122 MockDemuxer() {} 120 MockDemuxer();
123 121
124 // Filter implementation. 122 // Filter implementation.
125 MOCK_METHOD1(Stop, void(FilterCallback* callback)); 123 MOCK_METHOD1(Stop, void(FilterCallback* callback));
126 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); 124 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
127 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); 125 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback));
128 MOCK_METHOD0(OnAudioRendererDisabled, void()); 126 MOCK_METHOD0(OnAudioRendererDisabled, void());
129 127
130 // Demuxer implementation. 128 // Demuxer implementation.
131 MOCK_METHOD2(Initialize, void(DataSource* data_source, 129 MOCK_METHOD2(Initialize, void(DataSource* data_source,
132 FilterCallback* callback)); 130 FilterCallback* callback));
133 MOCK_METHOD0(GetNumberOfStreams, size_t()); 131 MOCK_METHOD0(GetNumberOfStreams, size_t());
134 MOCK_METHOD1(GetStream, scoped_refptr<DemuxerStream>(int stream_id)); 132 MOCK_METHOD1(GetStream, scoped_refptr<DemuxerStream>(int stream_id));
135 133
136 protected: 134 protected:
137 virtual ~MockDemuxer() {} 135 virtual ~MockDemuxer();
138 136
139 private: 137 private:
140 DISALLOW_COPY_AND_ASSIGN(MockDemuxer); 138 DISALLOW_COPY_AND_ASSIGN(MockDemuxer);
141 }; 139 };
142 140
143 class MockDemuxerStream : public DemuxerStream { 141 class MockDemuxerStream : public DemuxerStream {
144 public: 142 public:
145 MockDemuxerStream() {} 143 MockDemuxerStream();
146 144
147 // DemuxerStream implementation. 145 // DemuxerStream implementation.
148 MOCK_METHOD0(media_format, const MediaFormat&()); 146 MOCK_METHOD0(media_format, const MediaFormat&());
149 MOCK_METHOD1(Read, void(Callback1<Buffer*>::Type* read_callback)); 147 MOCK_METHOD1(Read, void(Callback1<Buffer*>::Type* read_callback));
150 MOCK_METHOD1(QueryInterface, void*(const char* interface_id)); 148 MOCK_METHOD1(QueryInterface, void*(const char* interface_id));
151 MOCK_METHOD0(EnableBitstreamConverter, void()); 149 MOCK_METHOD0(EnableBitstreamConverter, void());
152 150
153 protected: 151 protected:
154 virtual ~MockDemuxerStream() {} 152 virtual ~MockDemuxerStream();
155 153
156 private: 154 private:
157 MediaFormat media_format_; 155 MediaFormat media_format_;
158 156
159 DISALLOW_COPY_AND_ASSIGN(MockDemuxerStream); 157 DISALLOW_COPY_AND_ASSIGN(MockDemuxerStream);
160 }; 158 };
161 159
162 class MockVideoDecoder : public VideoDecoder { 160 class MockVideoDecoder : public VideoDecoder {
163 public: 161 public:
164 MockVideoDecoder() {} 162 MockVideoDecoder();
165 163
166 // Filter implementation. 164 // Filter implementation.
167 MOCK_METHOD1(Stop, void(FilterCallback* callback)); 165 MOCK_METHOD1(Stop, void(FilterCallback* callback));
168 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); 166 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
169 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); 167 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback));
170 MOCK_METHOD0(OnAudioRendererDisabled, void()); 168 MOCK_METHOD0(OnAudioRendererDisabled, void());
171 169
172 // VideoDecoder implementation. 170 // VideoDecoder implementation.
173 MOCK_METHOD2(Initialize, void(DemuxerStream* stream, 171 MOCK_METHOD2(Initialize, void(DemuxerStream* stream,
174 FilterCallback* callback)); 172 FilterCallback* callback));
175 MOCK_METHOD0(media_format, const MediaFormat&()); 173 MOCK_METHOD0(media_format, const MediaFormat&());
176 MOCK_METHOD1(ProduceVideoFrame, void(scoped_refptr<VideoFrame>)); 174 MOCK_METHOD1(ProduceVideoFrame, void(scoped_refptr<VideoFrame>));
177 MOCK_METHOD0(ProvidesBuffer, bool()); 175 MOCK_METHOD0(ProvidesBuffer, bool());
178 176
179 // Make this method public so that tests can make use of it. 177 // Make this method public so that tests can make use of it.
180 void VideoFrameReady(scoped_refptr<VideoFrame> frame) { 178 void VideoFrameReady(scoped_refptr<VideoFrame> frame) {
181 VideoDecoder::VideoFrameReady(frame); 179 VideoDecoder::VideoFrameReady(frame);
182 } 180 }
183 181
184 protected: 182 protected:
185 virtual ~MockVideoDecoder() {} 183 virtual ~MockVideoDecoder();
186 184
187 private: 185 private:
188 DISALLOW_COPY_AND_ASSIGN(MockVideoDecoder); 186 DISALLOW_COPY_AND_ASSIGN(MockVideoDecoder);
189 }; 187 };
190 188
191 class MockAudioDecoder : public AudioDecoder { 189 class MockAudioDecoder : public AudioDecoder {
192 public: 190 public:
193 MockAudioDecoder() {} 191 MockAudioDecoder();
194 192
195 // Filter implementation. 193 // Filter implementation.
196 MOCK_METHOD1(Stop, void(FilterCallback* callback)); 194 MOCK_METHOD1(Stop, void(FilterCallback* callback));
197 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); 195 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
198 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); 196 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback));
199 MOCK_METHOD0(OnAudioRendererDisabled, void()); 197 MOCK_METHOD0(OnAudioRendererDisabled, void());
200 198
201 // AudioDecoder implementation. 199 // AudioDecoder implementation.
202 MOCK_METHOD2(Initialize, void(DemuxerStream* stream, 200 MOCK_METHOD2(Initialize, void(DemuxerStream* stream,
203 FilterCallback* callback)); 201 FilterCallback* callback));
204 MOCK_METHOD0(media_format, const MediaFormat&()); 202 MOCK_METHOD0(media_format, const MediaFormat&());
205 MOCK_METHOD1(ProduceAudioSamples, void(scoped_refptr<Buffer>)); 203 MOCK_METHOD1(ProduceAudioSamples, void(scoped_refptr<Buffer>));
206 204
207 // change to public to allow unittest for access; 205 // change to public to allow unittest for access;
208 ConsumeAudioSamplesCallback* consume_audio_samples_callback() { 206 ConsumeAudioSamplesCallback* consume_audio_samples_callback() {
209 return AudioDecoder::consume_audio_samples_callback(); 207 return AudioDecoder::consume_audio_samples_callback();
210 } 208 }
211 209
212 protected: 210 protected:
213 virtual ~MockAudioDecoder() {} 211 virtual ~MockAudioDecoder();
214 212
215 private: 213 private:
216 DISALLOW_COPY_AND_ASSIGN(MockAudioDecoder); 214 DISALLOW_COPY_AND_ASSIGN(MockAudioDecoder);
217 }; 215 };
218 216
219 class MockVideoRenderer : public VideoRenderer { 217 class MockVideoRenderer : public VideoRenderer {
220 public: 218 public:
221 MockVideoRenderer() {} 219 MockVideoRenderer();
222 220
223 // Filter implementation. 221 // Filter implementation.
224 MOCK_METHOD1(Stop, void(FilterCallback* callback)); 222 MOCK_METHOD1(Stop, void(FilterCallback* callback));
225 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); 223 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
226 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); 224 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback));
227 MOCK_METHOD0(OnAudioRendererDisabled, void()); 225 MOCK_METHOD0(OnAudioRendererDisabled, void());
228 226
229 // VideoRenderer implementation. 227 // VideoRenderer implementation.
230 MOCK_METHOD2(Initialize, void(VideoDecoder* decoder, 228 MOCK_METHOD2(Initialize, void(VideoDecoder* decoder,
231 FilterCallback* callback)); 229 FilterCallback* callback));
232 MOCK_METHOD0(HasEnded, bool()); 230 MOCK_METHOD0(HasEnded, bool());
233 MOCK_METHOD1(ConsumeVideoFrame, void(scoped_refptr<VideoFrame> frame)); 231 MOCK_METHOD1(ConsumeVideoFrame, void(scoped_refptr<VideoFrame> frame));
234 232
235 protected: 233 protected:
236 virtual ~MockVideoRenderer() {} 234 virtual ~MockVideoRenderer();
237 235
238 private: 236 private:
239 DISALLOW_COPY_AND_ASSIGN(MockVideoRenderer); 237 DISALLOW_COPY_AND_ASSIGN(MockVideoRenderer);
240 }; 238 };
241 239
242 class MockAudioRenderer : public AudioRenderer { 240 class MockAudioRenderer : public AudioRenderer {
243 public: 241 public:
244 MockAudioRenderer() {} 242 MockAudioRenderer();
245 243
246 // Filter implementation. 244 // Filter implementation.
247 MOCK_METHOD1(Stop, void(FilterCallback* callback)); 245 MOCK_METHOD1(Stop, void(FilterCallback* callback));
248 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); 246 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
249 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); 247 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback));
250 MOCK_METHOD0(OnAudioRendererDisabled, void()); 248 MOCK_METHOD0(OnAudioRendererDisabled, void());
251 249
252 // AudioRenderer implementation. 250 // AudioRenderer implementation.
253 MOCK_METHOD2(Initialize, void(AudioDecoder* decoder, 251 MOCK_METHOD2(Initialize, void(AudioDecoder* decoder,
254 FilterCallback* callback)); 252 FilterCallback* callback));
255 MOCK_METHOD0(HasEnded, bool()); 253 MOCK_METHOD0(HasEnded, bool());
256 MOCK_METHOD1(SetVolume, void(float volume)); 254 MOCK_METHOD1(SetVolume, void(float volume));
257 255
258 protected: 256 protected:
259 virtual ~MockAudioRenderer() {} 257 virtual ~MockAudioRenderer();
260 258
261 private: 259 private:
262 DISALLOW_COPY_AND_ASSIGN(MockAudioRenderer); 260 DISALLOW_COPY_AND_ASSIGN(MockAudioRenderer);
263 }; 261 };
264 262
265 // FilterFactory that returns canned instances of mock filters. You can set 263 // FilterFactory that returns canned instances of mock filters. You can set
266 // expectations on the filters and then pass the collection into a pipeline. 264 // expectations on the filters and then pass the collection into a pipeline.
267 class MockFilterCollection { 265 class MockFilterCollection {
268 public: 266 public:
269 MockFilterCollection() 267 MockFilterCollection();
270 : data_source_(new MockDataSource()), 268 virtual ~MockFilterCollection();
271 demuxer_(new MockDemuxer()),
272 video_decoder_(new MockVideoDecoder()),
273 audio_decoder_(new MockAudioDecoder()),
274 video_renderer_(new MockVideoRenderer()),
275 audio_renderer_(new MockAudioRenderer()) {
276 }
277
278 virtual ~MockFilterCollection() {}
279 269
280 // Mock accessors. 270 // Mock accessors.
281 MockDataSource* data_source() const { return data_source_; } 271 MockDataSource* data_source() const { return data_source_; }
282 MockDemuxer* demuxer() const { return demuxer_; } 272 MockDemuxer* demuxer() const { return demuxer_; }
283 MockVideoDecoder* video_decoder() const { return video_decoder_; } 273 MockVideoDecoder* video_decoder() const { return video_decoder_; }
284 MockAudioDecoder* audio_decoder() const { return audio_decoder_; } 274 MockAudioDecoder* audio_decoder() const { return audio_decoder_; }
285 MockVideoRenderer* video_renderer() const { return video_renderer_; } 275 MockVideoRenderer* video_renderer() const { return video_renderer_; }
286 MockAudioRenderer* audio_renderer() const { return audio_renderer_; } 276 MockAudioRenderer* audio_renderer() const { return audio_renderer_; }
287 277
288 FilterCollection* filter_collection() const { 278 FilterCollection* filter_collection() const {
289 return filter_collection(true); 279 return filter_collection(true);
290 } 280 }
291 281
292 FilterCollection* filter_collection(bool include_data_source) const { 282 FilterCollection* filter_collection(bool include_data_source) const;
293 FilterCollection* collection = new FilterCollection();
294
295 if (include_data_source) {
296 collection->AddDataSource(data_source_);
297 }
298 collection->AddDemuxer(demuxer_);
299 collection->AddVideoDecoder(video_decoder_);
300 collection->AddAudioDecoder(audio_decoder_);
301 collection->AddVideoRenderer(video_renderer_);
302 collection->AddAudioRenderer(audio_renderer_);
303 return collection;
304 }
305 283
306 private: 284 private:
307 scoped_refptr<MockDataSource> data_source_; 285 scoped_refptr<MockDataSource> data_source_;
308 scoped_refptr<MockDemuxer> demuxer_; 286 scoped_refptr<MockDemuxer> demuxer_;
309 scoped_refptr<MockVideoDecoder> video_decoder_; 287 scoped_refptr<MockVideoDecoder> video_decoder_;
310 scoped_refptr<MockAudioDecoder> audio_decoder_; 288 scoped_refptr<MockAudioDecoder> audio_decoder_;
311 scoped_refptr<MockVideoRenderer> video_renderer_; 289 scoped_refptr<MockVideoRenderer> video_renderer_;
312 scoped_refptr<MockAudioRenderer> audio_renderer_; 290 scoped_refptr<MockAudioRenderer> audio_renderer_;
313 291
314 DISALLOW_COPY_AND_ASSIGN(MockFilterCollection); 292 DISALLOW_COPY_AND_ASSIGN(MockFilterCollection);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 332
355 // Helper gmock action that calls DisableAudioRenderer() on behalf of the 333 // Helper gmock action that calls DisableAudioRenderer() on behalf of the
356 // provided filter. 334 // provided filter.
357 ACTION_P(DisableAudioRenderer, filter) { 335 ACTION_P(DisableAudioRenderer, filter) {
358 filter->host()->DisableAudioRenderer(); 336 filter->host()->DisableAudioRenderer();
359 } 337 }
360 338
361 } // namespace media 339 } // namespace media
362 340
363 #endif // MEDIA_BASE_MOCK_FILTERS_H_ 341 #endif // MEDIA_BASE_MOCK_FILTERS_H_
OLDNEW
« gpu/gpu.gyp ('K') | « media/base/mock_filter_host.cc ('k') | media/base/mock_filters.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698