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

Unified Diff: chrome/browser/media/webrtc/media_capture_devices_dispatcher.cc

Issue 2746873004: Move ChromeOS login media access logic into a MediaAccessHandler (Closed)
Patch Set: Move ChromeOS login media access logic into a MediaAccessHandler Created 3 years, 8 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: chrome/browser/media/webrtc/media_capture_devices_dispatcher.cc
diff --git a/chrome/browser/media/webrtc/media_capture_devices_dispatcher.cc b/chrome/browser/media/webrtc/media_capture_devices_dispatcher.cc
index 2238ad1f894122b9915cfb407b0e36171da3035f..3a806228118eaaee4097c26087e296c09d94bc4a 100644
--- a/chrome/browser/media/webrtc/media_capture_devices_dispatcher.cc
+++ b/chrome/browser/media/webrtc/media_capture_devices_dispatcher.cc
@@ -37,6 +37,7 @@
#if defined(OS_CHROMEOS)
#include "ash/shell.h"
+#include "chrome/browser/media/chromeos_login_media_access_handler.h"
#include "chrome/browser/media/public_session_media_access_handler.h"
#include "chrome/browser/media/public_session_tab_capture_access_handler.h"
#endif // defined(OS_CHROMEOS)
@@ -69,6 +70,14 @@ const content::MediaStreamDevice* FindDeviceWithId(
return NULL;
}
+content::WebContents* WebContentsFromIds(int render_process_id,
+ int render_frame_id) {
+ content::WebContents* web_contents =
+ content::WebContents::FromRenderFrameHost(
+ content::RenderFrameHost::FromID(render_process_id, render_frame_id));
+ return web_contents;
+}
+
#if BUILDFLAG(ENABLE_EXTENSIONS)
inline CaptureAccessHandlerBase* ToCaptureAccessHandlerBase(
MediaAccessHandler* handler) {
@@ -88,6 +97,8 @@ MediaCaptureDevicesDispatcher::MediaCaptureDevicesDispatcher()
#if BUILDFLAG(ENABLE_EXTENSIONS)
#if defined(OS_CHROMEOS)
+ media_access_handlers_.push_back(
+ base::MakeUnique<ChromeOSLoginMediaAccessHandler>());
// Wrapper around ExtensionMediaAccessHandler used in Public Sessions.
media_access_handlers_.push_back(
base::MakeUnique<PublicSessionMediaAccessHandler>());
@@ -165,8 +176,10 @@ void MediaCaptureDevicesDispatcher::ProcessMediaAccessRequest(
DCHECK_CURRENTLY_ON(BrowserThread::UI);
for (const auto& handler : media_access_handlers_) {
- if (handler->SupportsStreamType(request.video_type, extension) ||
- handler->SupportsStreamType(request.audio_type, extension)) {
+ if (handler->SupportsStreamType(web_contents, request.video_type,
+ extension) ||
+ handler->SupportsStreamType(web_contents, request.audio_type,
+ extension)) {
handler->HandleRequest(web_contents, request, callback, extension);
return;
}
@@ -191,7 +204,7 @@ bool MediaCaptureDevicesDispatcher::CheckMediaAccessPermission(
const extensions::Extension* extension) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
for (const auto& handler : media_access_handlers_) {
- if (handler->SupportsStreamType(type, extension)) {
+ if (handler->SupportsStreamType(web_contents, type, extension)) {
return handler->CheckMediaAccessPermission(web_contents, security_origin,
type, extension);
}
@@ -361,8 +374,11 @@ void MediaCaptureDevicesDispatcher::UpdateMediaRequestStateOnUIThread(
const GURL& security_origin,
content::MediaStreamType stream_type,
content::MediaRequestState state) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
for (const auto& handler : media_access_handlers_) {
- if (handler->SupportsStreamType(stream_type, nullptr)) {
+ if (handler->SupportsStreamType(
+ WebContentsFromIds(render_process_id, render_frame_id), stream_type,
+ nullptr)) {
handler->UpdateMediaRequestState(render_process_id, render_frame_id,
page_request_id, stream_type, state);
break;
@@ -400,10 +416,12 @@ bool MediaCaptureDevicesDispatcher::IsInsecureCapturingInProgress(
DCHECK_CURRENTLY_ON(BrowserThread::UI);
#if BUILDFLAG(ENABLE_EXTENSIONS)
for (const auto& handler : media_access_handlers_) {
- if (handler->SupportsStreamType(content::MEDIA_DESKTOP_VIDEO_CAPTURE,
- nullptr) ||
- handler->SupportsStreamType(content::MEDIA_TAB_VIDEO_CAPTURE,
- nullptr)) {
+ if (handler->SupportsStreamType(
+ WebContentsFromIds(render_process_id, render_frame_id),
+ content::MEDIA_DESKTOP_VIDEO_CAPTURE, nullptr) ||
+ handler->SupportsStreamType(
+ WebContentsFromIds(render_process_id, render_frame_id),
+ content::MEDIA_TAB_VIDEO_CAPTURE, nullptr)) {
if (ToCaptureAccessHandlerBase(handler.get())
->IsInsecureCapturingInProgress(render_process_id,
render_frame_id))
@@ -455,7 +473,9 @@ void MediaCaptureDevicesDispatcher::UpdateCapturingLinkSecured(
#if BUILDFLAG(ENABLE_EXTENSIONS)
for (const auto& handler : media_access_handlers_) {
- if (handler->SupportsStreamType(stream_type, nullptr)) {
+ if (handler->SupportsStreamType(
+ WebContentsFromIds(render_process_id, render_frame_id), stream_type,
+ nullptr)) {
ToCaptureAccessHandlerBase(handler.get())
->UpdateCapturingLinkSecured(render_process_id, render_frame_id,
page_request_id, is_secure);
« no previous file with comments | « chrome/browser/media/webrtc/desktop_capture_access_handler.cc ('k') | chrome/browser/media/webrtc/media_permission.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698