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

Unified Diff: extensions/shell/browser/media_capture_util.cc

Issue 562263002: Check media permissions through RenderFrameHostDelegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@render_frame_get_sources
Patch Set: Rebase Created 6 years, 3 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
« no previous file with comments | « extensions/shell/browser/media_capture_util.h ('k') | extensions/shell/browser/shell_app_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/shell/browser/media_capture_util.cc
diff --git a/extensions/shell/browser/media_capture_util.cc b/extensions/shell/browser/media_capture_util.cc
index 364e19df8a7c6ecc74dc971cfdb60fc61ceabe48..30e3fb63c78203e2c82269c19a0a1742e0a28564 100644
--- a/extensions/shell/browser/media_capture_util.cc
+++ b/extensions/shell/browser/media_capture_util.cc
@@ -42,14 +42,9 @@ void GrantMediaStreamRequest(content::WebContents* web_contents,
request.video_type == content::MEDIA_DEVICE_VIDEO_CAPTURE);
MediaStreamDevices devices;
- const PermissionsData* permissions_data = extension->permissions_data();
if (request.audio_type == content::MEDIA_DEVICE_AUDIO_CAPTURE) {
- // app_shell has no UI surface to show an error, and on an embedded device
- // it's better to crash than to have a feature not work.
- CHECK(permissions_data->HasAPIPermission(APIPermission::kAudioCapture))
- << "Audio capture request but no audioCapture permission in manifest.";
-
+ VerifyMediaAccessPermission(request.audio_type, extension);
const MediaStreamDevice* device = GetRequestedDeviceOrDefault(
MediaCaptureDevices::GetInstance()->GetAudioCaptureDevices(),
request.requested_audio_device_id);
@@ -58,10 +53,7 @@ void GrantMediaStreamRequest(content::WebContents* web_contents,
}
if (request.video_type == content::MEDIA_DEVICE_VIDEO_CAPTURE) {
- // See APIPermission::kAudioCapture check above.
- CHECK(permissions_data->HasAPIPermission(APIPermission::kVideoCapture))
- << "Video capture request but no videoCapture permission in manifest.";
-
+ VerifyMediaAccessPermission(request.video_type, extension);
const MediaStreamDevice* device = GetRequestedDeviceOrDefault(
MediaCaptureDevices::GetInstance()->GetVideoCaptureDevices(),
request.requested_video_device_id);
@@ -77,5 +69,20 @@ void GrantMediaStreamRequest(content::WebContents* web_contents,
ui.Pass());
}
+void VerifyMediaAccessPermission(content::MediaStreamType type,
+ const Extension* extension) {
+ const PermissionsData* permissions_data = extension->permissions_data();
+ if (type == content::MEDIA_DEVICE_AUDIO_CAPTURE) {
+ // app_shell has no UI surface to show an error, and on an embedded device
+ // it's better to crash than to have a feature not work.
+ CHECK(permissions_data->HasAPIPermission(APIPermission::kAudioCapture))
+ << "Audio capture request but no audioCapture permission in manifest.";
+ } else {
+ DCHECK(type == content::MEDIA_DEVICE_VIDEO_CAPTURE);
+ CHECK(permissions_data->HasAPIPermission(APIPermission::kVideoCapture))
+ << "Video capture request but no videoCapture permission in manifest.";
+ }
+}
+
} // namespace media_capture_util
} // namespace extensions
« no previous file with comments | « extensions/shell/browser/media_capture_util.h ('k') | extensions/shell/browser/shell_app_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698