Fix crash on app list start page contents not existing.
[chromium-blink-merge.git] / content / renderer / media / mock_media_stream_video_source.cc
blob19f7b6f74d1f815817e33c037fffe4fecc562082
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.
5 #include "content/renderer/media/mock_media_stream_video_source.h"
7 #include "base/bind.h"
8 #include "base/callback_helpers.h"
9 #include "base/location.h"
11 namespace content {
13 MockMediaStreamVideoSource::MockMediaStreamVideoSource(
14 bool manual_get_supported_formats)
15 : manual_get_supported_formats_(manual_get_supported_formats),
16 max_requested_height_(0),
17 max_requested_width_(0),
18 max_requested_frame_rate_(0.0),
19 attempted_to_start_(false) {
20 supported_formats_.push_back(
21 media::VideoCaptureFormat(
22 gfx::Size(MediaStreamVideoSource::kDefaultWidth,
23 MediaStreamVideoSource::kDefaultHeight),
24 MediaStreamVideoSource::kDefaultFrameRate,
25 media::PIXEL_FORMAT_I420));
28 MockMediaStreamVideoSource::~MockMediaStreamVideoSource() {}
30 void MockMediaStreamVideoSource::StartMockedSource() {
31 DCHECK(attempted_to_start_);
32 attempted_to_start_ = false;
33 OnStartDone(MEDIA_DEVICE_OK);
36 void MockMediaStreamVideoSource::FailToStartMockedSource() {
37 DCHECK(attempted_to_start_);
38 attempted_to_start_ = false;
39 OnStartDone(MEDIA_DEVICE_TRACK_START_FAILURE);
42 void MockMediaStreamVideoSource::CompleteGetSupportedFormats() {
43 DCHECK(!formats_callback_.is_null());
44 base::ResetAndReturn(&formats_callback_).Run(supported_formats_);
47 void MockMediaStreamVideoSource::GetCurrentSupportedFormats(
48 int max_requested_height,
49 int max_requested_width,
50 double max_requested_frame_rate,
51 const VideoCaptureDeviceFormatsCB& callback) {
52 DCHECK(formats_callback_.is_null());
53 max_requested_height_ = max_requested_height;
54 max_requested_width_ = max_requested_width;
55 max_requested_frame_rate_ = max_requested_frame_rate;
57 if (manual_get_supported_formats_) {
58 formats_callback_ = callback;
59 return;
61 callback.Run(supported_formats_);
64 void MockMediaStreamVideoSource::StartSourceImpl(
65 const media::VideoCaptureFormat& format,
66 const VideoCaptureDeliverFrameCB& frame_callback) {
67 DCHECK(frame_callback_.is_null());
68 format_ = format;
69 attempted_to_start_ = true;
70 frame_callback_ = frame_callback;
73 void MockMediaStreamVideoSource::StopSourceImpl() {
76 void MockMediaStreamVideoSource::DeliverVideoFrame(
77 const scoped_refptr<media::VideoFrame>& frame) {
78 DCHECK(!frame_callback_.is_null());
79 io_message_loop()->PostTask(
80 FROM_HERE,
81 base::Bind(&MockMediaStreamVideoSource::DeliverVideoFrameOnIO,
82 base::Unretained(this), frame, format_,
83 base::TimeTicks(), frame_callback_));
86 void MockMediaStreamVideoSource::DeliverVideoFrameOnIO(
87 const scoped_refptr<media::VideoFrame>& frame,
88 media::VideoCaptureFormat format,
89 const base::TimeTicks& estimated_capture_time,
90 const VideoCaptureDeliverFrameCB& frame_callback) {
91 frame_callback.Run(frame, format, estimated_capture_time);
94 } // namespace content