Chromium Code Reviews| Index: content/browser/media/capture/web_contents_video_capture_device.cc |
| diff --git a/content/browser/media/capture/web_contents_video_capture_device.cc b/content/browser/media/capture/web_contents_video_capture_device.cc |
| index 5be935ef1619d9c116a94ba4ead2e26e53c28e31..9b44e7f44efc453735434b05e9336d90cc25af1c 100644 |
| --- a/content/browser/media/capture/web_contents_video_capture_device.cc |
| +++ b/content/browser/media/capture/web_contents_video_capture_device.cc |
| @@ -60,15 +60,9 @@ class FrameSubscriber : public RenderWidgetHostViewFrameSubscriber { |
| oracle_proxy_(std::move(oracle)), |
| cursor_renderer_(cursor_renderer), |
| window_activity_tracker_(tracker), |
| + source_id_for_copy_request_(base::UnguessableToken::Create()), |
| weak_ptr_factory_(this) {} |
| - bool ShouldCaptureFrame( |
| - const gfx::Rect& damage_rect, |
| - base::TimeTicks present_time, |
| - scoped_refptr<media::VideoFrame>* storage, |
| - RenderWidgetHostViewFrameSubscriber::DeliverFrameCallback* |
| - deliver_frame_cb) override; |
| - |
| static void DidCaptureFrame( |
| base::WeakPtr<FrameSubscriber> frame_subscriber_, |
| const media::ThreadSafeCaptureOracle::CaptureFrameCallback& |
| @@ -80,6 +74,15 @@ class FrameSubscriber : public RenderWidgetHostViewFrameSubscriber { |
| bool IsUserInteractingWithContent(); |
| + // RenderWidgetHostViewFrameSubscriber implementation: |
| + bool ShouldCaptureFrame( |
| + const gfx::Rect& damage_rect, |
| + base::TimeTicks present_time, |
| + scoped_refptr<media::VideoFrame>* storage, |
| + RenderWidgetHostViewFrameSubscriber::DeliverFrameCallback* |
| + deliver_frame_cb) override; |
| + base::UnguessableToken GetSourceIdForCopyRequest() override; |
|
Fady Samuel
2017/01/26 21:22:42
const base::UnguessableToken&?
Saman Sami
2017/01/26 21:47:27
Done.
|
| + |
| private: |
| const media::VideoCaptureOracle::Event event_type_; |
| const scoped_refptr<media::ThreadSafeCaptureOracle> oracle_proxy_; |
| @@ -89,6 +92,7 @@ class FrameSubscriber : public RenderWidgetHostViewFrameSubscriber { |
| // We need a weak pointer since FrameSubscriber is owned externally and |
| // may outlive the ui activity tracker. |
| const base::WeakPtr<WindowActivityTracker> window_activity_tracker_; |
| + base::UnguessableToken source_id_for_copy_request_; |
| base::WeakPtrFactory<FrameSubscriber> weak_ptr_factory_; |
| }; |
| @@ -243,28 +247,6 @@ class WebContentsCaptureMachine : public media::VideoCaptureMachine { |
| DISALLOW_COPY_AND_ASSIGN(WebContentsCaptureMachine); |
| }; |
| -bool FrameSubscriber::ShouldCaptureFrame( |
| - const gfx::Rect& damage_rect, |
| - base::TimeTicks present_time, |
| - scoped_refptr<media::VideoFrame>* storage, |
| - DeliverFrameCallback* deliver_frame_cb) { |
| - TRACE_EVENT1("gpu.capture", "FrameSubscriber::ShouldCaptureFrame", "instance", |
| - this); |
| - |
| - media::ThreadSafeCaptureOracle::CaptureFrameCallback capture_frame_cb; |
| - if (!oracle_proxy_->ObserveEventAndDecideCapture( |
| - event_type_, damage_rect, present_time, storage, &capture_frame_cb)) { |
| - return false; |
| - } |
| - |
| - DCHECK(*storage); |
| - DCHECK(!capture_frame_cb.is_null()); |
| - *deliver_frame_cb = |
| - base::Bind(&FrameSubscriber::DidCaptureFrame, |
| - weak_ptr_factory_.GetWeakPtr(), capture_frame_cb, *storage); |
| - return true; |
| -} |
| - |
| void FrameSubscriber::DidCaptureFrame( |
| base::WeakPtr<FrameSubscriber> frame_subscriber_, |
| const media::ThreadSafeCaptureOracle::CaptureFrameCallback& |
| @@ -310,6 +292,32 @@ bool FrameSubscriber::IsUserInteractingWithContent() { |
| return interactive_mode; |
| } |
| +bool FrameSubscriber::ShouldCaptureFrame( |
| + const gfx::Rect& damage_rect, |
| + base::TimeTicks present_time, |
| + scoped_refptr<media::VideoFrame>* storage, |
| + DeliverFrameCallback* deliver_frame_cb) { |
| + TRACE_EVENT1("gpu.capture", "FrameSubscriber::ShouldCaptureFrame", "instance", |
| + this); |
| + |
| + media::ThreadSafeCaptureOracle::CaptureFrameCallback capture_frame_cb; |
| + if (!oracle_proxy_->ObserveEventAndDecideCapture( |
| + event_type_, damage_rect, present_time, storage, &capture_frame_cb)) { |
| + return false; |
| + } |
| + |
| + DCHECK(*storage); |
| + DCHECK(!capture_frame_cb.is_null()); |
| + *deliver_frame_cb = |
| + base::Bind(&FrameSubscriber::DidCaptureFrame, |
| + weak_ptr_factory_.GetWeakPtr(), capture_frame_cb, *storage); |
| + return true; |
| +} |
| + |
| +base::UnguessableToken FrameSubscriber::GetSourceIdForCopyRequest() { |
|
Fady Samuel
2017/01/26 21:22:42
const base::UnguessableToken&
Saman Sami
2017/01/26 21:47:27
Done.
|
| + return source_id_for_copy_request_; |
| +} |
| + |
| ContentCaptureSubscription::ContentCaptureSubscription( |
| base::WeakPtr<RenderWidgetHostViewBase> source_view, |
| scoped_refptr<media::ThreadSafeCaptureOracle> oracle_proxy, |