diff options
author | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-08 23:04:57 +0000 |
---|---|---|
committer | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-08 23:04:57 +0000 |
commit | 67798caf395912068941e0f3479232d9adce1d0f (patch) | |
tree | 7fe0e552ca003267e737c216406d744db9eee815 /media/base | |
parent | 8358105e6826be9bbb7ef2a43671d596aa492ba6 (diff) | |
download | chromium_src-67798caf395912068941e0f3479232d9adce1d0f.zip chromium_src-67798caf395912068941e0f3479232d9adce1d0f.tar.gz chromium_src-67798caf395912068941e0f3479232d9adce1d0f.tar.bz2 |
Wrote gmock-based mock filters and a mock filter factory.
Next up is actually refactoring tests to use these and not the old_mocks version. The biggest user is the PipelineImpl tests, which I'm currently refactoring anyway hence sending this out for review.
BUG=16008
TEST=FFmpegVideoDecoderTest should still pass
Review URL: http://codereview.chromium.org/149356
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20201 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base')
-rw-r--r-- | media/base/filters.h | 2 | ||||
-rw-r--r-- | media/base/mock_filters.h | 175 |
2 files changed, 176 insertions, 1 deletions
diff --git a/media/base/filters.h b/media/base/filters.h index 43f24fd..bc94d39 100644 --- a/media/base/filters.h +++ b/media/base/filters.h @@ -245,7 +245,7 @@ class AudioDecoder : public MediaFilter { // Schedules a read. Decoder takes ownership of the callback. // // TODO(scherkus): switch Read() callback to scoped_refptr<>. - virtual void Read(Callback1<Buffer*>::Type* read_callbasck) = 0; + virtual void Read(Callback1<Buffer*>::Type* read_callback) = 0; }; diff --git a/media/base/mock_filters.h b/media/base/mock_filters.h index 2a2b13c..c45f8e6 100644 --- a/media/base/mock_filters.h +++ b/media/base/mock_filters.h @@ -43,6 +43,181 @@ class MockDataSource : public DataSource { DISALLOW_COPY_AND_ASSIGN(MockDataSource); }; +class MockDemuxer : public Demuxer { + public: + MockDemuxer() {} + + // MediaFilter implementation. + MOCK_METHOD0(Stop, void()); + MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); + MOCK_METHOD1(Seek, void(base::TimeDelta time)); + + // Demuxer implementation. + MOCK_METHOD1(Initialize, bool(DataSource* data_source)); + MOCK_METHOD0(GetNumberOfStreams, size_t()); + MOCK_METHOD1(GetStream, scoped_refptr<DemuxerStream>(int stream_id)); + + protected: + virtual ~MockDemuxer() {} + + private: + DISALLOW_COPY_AND_ASSIGN(MockDemuxer); +}; + +class MockDemuxerStream : public DemuxerStream { + public: + MockDemuxerStream() {} + + // DemuxerStream implementation. + MOCK_METHOD0(media_format, const MediaFormat&()); + MOCK_METHOD1(Read, void(Callback1<Buffer*>::Type* read_callback)); + MOCK_METHOD1(QueryInterface, void*(const char* interface_id)); + + protected: + virtual ~MockDemuxerStream() {} + + private: + DISALLOW_COPY_AND_ASSIGN(MockDemuxerStream); +}; + +class MockVideoDecoder : public VideoDecoder { + public: + MockVideoDecoder() {} + + // MediaFilter implementation. + MOCK_METHOD0(Stop, void()); + MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); + MOCK_METHOD1(Seek, void(base::TimeDelta time)); + + // VideoDecoder implementation. + MOCK_METHOD1(Initialize, bool(DemuxerStream* demuxer_stream)); + MOCK_METHOD0(media_format, const MediaFormat&()); + MOCK_METHOD1(Read, void(Callback1<VideoFrame*>::Type* read_callback)); + + protected: + virtual ~MockVideoDecoder() {} + + private: + DISALLOW_COPY_AND_ASSIGN(MockVideoDecoder); +}; + +class MockAudioDecoder : public AudioDecoder { + public: + MockAudioDecoder() {} + + // MediaFilter implementation. + MOCK_METHOD0(Stop, void()); + MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); + MOCK_METHOD1(Seek, void(base::TimeDelta time)); + + // AudioDecoder implementation. + MOCK_METHOD1(Initialize, bool(DemuxerStream* demuxer_stream)); + MOCK_METHOD0(media_format, const MediaFormat&()); + MOCK_METHOD1(Read, void(Callback1<Buffer*>::Type* read_callback)); + + protected: + virtual ~MockAudioDecoder() {} + + private: + DISALLOW_COPY_AND_ASSIGN(MockAudioDecoder); +}; + +class MockVideoRenderer : public VideoRenderer { + public: + MockVideoRenderer() {} + + // MediaFilter implementation. + MOCK_METHOD0(Stop, void()); + MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); + MOCK_METHOD1(Seek, void(base::TimeDelta time)); + + // VideoRenderer implementation. + MOCK_METHOD1(Initialize, bool(VideoDecoder* decoder)); + + protected: + virtual ~MockVideoRenderer() {} + + private: + DISALLOW_COPY_AND_ASSIGN(MockVideoRenderer); +}; + +class MockAudioRenderer : public AudioRenderer { + public: + MockAudioRenderer() {} + + // MediaFilter implementation. + MOCK_METHOD0(Stop, void()); + MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); + MOCK_METHOD1(Seek, void(base::TimeDelta time)); + + // AudioRenderer implementation. + MOCK_METHOD1(Initialize, bool(AudioDecoder* decoder)); + MOCK_METHOD1(SetVolume, void(float volume)); + + protected: + virtual ~MockAudioRenderer() {} + + private: + DISALLOW_COPY_AND_ASSIGN(MockAudioRenderer); +}; + +// FilterFactory that returns canned instances of mock filters. You can set +// expectations on the filters and then pass the factory into a pipeline. +// +// TODO(scherkus): add the other filter types. +class MockFilterFactory : public FilterFactory { + public: + MockFilterFactory() + : data_source_(new MockDataSource()), + demuxer_(new MockDemuxer()), + video_decoder_(new MockVideoDecoder()), + audio_decoder_(new MockAudioDecoder()), + video_renderer_(new MockVideoRenderer()), + audio_renderer_(new MockAudioRenderer()) { + } + + virtual ~MockFilterFactory() {} + + // Mock accessors. + MockDataSource* data_source() const { return data_source_; } + MockDemuxer* demuxer() const { return demuxer_; } + MockVideoDecoder* video_decoder() const { return video_decoder_; } + MockAudioDecoder* audio_decoder() const { return audio_decoder_; } + MockVideoRenderer* video_renderer() const { return video_renderer_; } + MockAudioRenderer* audio_renderer() const { return audio_renderer_; } + + protected: + MediaFilter* Create(FilterType filter_type, const MediaFormat& media_format) { + switch (filter_type) { + case FILTER_DATA_SOURCE: + return data_source_; + case FILTER_DEMUXER: + return demuxer_; + case FILTER_VIDEO_DECODER: + return video_decoder_; + case FILTER_AUDIO_DECODER: + return audio_decoder_; + case FILTER_VIDEO_RENDERER: + return video_renderer_; + case FILTER_AUDIO_RENDERER: + return audio_renderer_; + default: + NOTREACHED() << "Unknown filter type: " << filter_type; + } + return NULL; + } + + private: + scoped_refptr<MockDataSource> data_source_; + scoped_refptr<MockDemuxer> demuxer_; + scoped_refptr<MockVideoDecoder> video_decoder_; + scoped_refptr<MockAudioDecoder> audio_decoder_; + scoped_refptr<MockVideoRenderer> video_renderer_; + scoped_refptr<MockAudioRenderer> audio_renderer_; + + DISALLOW_COPY_AND_ASSIGN(MockFilterFactory); +}; + } // namespace media #endif // MEDIA_BASE_MOCK_FILTERS_H_ |