summaryrefslogtreecommitdiffstats
path: root/media/base/mock_filters.h
diff options
context:
space:
mode:
authorscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-15 17:31:33 +0000
committerscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-15 17:31:33 +0000
commitaa8cc5a24cb681eb307635679a69512548896b5e (patch)
treeaa9691849ac50ea76f100978a31d976a35279e40 /media/base/mock_filters.h
parent1dce5bac3b547984f3305f011a46caea412960c5 (diff)
downloadchromium_src-aa8cc5a24cb681eb307635679a69512548896b5e.zip
chromium_src-aa8cc5a24cb681eb307635679a69512548896b5e.tar.gz
chromium_src-aa8cc5a24cb681eb307635679a69512548896b5e.tar.bz2
Splitting media filter's Initialize() into Create() + callback and Seek() + callback.
BUG=16014,16031 TEST=media_unittests, layout tests Review URL: http://codereview.chromium.org/155469 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20744 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base/mock_filters.h')
-rw-r--r--media/base/mock_filters.h97
1 files changed, 80 insertions, 17 deletions
diff --git a/media/base/mock_filters.h b/media/base/mock_filters.h
index bffba6f..6d8c8a9 100644
--- a/media/base/mock_filters.h
+++ b/media/base/mock_filters.h
@@ -40,6 +40,52 @@ class Destroyable : public MockClass {
DISALLOW_COPY_AND_ASSIGN(Destroyable);
};
+// Helper class used to test that callbacks are executed. It is recommend you
+// combine this class with StrictMock<> to verify that the callback is executed.
+// You can reuse the same instance of a MockFilterCallback many times since
+// gmock will track the number of times the methods are executed.
+class MockFilterCallback {
+ public:
+ MockFilterCallback() {}
+ virtual ~MockFilterCallback() {}
+
+ MOCK_METHOD0(OnCallbackDestroyed, void());
+ MOCK_METHOD0(OnFilterCallback, void());
+
+ // Helper method to create a new callback for this mock. The callback will
+ // call OnFilterCallback() when executed and OnCallbackDestroyed() when
+ // destroyed. Clients should use NiceMock<> or StrictMock<> depending on the
+ // test.
+ FilterCallback* NewCallback() {
+ return new CallbackImpl(this);
+ }
+
+ private:
+ // Private implementation of CallbackRunner used to trigger expectations on
+ // MockFilterCallback.
+ class CallbackImpl : public CallbackRunner<Tuple0> {
+ public:
+ CallbackImpl(MockFilterCallback* mock_callback)
+ : mock_callback_(mock_callback) {
+ }
+
+ virtual ~CallbackImpl() {
+ mock_callback_->OnCallbackDestroyed();
+ }
+
+ virtual void RunWithParams(const Tuple0& params) {
+ mock_callback_->OnFilterCallback();
+ }
+
+ private:
+ MockFilterCallback* mock_callback_;
+
+ DISALLOW_COPY_AND_ASSIGN(CallbackImpl);
+ };
+
+ DISALLOW_COPY_AND_ASSIGN(MockFilterCallback);
+};
+
class MockDataSource : public DataSource {
public:
MockDataSource() {}
@@ -47,10 +93,11 @@ class MockDataSource : public DataSource {
// MediaFilter implementation.
MOCK_METHOD0(Stop, void());
MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
- MOCK_METHOD1(Seek, void(base::TimeDelta time));
+ MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback));
// DataSource implementation.
- MOCK_METHOD1(Initialize, bool(const std::string& url));
+ MOCK_METHOD2(Initialize, void(const std::string& url,
+ FilterCallback* callback));
const MediaFormat& media_format() { return media_format_; }
MOCK_METHOD2(Read, size_t(uint8* data, size_t size));
MOCK_METHOD1(GetPosition, bool(int64* position_out));
@@ -74,10 +121,11 @@ class MockDemuxer : public Demuxer {
// MediaFilter implementation.
MOCK_METHOD0(Stop, void());
MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
- MOCK_METHOD1(Seek, void(base::TimeDelta time));
+ MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback));
// Demuxer implementation.
- MOCK_METHOD1(Initialize, bool(DataSource* data_source));
+ MOCK_METHOD2(Initialize, void(DataSource* data_source,
+ FilterCallback* callback));
MOCK_METHOD0(GetNumberOfStreams, size_t());
MOCK_METHOD1(GetStream, scoped_refptr<DemuxerStream>(int stream_id));
@@ -116,13 +164,21 @@ class MockVideoDecoder : public VideoDecoder {
public:
MockVideoDecoder() {}
+ // Sets the essential media format keys for this decoder.
+ MockVideoDecoder(const std::string& mime_type, int width, int height) {
+ media_format_.SetAsString(MediaFormat::kMimeType, mime_type);
+ media_format_.SetAsInteger(MediaFormat::kWidth, width);
+ media_format_.SetAsInteger(MediaFormat::kHeight, height);
+ }
+
// MediaFilter implementation.
MOCK_METHOD0(Stop, void());
MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
- MOCK_METHOD1(Seek, void(base::TimeDelta time));
+ MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback));
// VideoDecoder implementation.
- MOCK_METHOD1(Initialize, bool(DemuxerStream* demuxer_stream));
+ MOCK_METHOD2(Initialize, void(DemuxerStream* stream,
+ FilterCallback* callback));
const MediaFormat& media_format() { return media_format_; }
MOCK_METHOD1(Read, void(Callback1<VideoFrame*>::Type* read_callback));
@@ -142,10 +198,11 @@ class MockAudioDecoder : public AudioDecoder {
// MediaFilter implementation.
MOCK_METHOD0(Stop, void());
MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
- MOCK_METHOD1(Seek, void(base::TimeDelta time));
+ MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback));
// AudioDecoder implementation.
- MOCK_METHOD1(Initialize, bool(DemuxerStream* demuxer_stream));
+ MOCK_METHOD2(Initialize, void(DemuxerStream* stream,
+ FilterCallback* callback));
const MediaFormat& media_format() { return media_format_; }
MOCK_METHOD1(Read, void(Callback1<Buffer*>::Type* read_callback));
@@ -165,10 +222,11 @@ class MockVideoRenderer : public VideoRenderer {
// MediaFilter implementation.
MOCK_METHOD0(Stop, void());
MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
- MOCK_METHOD1(Seek, void(base::TimeDelta time));
+ MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback));
// VideoRenderer implementation.
- MOCK_METHOD1(Initialize, bool(VideoDecoder* decoder));
+ MOCK_METHOD2(Initialize, void(VideoDecoder* decoder,
+ FilterCallback* callback));
protected:
virtual ~MockVideoRenderer() {}
@@ -184,10 +242,11 @@ class MockAudioRenderer : public AudioRenderer {
// MediaFilter implementation.
MOCK_METHOD0(Stop, void());
MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
- MOCK_METHOD1(Seek, void(base::TimeDelta time));
+ MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback));
// AudioRenderer implementation.
- MOCK_METHOD1(Initialize, bool(AudioDecoder* decoder));
+ MOCK_METHOD2(Initialize, void(AudioDecoder* decoder,
+ FilterCallback* callback));
MOCK_METHOD1(SetVolume, void(float volume));
protected:
@@ -263,11 +322,15 @@ class MockFilterFactory : public FilterFactory {
DISALLOW_COPY_AND_ASSIGN(MockFilterFactory);
};
-// Helper gmock action that calls InitializationComplete() on behalf of the
-// provided filter.
-ACTION_P(InitializationComplete, filter) {
- filter->host()->InitializationComplete();
-}
+// Helper gmock function that immediately executes and destroys the
+// FilterCallback on behalf of the provided filter. Can be used when mocking
+// the Initialize() and Seek() methods.
+void RunFilterCallback(::testing::Unused, FilterCallback* callback);
+
+// Helper gmock function that immediately destroys the FilterCallback on behalf
+// of the provided filter. Can be used when mocking the Initialize() and Seek()
+// methods.
+void DestroyFilterCallback(::testing::Unused, FilterCallback* callback);
// Helper gmock action that calls Error() on behalf of the provided filter.
ACTION_P2(Error, filter, error) {