Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(136)

Unified Diff: content/browser/media/capture/web_contents_video_capture_device.cc

Issue 2652343003: Replace source pointer in cc::CopyOutputRequest with a base::UnguessableToken (Closed)
Patch Set: c Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..336ec0ee10e81821ee86dcedba39d6ba8ea5214c 100644
--- a/content/browser/media/capture/web_contents_video_capture_device.cc
+++ b/content/browser/media/capture/web_contents_video_capture_device.cc
@@ -23,10 +23,10 @@
#include "content/browser/media/capture/window_activity_tracker.h"
#include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
+#include "content/browser/renderer_host/render_widget_host_view_frame_subscriber.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_widget_host_view.h"
-#include "content/public/browser/render_widget_host_view_frame_subscriber.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_media_capture_id.h"
#include "media/base/video_frame_metadata.h"
@@ -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;
+ const base::UnguessableToken& GetSourceIdForCopyRequest() override;
+
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;
+}
+
+const base::UnguessableToken& FrameSubscriber::GetSourceIdForCopyRequest() {
+ return source_id_for_copy_request_;
+}
+
ContentCaptureSubscription::ContentCaptureSubscription(
base::WeakPtr<RenderWidgetHostViewBase> source_view,
scoped_refptr<media::ThreadSafeCaptureOracle> oracle_proxy,
« no previous file with comments | « content/browser/gpu/gpu_process_host.cc ('k') | content/browser/media/capture/web_contents_video_capture_device_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698