1// Copyright 2014 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 CONTENT_RENDERER_MEDIA_MOCK_MEDIA_STREAM_VIDEO_SINK_H_
6#define CONTENT_RENDERER_MEDIA_MOCK_MEDIA_STREAM_VIDEO_SINK_H_
7
8#include "content/public/renderer/media_stream_video_sink.h"
9
10#include "base/memory/weak_ptr.h"
11#include "content/common/media/video_capture.h"
12#include "media/base/video_frame.h"
13#include "testing/gmock/include/gmock/gmock.h"
14
15namespace content {
16
17class MockMediaStreamVideoSink : public MediaStreamVideoSink {
18 public:
19  MockMediaStreamVideoSink();
20  virtual ~MockMediaStreamVideoSink();
21
22  virtual void OnReadyStateChanged(
23      blink::WebMediaStreamSource::ReadyState state) OVERRIDE;
24  virtual void OnEnabledChanged(bool enabled) OVERRIDE;
25
26  // Triggered when OnVideoFrame(const scoped_refptr<media::VideoFrame>& frame)
27  // is called.
28  MOCK_METHOD0(OnVideoFrame, void());
29
30  VideoCaptureDeliverFrameCB GetDeliverFrameCB();
31
32  int number_of_frames() const { return number_of_frames_; }
33  media::VideoFrame::Format format() const { return format_; }
34  gfx::Size frame_size() const { return frame_size_; }
35  scoped_refptr<media::VideoFrame> last_frame() const { return last_frame_; };
36
37  bool enabled() const { return enabled_; }
38  blink::WebMediaStreamSource::ReadyState state() const { return state_; }
39
40 private:
41  void DeliverVideoFrame(
42      const scoped_refptr<media::VideoFrame>& frame,
43      const media::VideoCaptureFormat& format,
44      const base::TimeTicks& estimated_capture_time);
45
46  int number_of_frames_;
47  bool enabled_;
48  media::VideoFrame::Format format_;
49  blink::WebMediaStreamSource::ReadyState state_;
50  gfx::Size frame_size_;
51  scoped_refptr<media::VideoFrame> last_frame_;
52  base::WeakPtrFactory<MockMediaStreamVideoSink> weak_factory_;
53};
54
55}  // namespace content
56
57#endif
58