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..32ad700b4ecfa7dcf184849ccf33b1b25c7e1aa8 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 TabCaptureAccessHandler* ToTabCaptureAccessHandler( |
+ MediaAccessHandler* handler) { |
+ return static_cast<TabCaptureAccessHandler*>(handler); |
+} |
#endif |
} // namespace |
@@ -386,6 +391,28 @@ bool MediaCaptureDevicesDispatcher::IsDesktopCaptureInProgress() { |
return false; |
} |
+bool MediaCaptureDevicesDispatcher::IsCaptureInProgress(int render_process_id, |
+ int render_frame_id, |
+ bool* is_link_secure) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::UI); |
+#if defined(ENABLE_EXTENSIONS) |
+ for (MediaAccessHandler* handler : media_access_handlers_) { |
+ if (handler->SupportsStreamType(content::MEDIA_DESKTOP_VIDEO_CAPTURE, |
+ nullptr)) { |
+ return ToDesktopCaptureAccessHandler(handler)->IsCaptureInProgress( |
+ render_process_id, render_frame_id, is_link_secure); |
+ } |
+ if (handler->SupportsStreamType(content::MEDIA_TAB_VIDEO_CAPTURE, |
+ nullptr)) { |
+ return ToTabCaptureAccessHandler(handler)->IsCaptureInProgress( |
+ render_process_id, render_frame_id, is_link_secure); |
+ } |
+ } |
+#endif |
+ *is_link_secure = false; |
+ return false; |
+} |
+ |
void MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices( |
const MediaStreamDevices& devices) { |
test_audio_devices_ = devices; |
@@ -395,3 +422,52 @@ 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) { |
+ 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 (stream_type == content::MEDIA_DESKTOP_VIDEO_CAPTURE && |
+ handler->SupportsStreamType(stream_type, nullptr)) { |
+ ToDesktopCaptureAccessHandler(handler)->UpdateCapturingLinkSecured( |
+ render_process_id, render_frame_id, page_request_id, stream_type, |
+ is_secure); |
+ break; |
+ } |
+ |
+ if (stream_type == content::MEDIA_TAB_VIDEO_CAPTURE && |
+ handler->SupportsStreamType(stream_type, nullptr)) { |
+ ToTabCaptureAccessHandler(handler)->UpdateCapturingLinkSecured( |
+ render_process_id, render_frame_id, page_request_id, stream_type, |
+ is_secure); |
+ break; |
+ } |
+ } |
+#endif |
+} |