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

Unified Diff: chrome/browser/media/media_stream_devices_controller.cc

Issue 23453012: Make sure we don't open audio or video device if blocked by policy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 4 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/media/media_stream_devices_controller.cc
diff --git a/chrome/browser/media/media_stream_devices_controller.cc b/chrome/browser/media/media_stream_devices_controller.cc
index 9f2b85753e3ce54137557331b0fe00a27e84b74d..20c723eaefb2c9571d0b8eebfda1061506faf854 100644
--- a/chrome/browser/media/media_stream_devices_controller.cc
+++ b/chrome/browser/media/media_stream_devices_controller.cc
@@ -188,7 +188,8 @@ void MediaStreamDevicesController::Accept(bool update_content_setting) {
const content::MediaStreamDevice* device = NULL;
// For open device request pick the desired device or fall back to the
// first available of the given type.
- if (request_.audio_type == content::MEDIA_DEVICE_AUDIO_CAPTURE) {
+ if (audio_allowed &&
+ request_.audio_type == content::MEDIA_DEVICE_AUDIO_CAPTURE) {
device = MediaCaptureDevicesDispatcher::GetInstance()->
GetRequestedAudioDevice(request_.requested_audio_device_id);
// TODO(wjia): Confirm this is the intended behavior.
@@ -196,7 +197,8 @@ void MediaStreamDevicesController::Accept(bool update_content_setting) {
device = MediaCaptureDevicesDispatcher::GetInstance()->
GetFirstAvailableAudioDevice();
}
- } else if (request_.video_type == content::MEDIA_DEVICE_VIDEO_CAPTURE) {
+ } else if (video_allowed &&
+ request_.video_type == content::MEDIA_DEVICE_VIDEO_CAPTURE) {
// Pepper API opens only one device at a time.
device = MediaCaptureDevicesDispatcher::GetInstance()->
GetRequestedVideoDevice(request_.requested_video_device_id);
@@ -209,41 +211,43 @@ void MediaStreamDevicesController::Accept(bool update_content_setting) {
if (device)
devices.push_back(*device);
break;
- } case content::MEDIA_GENERATE_STREAM: {
- bool needs_audio_device = audio_allowed;
- bool needs_video_device = video_allowed;
+ }
+ case content::MEDIA_GENERATE_STREAM: {
+ bool get_default_audio_device = audio_allowed;
+ bool get_default_video_device = video_allowed;
// Get the exact audio or video device if an id is specified.
- if (!request_.requested_audio_device_id.empty()) {
+ if (audio_allowed && !request_.requested_audio_device_id.empty()) {
const content::MediaStreamDevice* audio_device =
MediaCaptureDevicesDispatcher::GetInstance()->
GetRequestedAudioDevice(request_.requested_audio_device_id);
if (audio_device) {
devices.push_back(*audio_device);
- needs_audio_device = false;
+ get_default_audio_device = false;
}
}
- if (!request_.requested_video_device_id.empty()) {
+ if (video_allowed && !request_.requested_video_device_id.empty()) {
const content::MediaStreamDevice* video_device =
MediaCaptureDevicesDispatcher::GetInstance()->
GetRequestedVideoDevice(request_.requested_video_device_id);
if (video_device) {
devices.push_back(*video_device);
- needs_video_device = false;
+ get_default_video_device = false;
}
}
// If either or both audio and video devices were requested but not
// specified by id, get the default devices.
- if (needs_audio_device || needs_video_device) {
+ if (get_default_audio_device || get_default_video_device) {
MediaCaptureDevicesDispatcher::GetInstance()->
GetDefaultDevicesForProfile(profile_,
- needs_audio_device,
- needs_video_device,
+ get_default_audio_device,
+ get_default_video_device,
&devices);
}
break;
- } case content::MEDIA_DEVICE_ACCESS:
+ }
+ case content::MEDIA_DEVICE_ACCESS: {
// Get the default devices for the request.
MediaCaptureDevicesDispatcher::GetInstance()->
GetDefaultDevicesForProfile(profile_,
@@ -251,11 +255,13 @@ void MediaStreamDevicesController::Accept(bool update_content_setting) {
video_allowed,
&devices);
break;
- case content::MEDIA_ENUMERATE_DEVICES:
+ }
+ case content::MEDIA_ENUMERATE_DEVICES: {
// Do nothing.
NOTREACHED();
break;
- }
+ }
+ } // switch
// TODO(raymes): We currently set the content permission for non-https
// websites for Pepper requests as well. This is temporary and should be
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698