| 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..fae8f7e06219c906ffe8bb36f68459da8c18cd08 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,50 @@ 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;
|
| +
|
| + 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;
|
| + }
|
| + }
|
| +}
|
|
|