Index: media/base/mock_filters.h |
diff --git a/media/base/mock_filters.h b/media/base/mock_filters.h |
index 2a2b13cc61fafdc4b73272a74cd244863663f292..c45f8e65ed5e2e31d40827322bea8a1bd7db8273 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 { |
awong
2009/07/08 22:06:03
Hmm...having a factory that holds mocks...this fee
scherkus (not reviewing)
2009/07/08 22:14:51
You got it. Normal filter pattern is to have the
|
+ 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_ |