| 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 // 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 |
| 12 | 12 |
| 13 #ifndef MEDIA_BASE_MOCK_FILTERS_H_ | 13 #ifndef MEDIA_BASE_MOCK_FILTERS_H_ |
| 14 #define MEDIA_BASE_MOCK_FILTERS_H_ | 14 #define MEDIA_BASE_MOCK_FILTERS_H_ |
| 15 | 15 |
| 16 #include <string> | 16 #include <string> |
| 17 | 17 |
| 18 #include "base/callback.h" | 18 #include "base/callback.h" |
| 19 #include "media/base/filters.h" | 19 #include "media/base/filters.h" |
| 20 #include "media/base/media_filter_collection.h" | 20 #include "media/base/filter_collection.h" |
| 21 #include "media/base/video_frame.h" | 21 #include "media/base/video_frame.h" |
| 22 #include "testing/gmock/include/gmock/gmock.h" | 22 #include "testing/gmock/include/gmock/gmock.h" |
| 23 | 23 |
| 24 namespace media { | 24 namespace media { |
| 25 | 25 |
| 26 // Use this template to test for object destruction by setting expectations on | 26 // Use this template to test for object destruction by setting expectations on |
| 27 // the method OnDestroy(). | 27 // the method OnDestroy(). |
| 28 // | 28 // |
| 29 // TODO(scherkus): not sure about the naming... perhaps contribute this back | 29 // TODO(scherkus): not sure about the naming... perhaps contribute this back |
| 30 // to gmock itself! | 30 // to gmock itself! |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 DISALLOW_COPY_AND_ASSIGN(CallbackImpl); | 87 DISALLOW_COPY_AND_ASSIGN(CallbackImpl); |
| 88 }; | 88 }; |
| 89 | 89 |
| 90 DISALLOW_COPY_AND_ASSIGN(MockFilterCallback); | 90 DISALLOW_COPY_AND_ASSIGN(MockFilterCallback); |
| 91 }; | 91 }; |
| 92 | 92 |
| 93 class MockDataSource : public DataSource { | 93 class MockDataSource : public DataSource { |
| 94 public: | 94 public: |
| 95 MockDataSource() {} | 95 MockDataSource() {} |
| 96 | 96 |
| 97 // MediaFilter implementation. | 97 // Filter implementation. |
| 98 MOCK_METHOD1(Stop, void(FilterCallback* callback)); | 98 MOCK_METHOD1(Stop, void(FilterCallback* callback)); |
| 99 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); | 99 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); |
| 100 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); | 100 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); |
| 101 MOCK_METHOD0(OnAudioRendererDisabled, void()); | 101 MOCK_METHOD0(OnAudioRendererDisabled, void()); |
| 102 | 102 |
| 103 // DataSource implementation. | 103 // DataSource implementation. |
| 104 MOCK_METHOD1(IsUrlSupported, bool(const std::string& url)); | 104 MOCK_METHOD1(IsUrlSupported, bool(const std::string& url)); |
| 105 MOCK_METHOD2(Initialize, void(const std::string& url, | 105 MOCK_METHOD2(Initialize, void(const std::string& url, |
| 106 FilterCallback* callback)); | 106 FilterCallback* callback)); |
| 107 MOCK_METHOD0(media_format, const MediaFormat&()); | 107 MOCK_METHOD0(media_format, const MediaFormat&()); |
| 108 MOCK_METHOD4(Read, void(int64 position, size_t size, uint8* data, | 108 MOCK_METHOD4(Read, void(int64 position, size_t size, uint8* data, |
| 109 DataSource::ReadCallback* callback)); | 109 DataSource::ReadCallback* callback)); |
| 110 MOCK_METHOD1(GetSize, bool(int64* size_out)); | 110 MOCK_METHOD1(GetSize, bool(int64* size_out)); |
| 111 MOCK_METHOD0(IsStreaming, bool()); | 111 MOCK_METHOD0(IsStreaming, bool()); |
| 112 | 112 |
| 113 protected: | 113 protected: |
| 114 virtual ~MockDataSource() {} | 114 virtual ~MockDataSource() {} |
| 115 | 115 |
| 116 private: | 116 private: |
| 117 DISALLOW_COPY_AND_ASSIGN(MockDataSource); | 117 DISALLOW_COPY_AND_ASSIGN(MockDataSource); |
| 118 }; | 118 }; |
| 119 | 119 |
| 120 class MockDemuxer : public Demuxer { | 120 class MockDemuxer : public Demuxer { |
| 121 public: | 121 public: |
| 122 MockDemuxer() {} | 122 MockDemuxer() {} |
| 123 | 123 |
| 124 // MediaFilter implementation. | 124 // Filter implementation. |
| 125 MOCK_METHOD1(Stop, void(FilterCallback* callback)); | 125 MOCK_METHOD1(Stop, void(FilterCallback* callback)); |
| 126 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); | 126 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); |
| 127 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); | 127 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); |
| 128 MOCK_METHOD0(OnAudioRendererDisabled, void()); | 128 MOCK_METHOD0(OnAudioRendererDisabled, void()); |
| 129 | 129 |
| 130 // Demuxer implementation. | 130 // Demuxer implementation. |
| 131 MOCK_METHOD2(Initialize, void(DataSource* data_source, | 131 MOCK_METHOD2(Initialize, void(DataSource* data_source, |
| 132 FilterCallback* callback)); | 132 FilterCallback* callback)); |
| 133 MOCK_METHOD0(GetNumberOfStreams, size_t()); | 133 MOCK_METHOD0(GetNumberOfStreams, size_t()); |
| 134 MOCK_METHOD1(GetStream, scoped_refptr<DemuxerStream>(int stream_id)); | 134 MOCK_METHOD1(GetStream, scoped_refptr<DemuxerStream>(int stream_id)); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 156 private: | 156 private: |
| 157 MediaFormat media_format_; | 157 MediaFormat media_format_; |
| 158 | 158 |
| 159 DISALLOW_COPY_AND_ASSIGN(MockDemuxerStream); | 159 DISALLOW_COPY_AND_ASSIGN(MockDemuxerStream); |
| 160 }; | 160 }; |
| 161 | 161 |
| 162 class MockVideoDecoder : public VideoDecoder { | 162 class MockVideoDecoder : public VideoDecoder { |
| 163 public: | 163 public: |
| 164 MockVideoDecoder() {} | 164 MockVideoDecoder() {} |
| 165 | 165 |
| 166 // MediaFilter implementation. | 166 // Filter implementation. |
| 167 MOCK_METHOD1(Stop, void(FilterCallback* callback)); | 167 MOCK_METHOD1(Stop, void(FilterCallback* callback)); |
| 168 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); | 168 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); |
| 169 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); | 169 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); |
| 170 MOCK_METHOD0(OnAudioRendererDisabled, void()); | 170 MOCK_METHOD0(OnAudioRendererDisabled, void()); |
| 171 | 171 |
| 172 // VideoDecoder implementation. | 172 // VideoDecoder implementation. |
| 173 MOCK_METHOD2(Initialize, void(DemuxerStream* stream, | 173 MOCK_METHOD2(Initialize, void(DemuxerStream* stream, |
| 174 FilterCallback* callback)); | 174 FilterCallback* callback)); |
| 175 MOCK_METHOD0(media_format, const MediaFormat&()); | 175 MOCK_METHOD0(media_format, const MediaFormat&()); |
| 176 MOCK_METHOD1(ProduceVideoFrame, void(scoped_refptr<VideoFrame>)); | 176 MOCK_METHOD1(ProduceVideoFrame, void(scoped_refptr<VideoFrame>)); |
| 177 MOCK_METHOD0(ProvidesBuffer, bool()); | 177 MOCK_METHOD0(ProvidesBuffer, bool()); |
| 178 | 178 |
| 179 // Make this method public so that tests can make use of it. | 179 // Make this method public so that tests can make use of it. |
| 180 void VideoFrameReady(scoped_refptr<VideoFrame> frame) { | 180 void VideoFrameReady(scoped_refptr<VideoFrame> frame) { |
| 181 VideoDecoder::VideoFrameReady(frame); | 181 VideoDecoder::VideoFrameReady(frame); |
| 182 } | 182 } |
| 183 | 183 |
| 184 protected: | 184 protected: |
| 185 virtual ~MockVideoDecoder() {} | 185 virtual ~MockVideoDecoder() {} |
| 186 | 186 |
| 187 private: | 187 private: |
| 188 DISALLOW_COPY_AND_ASSIGN(MockVideoDecoder); | 188 DISALLOW_COPY_AND_ASSIGN(MockVideoDecoder); |
| 189 }; | 189 }; |
| 190 | 190 |
| 191 class MockAudioDecoder : public AudioDecoder { | 191 class MockAudioDecoder : public AudioDecoder { |
| 192 public: | 192 public: |
| 193 MockAudioDecoder() {} | 193 MockAudioDecoder() {} |
| 194 | 194 |
| 195 // MediaFilter implementation. | 195 // Filter implementation. |
| 196 MOCK_METHOD1(Stop, void(FilterCallback* callback)); | 196 MOCK_METHOD1(Stop, void(FilterCallback* callback)); |
| 197 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); | 197 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); |
| 198 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); | 198 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); |
| 199 MOCK_METHOD0(OnAudioRendererDisabled, void()); | 199 MOCK_METHOD0(OnAudioRendererDisabled, void()); |
| 200 | 200 |
| 201 // AudioDecoder implementation. | 201 // AudioDecoder implementation. |
| 202 MOCK_METHOD2(Initialize, void(DemuxerStream* stream, | 202 MOCK_METHOD2(Initialize, void(DemuxerStream* stream, |
| 203 FilterCallback* callback)); | 203 FilterCallback* callback)); |
| 204 MOCK_METHOD0(media_format, const MediaFormat&()); | 204 MOCK_METHOD0(media_format, const MediaFormat&()); |
| 205 MOCK_METHOD1(ProduceAudioSamples, void(scoped_refptr<Buffer>)); | 205 MOCK_METHOD1(ProduceAudioSamples, void(scoped_refptr<Buffer>)); |
| 206 | 206 |
| 207 // change to public to allow unittest for access; | 207 // change to public to allow unittest for access; |
| 208 ConsumeAudioSamplesCallback* consume_audio_samples_callback() { | 208 ConsumeAudioSamplesCallback* consume_audio_samples_callback() { |
| 209 return AudioDecoder::consume_audio_samples_callback(); | 209 return AudioDecoder::consume_audio_samples_callback(); |
| 210 } | 210 } |
| 211 | 211 |
| 212 protected: | 212 protected: |
| 213 virtual ~MockAudioDecoder() {} | 213 virtual ~MockAudioDecoder() {} |
| 214 | 214 |
| 215 private: | 215 private: |
| 216 DISALLOW_COPY_AND_ASSIGN(MockAudioDecoder); | 216 DISALLOW_COPY_AND_ASSIGN(MockAudioDecoder); |
| 217 }; | 217 }; |
| 218 | 218 |
| 219 class MockVideoRenderer : public VideoRenderer { | 219 class MockVideoRenderer : public VideoRenderer { |
| 220 public: | 220 public: |
| 221 MockVideoRenderer() {} | 221 MockVideoRenderer() {} |
| 222 | 222 |
| 223 // MediaFilter implementation. | 223 // Filter implementation. |
| 224 MOCK_METHOD1(Stop, void(FilterCallback* callback)); | 224 MOCK_METHOD1(Stop, void(FilterCallback* callback)); |
| 225 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); | 225 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); |
| 226 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); | 226 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); |
| 227 MOCK_METHOD0(OnAudioRendererDisabled, void()); | 227 MOCK_METHOD0(OnAudioRendererDisabled, void()); |
| 228 | 228 |
| 229 // VideoRenderer implementation. | 229 // VideoRenderer implementation. |
| 230 MOCK_METHOD2(Initialize, void(VideoDecoder* decoder, | 230 MOCK_METHOD2(Initialize, void(VideoDecoder* decoder, |
| 231 FilterCallback* callback)); | 231 FilterCallback* callback)); |
| 232 MOCK_METHOD0(HasEnded, bool()); | 232 MOCK_METHOD0(HasEnded, bool()); |
| 233 MOCK_METHOD1(ConsumeVideoFrame, void(scoped_refptr<VideoFrame> frame)); | 233 MOCK_METHOD1(ConsumeVideoFrame, void(scoped_refptr<VideoFrame> frame)); |
| 234 | 234 |
| 235 protected: | 235 protected: |
| 236 virtual ~MockVideoRenderer() {} | 236 virtual ~MockVideoRenderer() {} |
| 237 | 237 |
| 238 private: | 238 private: |
| 239 DISALLOW_COPY_AND_ASSIGN(MockVideoRenderer); | 239 DISALLOW_COPY_AND_ASSIGN(MockVideoRenderer); |
| 240 }; | 240 }; |
| 241 | 241 |
| 242 class MockAudioRenderer : public AudioRenderer { | 242 class MockAudioRenderer : public AudioRenderer { |
| 243 public: | 243 public: |
| 244 MockAudioRenderer() {} | 244 MockAudioRenderer() {} |
| 245 | 245 |
| 246 // MediaFilter implementation. | 246 // Filter implementation. |
| 247 MOCK_METHOD1(Stop, void(FilterCallback* callback)); | 247 MOCK_METHOD1(Stop, void(FilterCallback* callback)); |
| 248 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); | 248 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); |
| 249 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); | 249 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); |
| 250 MOCK_METHOD0(OnAudioRendererDisabled, void()); | 250 MOCK_METHOD0(OnAudioRendererDisabled, void()); |
| 251 | 251 |
| 252 // AudioRenderer implementation. | 252 // AudioRenderer implementation. |
| 253 MOCK_METHOD2(Initialize, void(AudioDecoder* decoder, | 253 MOCK_METHOD2(Initialize, void(AudioDecoder* decoder, |
| 254 FilterCallback* callback)); | 254 FilterCallback* callback)); |
| 255 MOCK_METHOD0(HasEnded, bool()); | 255 MOCK_METHOD0(HasEnded, bool()); |
| 256 MOCK_METHOD1(SetVolume, void(float volume)); | 256 MOCK_METHOD1(SetVolume, void(float volume)); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 278 virtual ~MockFilterCollection() {} | 278 virtual ~MockFilterCollection() {} |
| 279 | 279 |
| 280 // Mock accessors. | 280 // Mock accessors. |
| 281 MockDataSource* data_source() const { return data_source_; } | 281 MockDataSource* data_source() const { return data_source_; } |
| 282 MockDemuxer* demuxer() const { return demuxer_; } | 282 MockDemuxer* demuxer() const { return demuxer_; } |
| 283 MockVideoDecoder* video_decoder() const { return video_decoder_; } | 283 MockVideoDecoder* video_decoder() const { return video_decoder_; } |
| 284 MockAudioDecoder* audio_decoder() const { return audio_decoder_; } | 284 MockAudioDecoder* audio_decoder() const { return audio_decoder_; } |
| 285 MockVideoRenderer* video_renderer() const { return video_renderer_; } | 285 MockVideoRenderer* video_renderer() const { return video_renderer_; } |
| 286 MockAudioRenderer* audio_renderer() const { return audio_renderer_; } | 286 MockAudioRenderer* audio_renderer() const { return audio_renderer_; } |
| 287 | 287 |
| 288 MediaFilterCollection* filter_collection() const { | 288 FilterCollection* filter_collection() const { |
| 289 return filter_collection(true); | 289 return filter_collection(true); |
| 290 } | 290 } |
| 291 | 291 |
| 292 MediaFilterCollection* filter_collection(bool include_data_source) const { | 292 FilterCollection* filter_collection(bool include_data_source) const { |
| 293 MediaFilterCollection* collection = new MediaFilterCollection(); | 293 FilterCollection* collection = new FilterCollection(); |
| 294 | 294 |
| 295 if (include_data_source) { | 295 if (include_data_source) { |
| 296 collection->AddDataSource(data_source_); | 296 collection->AddDataSource(data_source_); |
| 297 } | 297 } |
| 298 collection->AddDemuxer(demuxer_); | 298 collection->AddDemuxer(demuxer_); |
| 299 collection->AddVideoDecoder(video_decoder_); | 299 collection->AddVideoDecoder(video_decoder_); |
| 300 collection->AddAudioDecoder(audio_decoder_); | 300 collection->AddAudioDecoder(audio_decoder_); |
| 301 collection->AddVideoRenderer(video_renderer_); | 301 collection->AddVideoRenderer(video_renderer_); |
| 302 collection->AddAudioRenderer(audio_renderer_); | 302 collection->AddAudioRenderer(audio_renderer_); |
| 303 return collection; | 303 return collection; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 354 | 354 |
| 355 // Helper gmock action that calls DisableAudioRenderer() on behalf of the | 355 // Helper gmock action that calls DisableAudioRenderer() on behalf of the |
| 356 // provided filter. | 356 // provided filter. |
| 357 ACTION_P(DisableAudioRenderer, filter) { | 357 ACTION_P(DisableAudioRenderer, filter) { |
| 358 filter->host()->DisableAudioRenderer(); | 358 filter->host()->DisableAudioRenderer(); |
| 359 } | 359 } |
| 360 | 360 |
| 361 } // namespace media | 361 } // namespace media |
| 362 | 362 |
| 363 #endif // MEDIA_BASE_MOCK_FILTERS_H_ | 363 #endif // MEDIA_BASE_MOCK_FILTERS_H_ |
| OLD | NEW |