Index: chrome/browser/media/desktop_capture_access_handler.cc |
diff --git a/chrome/browser/media/desktop_capture_access_handler.cc b/chrome/browser/media/desktop_capture_access_handler.cc |
index ff396ebabc724c6ddf1b1bcb2487d11b971737b2..7a2482b1000c05cb7989968d61484f20cb0979e7 100644 |
--- a/chrome/browser/media/desktop_capture_access_handler.cc |
+++ b/chrome/browser/media/desktop_capture_access_handler.cc |
@@ -445,6 +445,11 @@ void DesktopCaptureAccessHandler::HandleRequest( |
GetApplicationTitle(web_contents, extension), |
base::UTF8ToUTF16(original_extension_name)); |
+ extension_whitelisted_ = MediaCaptureDevicesDispatcher::IsOriginForCasting( |
+ request.security_origin) || |
+ IsExtensionWhitelistedForScreenCapture(extension) || |
+ IsBuiltInExtension(request.security_origin); |
+ |
callback.Run(devices, content::MEDIA_DEVICE_OK, std::move(ui)); |
} |
@@ -462,8 +467,8 @@ void DesktopCaptureAccessHandler::UpdateMediaRequestState( |
return; |
if (state == content::MEDIA_REQUEST_STATE_DONE) { |
- DesktopCaptureSession session = { |
- render_process_id, render_frame_id, page_request_id}; |
+ DesktopCaptureSession session = {render_process_id, render_frame_id, |
+ page_request_id, false}; |
desktop_capture_sessions_.push_back(session); |
} else if (state == content::MEDIA_REQUEST_STATE_CLOSING) { |
for (DesktopCaptureSessions::iterator it = |
@@ -482,3 +487,42 @@ void DesktopCaptureAccessHandler::UpdateMediaRequestState( |
bool DesktopCaptureAccessHandler::IsCaptureInProgress() { |
return desktop_capture_sessions_.size() > 0; |
} |
+ |
+bool DesktopCaptureAccessHandler::IsCaptureInProgress(int render_process_id, |
+ int render_frame_id, |
+ bool* is_link_secure) { |
+ *is_link_secure = false; |
+ if (desktop_capture_sessions_.size() <= 0) |
+ return false; |
+ for (DesktopCaptureSessions::iterator it = desktop_capture_sessions_.begin(); |
+ it != desktop_capture_sessions_.end(); ++it) { |
+ if (it->render_process_id == render_process_id && |
+ it->render_frame_id == render_frame_id) { |
+ *is_link_secure = it->is_capturing_link_secure && extension_whitelisted_; |
+ return true; |
+ } |
+ } |
+ return false; |
+} |
+ |
+void DesktopCaptureAccessHandler::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_DESKTOP_VIDEO_CAPTURE) |
+ return; |
+ for (DesktopCaptureSessions::iterator it = desktop_capture_sessions_.begin(); |
+ it != desktop_capture_sessions_.end(); ++it) { |
+ if (it->render_process_id == render_process_id && |
+ it->render_frame_id == render_frame_id && |
+ it->page_request_id == page_request_id) { |
+ it->is_capturing_link_secure = is_secure; |
+ VLOG(1) << "DesktopCaptureAccessHandler:" |
+ << " render_process_id: " << render_process_id |
+ << " render_frame_id: " << render_frame_id |
+ << " is_capturing_link_secure: " << is_secure; |
+ } |
+ } |
+} |