• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef MEDIA_BASE_MOCK_FILTERS_H_
6 #define MEDIA_BASE_MOCK_FILTERS_H_
7 
8 #include <string>
9 
10 #include "base/callback.h"
11 #include "media/base/audio_decoder.h"
12 #include "media/base/audio_decoder_config.h"
13 #include "media/base/audio_renderer.h"
14 #include "media/base/decoder_buffer.h"
15 #include "media/base/decryptor.h"
16 #include "media/base/demuxer.h"
17 #include "media/base/filter_collection.h"
18 #include "media/base/pipeline_status.h"
19 #include "media/base/text_track.h"
20 #include "media/base/video_decoder.h"
21 #include "media/base/video_decoder_config.h"
22 #include "media/base/video_frame.h"
23 #include "media/base/video_renderer.h"
24 #include "testing/gmock/include/gmock/gmock.h"
25 
26 namespace media {
27 
28 class MockDemuxer : public Demuxer {
29  public:
30   MockDemuxer();
31   virtual ~MockDemuxer();
32 
33   // Demuxer implementation.
34   MOCK_METHOD3(Initialize,
35                void(DemuxerHost* host, const PipelineStatusCB& cb, bool));
36   MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
37   MOCK_METHOD2(Seek, void(base::TimeDelta time, const PipelineStatusCB& cb));
38   MOCK_METHOD1(Stop, void(const base::Closure& callback));
39   MOCK_METHOD0(OnAudioRendererDisabled, void());
40   MOCK_METHOD1(GetStream, DemuxerStream*(DemuxerStream::Type));
41   MOCK_CONST_METHOD0(GetStartTime, base::TimeDelta());
42   MOCK_CONST_METHOD0(GetTimelineOffset, base::Time());
43   MOCK_CONST_METHOD0(GetLiveness, Liveness());
44 
45  private:
46   DISALLOW_COPY_AND_ASSIGN(MockDemuxer);
47 };
48 
49 class MockDemuxerStream : public DemuxerStream {
50  public:
51   explicit MockDemuxerStream(DemuxerStream::Type type);
52   virtual ~MockDemuxerStream();
53 
54   // DemuxerStream implementation.
55   virtual Type type() OVERRIDE;
56   MOCK_METHOD1(Read, void(const ReadCB& read_cb));
57   virtual AudioDecoderConfig audio_decoder_config() OVERRIDE;
58   virtual VideoDecoderConfig video_decoder_config() OVERRIDE;
59   MOCK_METHOD0(EnableBitstreamConverter, void());
60   MOCK_METHOD0(SupportsConfigChanges, bool());
61 
62   void set_audio_decoder_config(const AudioDecoderConfig& config);
63   void set_video_decoder_config(const VideoDecoderConfig& config);
64 
65  private:
66   DemuxerStream::Type type_;
67   AudioDecoderConfig audio_decoder_config_;
68   VideoDecoderConfig video_decoder_config_;
69 
70   DISALLOW_COPY_AND_ASSIGN(MockDemuxerStream);
71 };
72 
73 class MockVideoDecoder : public VideoDecoder {
74  public:
75   MockVideoDecoder();
76   virtual ~MockVideoDecoder();
77 
78   // VideoDecoder implementation.
79   MOCK_METHOD4(Initialize, void(const VideoDecoderConfig& config,
80                                 bool low_delay,
81                                 const PipelineStatusCB& status_cb,
82                                 const OutputCB& output_cb));
83   MOCK_METHOD2(Decode, void(const scoped_refptr<DecoderBuffer>& buffer,
84                             const DecodeCB&));
85   MOCK_METHOD1(Reset, void(const base::Closure&));
86   MOCK_METHOD0(Stop, void());
87   MOCK_CONST_METHOD0(HasAlpha, bool());
88 
89  private:
90   DISALLOW_COPY_AND_ASSIGN(MockVideoDecoder);
91 };
92 
93 class MockAudioDecoder : public AudioDecoder {
94  public:
95   MockAudioDecoder();
96   virtual ~MockAudioDecoder();
97 
98   // AudioDecoder implementation.
99   MOCK_METHOD3(Initialize,
100                void(const AudioDecoderConfig& config,
101                     const PipelineStatusCB& status_cb,
102                     const OutputCB& output_cb));
103   MOCK_METHOD2(Decode,
104                void(const scoped_refptr<DecoderBuffer>& buffer,
105                     const DecodeCB&));
106   MOCK_METHOD1(Reset, void(const base::Closure&));
107   MOCK_METHOD0(Stop, void());
108 
109  private:
110   DISALLOW_COPY_AND_ASSIGN(MockAudioDecoder);
111 };
112 
113 class MockVideoRenderer : public VideoRenderer {
114  public:
115   MockVideoRenderer();
116   virtual ~MockVideoRenderer();
117 
118   // VideoRenderer implementation.
119   MOCK_METHOD9(Initialize, void(DemuxerStream* stream,
120                                 bool low_delay,
121                                 const PipelineStatusCB& init_cb,
122                                 const StatisticsCB& statistics_cb,
123                                 const TimeCB& time_cb,
124                                 const base::Closure& ended_cb,
125                                 const PipelineStatusCB& error_cb,
126                                 const TimeDeltaCB& get_time_cb,
127                                 const TimeDeltaCB& get_duration_cb));
128   MOCK_METHOD1(Play, void(const base::Closure& callback));
129   MOCK_METHOD1(Flush, void(const base::Closure& callback));
130   MOCK_METHOD2(Preroll, void(base::TimeDelta time, const PipelineStatusCB& cb));
131   MOCK_METHOD1(Stop, void(const base::Closure& callback));
132   MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
133 
134  private:
135   DISALLOW_COPY_AND_ASSIGN(MockVideoRenderer);
136 };
137 
138 class MockAudioRenderer : public AudioRenderer {
139  public:
140   MockAudioRenderer();
141   virtual ~MockAudioRenderer();
142 
143   // AudioRenderer implementation.
144   MOCK_METHOD7(Initialize, void(DemuxerStream* stream,
145                                 const PipelineStatusCB& init_cb,
146                                 const StatisticsCB& statistics_cb,
147                                 const base::Closure& underflow_cb,
148                                 const TimeCB& time_cb,
149                                 const base::Closure& ended_cb,
150                                 const PipelineStatusCB& error_cb));
151   MOCK_METHOD0(StartRendering, void());
152   MOCK_METHOD0(StopRendering, void());
153   MOCK_METHOD1(Flush, void(const base::Closure& callback));
154   MOCK_METHOD1(Stop, void(const base::Closure& callback));
155   MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
156   MOCK_METHOD2(Preroll, void(base::TimeDelta time, const PipelineStatusCB& cb));
157   MOCK_METHOD1(SetVolume, void(float volume));
158   MOCK_METHOD0(ResumeAfterUnderflow, void());
159 
160  private:
161   DISALLOW_COPY_AND_ASSIGN(MockAudioRenderer);
162 };
163 
164 class MockTextTrack : public TextTrack {
165  public:
166   MockTextTrack();
167   virtual ~MockTextTrack();
168 
169   MOCK_METHOD5(addWebVTTCue, void(const base::TimeDelta& start,
170                                   const base::TimeDelta& end,
171                                   const std::string& id,
172                                   const std::string& content,
173                                   const std::string& settings));
174 
175  private:
176   DISALLOW_COPY_AND_ASSIGN(MockTextTrack);
177 };
178 
179 class MockDecryptor : public Decryptor {
180  public:
181   MockDecryptor();
182   virtual ~MockDecryptor();
183 
184   MOCK_METHOD2(RegisterNewKeyCB, void(StreamType stream_type,
185                                       const NewKeyCB& new_key_cb));
186   MOCK_METHOD3(Decrypt, void(StreamType stream_type,
187                              const scoped_refptr<DecoderBuffer>& encrypted,
188                              const DecryptCB& decrypt_cb));
189   MOCK_METHOD1(CancelDecrypt, void(StreamType stream_type));
190   MOCK_METHOD2(InitializeAudioDecoder,
191                void(const AudioDecoderConfig& config,
192                     const DecoderInitCB& init_cb));
193   MOCK_METHOD2(InitializeVideoDecoder,
194                void(const VideoDecoderConfig& config,
195                     const DecoderInitCB& init_cb));
196   MOCK_METHOD2(DecryptAndDecodeAudio,
197                void(const scoped_refptr<media::DecoderBuffer>& encrypted,
198                     const AudioDecodeCB& audio_decode_cb));
199   MOCK_METHOD2(DecryptAndDecodeVideo,
200                void(const scoped_refptr<media::DecoderBuffer>& encrypted,
201                     const VideoDecodeCB& video_decode_cb));
202   MOCK_METHOD1(ResetDecoder, void(StreamType stream_type));
203   MOCK_METHOD1(DeinitializeDecoder, void(StreamType stream_type));
204 
205  private:
206   DISALLOW_COPY_AND_ASSIGN(MockDecryptor);
207 };
208 
209 // Helper mock statistics callback.
210 class MockStatisticsCB {
211  public:
212   MockStatisticsCB();
213   ~MockStatisticsCB();
214 
215   MOCK_METHOD1(OnStatistics, void(const media::PipelineStatistics& statistics));
216 };
217 
218 }  // namespace media
219 
220 #endif  // MEDIA_BASE_MOCK_FILTERS_H_
221