Index: chrome/browser/media/media_capture_devices_dispatcher.cc |
diff --git a/chrome/browser/media/media_capture_devices_dispatcher.cc b/chrome/browser/media/media_capture_devices_dispatcher.cc |
index 98d6704583cd3856b282dbbcd5f70ae4aa0b177c..2b2772e237339dd8593f7c39a1164ce411463058 100644 |
--- a/chrome/browser/media/media_capture_devices_dispatcher.cc |
+++ b/chrome/browser/media/media_capture_devices_dispatcher.cc |
@@ -70,6 +70,11 @@ inline DesktopCaptureAccessHandler* ToDesktopCaptureAccessHandler( |
MediaAccessHandler* handler) { |
return static_cast<DesktopCaptureAccessHandler*>(handler); |
} |
+ |
+inline CaptureAccessHandlerBase* ToCaptureAccessHandlerBase( |
+ MediaAccessHandler* handler) { |
+ return static_cast<CaptureAccessHandlerBase*>(handler); |
+} |
#endif |
} // namespace |
@@ -386,6 +391,25 @@ bool MediaCaptureDevicesDispatcher::IsDesktopCaptureInProgress() { |
return false; |
} |
+bool MediaCaptureDevicesDispatcher::IsInsecureCapturingInProgress( |
+ int render_process_id, |
+ int render_frame_id) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::UI); |
+#if defined(ENABLE_EXTENSIONS) |
+ for (MediaAccessHandler* handler : media_access_handlers_) { |
+ if (handler->SupportsStreamType(content::MEDIA_DESKTOP_VIDEO_CAPTURE, |
+ nullptr) || |
+ handler->SupportsStreamType(content::MEDIA_TAB_VIDEO_CAPTURE, |
+ nullptr)) { |
+ if (ToCaptureAccessHandlerBase(handler)->IsInsecureCapturingInProgress( |
+ render_process_id, render_frame_id)) |
+ return true; |
+ } |
+ } |
+#endif |
+ return false; |
+} |
+ |
void MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices( |
const MediaStreamDevices& devices) { |
test_audio_devices_ = devices; |
@@ -395,3 +419,43 @@ void MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices( |
const MediaStreamDevices& devices) { |
test_video_devices_ = devices; |
} |
+ |
+void MediaCaptureDevicesDispatcher::OnSetCapturingLinkSecured( |
+ int render_process_id, |
+ int render_frame_id, |
+ int page_request_id, |
+ content::MediaStreamType stream_type, |
+ bool is_secure) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::IO); |
+ if (stream_type != content::MEDIA_TAB_VIDEO_CAPTURE && |
+ stream_type != content::MEDIA_DESKTOP_VIDEO_CAPTURE) |
+ return; |
+ |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, FROM_HERE, |
+ base::Bind(&MediaCaptureDevicesDispatcher::UpdateCapturingLinkSecured, |
+ base::Unretained(this), render_process_id, render_frame_id, |
+ page_request_id, stream_type, is_secure)); |
+} |
+ |
+void MediaCaptureDevicesDispatcher::UpdateCapturingLinkSecured( |
+ int render_process_id, |
+ int render_frame_id, |
+ int page_request_id, |
+ content::MediaStreamType stream_type, |
+ bool is_secure) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::UI); |
+ if (stream_type != content::MEDIA_TAB_VIDEO_CAPTURE && |
+ stream_type != content::MEDIA_DESKTOP_VIDEO_CAPTURE) |
+ return; |
+ |
+#if defined(ENABLE_EXTENSIONS) |
+ for (MediaAccessHandler* handler : media_access_handlers_) { |
+ if (handler->SupportsStreamType(stream_type, nullptr)) { |
+ ToCaptureAccessHandlerBase(handler)->UpdateCapturingLinkSecured( |
+ render_process_id, render_frame_id, page_request_id, is_secure); |
+ break; |
+ } |
+ } |
+#endif |
+} |