OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/media/media_stream_video_capturer_source.h" | 5 #include "content/renderer/media/media_stream_video_capturer_source.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
(...skipping 29 matching lines...) Expand all Loading... |
40 MOCK_METHOD4(GetCurrentSupportedFormats, | 40 MOCK_METHOD4(GetCurrentSupportedFormats, |
41 void(int max_requested_width, | 41 void(int max_requested_width, |
42 int max_requested_height, | 42 int max_requested_height, |
43 double max_requested_frame_rate, | 43 double max_requested_frame_rate, |
44 const VideoCaptureDeviceFormatsCB& callback)); | 44 const VideoCaptureDeviceFormatsCB& callback)); |
45 MOCK_METHOD3(StartCapture, | 45 MOCK_METHOD3(StartCapture, |
46 void(const media::VideoCaptureParams& params, | 46 void(const media::VideoCaptureParams& params, |
47 const VideoCaptureDeliverFrameCB& new_frame_callback, | 47 const VideoCaptureDeliverFrameCB& new_frame_callback, |
48 const RunningCallback& running_callback)); | 48 const RunningCallback& running_callback)); |
49 MOCK_METHOD0(StopCapture, void()); | 49 MOCK_METHOD0(StopCapture, void()); |
| 50 MOCK_METHOD1(SetCapturingLinkSecured, void(bool is_secure)); |
50 | 51 |
51 void EnumerateDeviceFormats(const VideoCaptureDeviceFormatsCB& callback) { | 52 void EnumerateDeviceFormats(const VideoCaptureDeviceFormatsCB& callback) { |
52 media::VideoCaptureFormat kFormatSmall(gfx::Size(640, 480), 30.0, | 53 media::VideoCaptureFormat kFormatSmall(gfx::Size(640, 480), 30.0, |
53 media::PIXEL_FORMAT_I420); | 54 media::PIXEL_FORMAT_I420); |
54 media::VideoCaptureFormat kFormatLarge(gfx::Size(1920, 1080), 30.0, | 55 media::VideoCaptureFormat kFormatLarge(gfx::Size(1920, 1080), 30.0, |
55 media::PIXEL_FORMAT_I420); | 56 media::PIXEL_FORMAT_I420); |
56 media::VideoCaptureFormats formats; | 57 media::VideoCaptureFormats formats; |
57 formats.push_back(kFormatSmall); | 58 formats.push_back(kFormatSmall); |
58 formats.push_back(kFormatLarge); | 59 formats.push_back(kFormatLarge); |
59 callback.Run(formats); | 60 callback.Run(formats); |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 public: | 333 public: |
333 FakeMediaStreamVideoSink(base::TimeTicks* capture_time, | 334 FakeMediaStreamVideoSink(base::TimeTicks* capture_time, |
334 media::VideoFrameMetadata* metadata, | 335 media::VideoFrameMetadata* metadata, |
335 base::Closure got_frame_cb) | 336 base::Closure got_frame_cb) |
336 : capture_time_(capture_time), | 337 : capture_time_(capture_time), |
337 metadata_(metadata), | 338 metadata_(metadata), |
338 got_frame_cb_(got_frame_cb) {} | 339 got_frame_cb_(got_frame_cb) {} |
339 | 340 |
340 void ConnectToTrack(const blink::WebMediaStreamTrack& track) { | 341 void ConnectToTrack(const blink::WebMediaStreamTrack& track) { |
341 MediaStreamVideoSink::ConnectToTrack( | 342 MediaStreamVideoSink::ConnectToTrack( |
342 track, | 343 track, base::Bind(&FakeMediaStreamVideoSink::OnVideoFrame, |
343 base::Bind(&FakeMediaStreamVideoSink::OnVideoFrame, | 344 base::Unretained(this)), |
344 base::Unretained(this))); | 345 true); |
345 } | 346 } |
346 | 347 |
347 void DisconnectFromTrack() { | 348 void DisconnectFromTrack() { |
348 MediaStreamVideoSink::DisconnectFromTrack(); | 349 MediaStreamVideoSink::DisconnectFromTrack(); |
349 } | 350 } |
350 | 351 |
351 void OnVideoFrame(const scoped_refptr<media::VideoFrame>& frame, | 352 void OnVideoFrame(const scoped_refptr<media::VideoFrame>& frame, |
352 base::TimeTicks capture_time) { | 353 base::TimeTicks capture_time) { |
353 *capture_time_ = capture_time; | 354 *capture_time_ = capture_time; |
354 metadata_->Clear(); | 355 metadata_->Clear(); |
(...skipping 16 matching lines...) Expand all Loading... |
371 | 372 |
372 VideoCaptureDeliverFrameCB deliver_frame_cb; | 373 VideoCaptureDeliverFrameCB deliver_frame_cb; |
373 media::VideoCapturerSource::RunningCallback running_cb; | 374 media::VideoCapturerSource::RunningCallback running_cb; |
374 | 375 |
375 InSequence s; | 376 InSequence s; |
376 EXPECT_CALL(mock_delegate(), GetCurrentSupportedFormats(_, _, _, _)); | 377 EXPECT_CALL(mock_delegate(), GetCurrentSupportedFormats(_, _, _, _)); |
377 EXPECT_CALL(mock_delegate(), StartCapture(_, _, _)) | 378 EXPECT_CALL(mock_delegate(), StartCapture(_, _, _)) |
378 .WillOnce(testing::DoAll(testing::SaveArg<1>(&deliver_frame_cb), | 379 .WillOnce(testing::DoAll(testing::SaveArg<1>(&deliver_frame_cb), |
379 testing::SaveArg<2>(&running_cb))); | 380 testing::SaveArg<2>(&running_cb))); |
380 EXPECT_CALL(mock_delegate(), RequestRefreshFrame()); | 381 EXPECT_CALL(mock_delegate(), RequestRefreshFrame()); |
| 382 EXPECT_CALL(mock_delegate(), SetCapturingLinkSecured(_)) |
| 383 .Times(::testing::AtLeast(1)); |
381 EXPECT_CALL(mock_delegate(), StopCapture()); | 384 EXPECT_CALL(mock_delegate(), StopCapture()); |
382 blink::WebMediaStreamTrack track = StartSource(); | 385 blink::WebMediaStreamTrack track = StartSource(); |
383 running_cb.Run(true); | 386 running_cb.Run(true); |
384 | 387 |
385 base::RunLoop run_loop; | 388 base::RunLoop run_loop; |
386 base::TimeTicks reference_capture_time = | 389 base::TimeTicks reference_capture_time = |
387 base::TimeTicks::FromInternalValue(60013); | 390 base::TimeTicks::FromInternalValue(60013); |
388 base::TimeTicks capture_time; | 391 base::TimeTicks capture_time; |
389 media::VideoFrameMetadata metadata; | 392 media::VideoFrameMetadata metadata; |
390 FakeMediaStreamVideoSink fake_sink( | 393 FakeMediaStreamVideoSink fake_sink( |
391 &capture_time, &metadata, | 394 &capture_time, &metadata, |
392 media::BindToCurrentLoop(run_loop.QuitClosure())); | 395 media::BindToCurrentLoop(run_loop.QuitClosure())); |
393 fake_sink.ConnectToTrack(track); | 396 fake_sink.ConnectToTrack(track); |
394 const scoped_refptr<media::VideoFrame> frame = | 397 const scoped_refptr<media::VideoFrame> frame = |
395 media::VideoFrame::CreateBlackFrame(gfx::Size(2, 2)); | 398 media::VideoFrame::CreateBlackFrame(gfx::Size(2, 2)); |
396 frame->metadata()->SetDouble(media::VideoFrameMetadata::FRAME_RATE, 30.0); | 399 frame->metadata()->SetDouble(media::VideoFrameMetadata::FRAME_RATE, 30.0); |
397 child_process_->io_task_runner()->PostTask( | 400 child_process_->io_task_runner()->PostTask( |
398 FROM_HERE, base::Bind(deliver_frame_cb, frame, reference_capture_time)); | 401 FROM_HERE, base::Bind(deliver_frame_cb, frame, reference_capture_time)); |
399 run_loop.Run(); | 402 run_loop.Run(); |
400 fake_sink.DisconnectFromTrack(); | 403 fake_sink.DisconnectFromTrack(); |
401 EXPECT_EQ(reference_capture_time, capture_time); | 404 EXPECT_EQ(reference_capture_time, capture_time); |
402 double metadata_value; | 405 double metadata_value; |
403 EXPECT_TRUE(metadata.GetDouble(media::VideoFrameMetadata::FRAME_RATE, | 406 EXPECT_TRUE(metadata.GetDouble(media::VideoFrameMetadata::FRAME_RATE, |
404 &metadata_value)); | 407 &metadata_value)); |
405 EXPECT_EQ(30.0, metadata_value); | 408 EXPECT_EQ(30.0, metadata_value); |
406 } | 409 } |
407 | 410 |
408 } // namespace content | 411 } // namespace content |
OLD | NEW |