Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/media/media_stream_devices_controller.h" | 5 #include "chrome/browser/media/media_stream_devices_controller.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chrome/browser/content_settings/content_settings_provider.h" | 10 #include "chrome/browser/content_settings/content_settings_provider.h" |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 181 // Get the default devices for the request. | 181 // Get the default devices for the request. |
| 182 content::MediaStreamDevices devices; | 182 content::MediaStreamDevices devices; |
| 183 bool audio_allowed = IsDeviceAudioCaptureRequestedAndAllowed(); | 183 bool audio_allowed = IsDeviceAudioCaptureRequestedAndAllowed(); |
| 184 bool video_allowed = IsDeviceVideoCaptureRequestedAndAllowed(); | 184 bool video_allowed = IsDeviceVideoCaptureRequestedAndAllowed(); |
| 185 if (audio_allowed || video_allowed) { | 185 if (audio_allowed || video_allowed) { |
| 186 switch (request_.request_type) { | 186 switch (request_.request_type) { |
| 187 case content::MEDIA_OPEN_DEVICE: { | 187 case content::MEDIA_OPEN_DEVICE: { |
| 188 const content::MediaStreamDevice* device = NULL; | 188 const content::MediaStreamDevice* device = NULL; |
| 189 // For open device request pick the desired device or fall back to the | 189 // For open device request pick the desired device or fall back to the |
| 190 // first available of the given type. | 190 // first available of the given type. |
| 191 if (request_.audio_type == content::MEDIA_DEVICE_AUDIO_CAPTURE) { | 191 if (audio_allowed && |
| 192 request_.audio_type == content::MEDIA_DEVICE_AUDIO_CAPTURE) { | |
| 192 device = MediaCaptureDevicesDispatcher::GetInstance()-> | 193 device = MediaCaptureDevicesDispatcher::GetInstance()-> |
| 193 GetRequestedAudioDevice(request_.requested_audio_device_id); | 194 GetRequestedAudioDevice(request_.requested_audio_device_id); |
| 194 // TODO(wjia): Confirm this is the intended behavior. | 195 // TODO(wjia): Confirm this is the intended behavior. |
| 195 if (!device) { | 196 if (!device) { |
| 196 device = MediaCaptureDevicesDispatcher::GetInstance()-> | 197 device = MediaCaptureDevicesDispatcher::GetInstance()-> |
| 197 GetFirstAvailableAudioDevice(); | 198 GetFirstAvailableAudioDevice(); |
| 198 } | 199 } |
| 199 } else if (request_.video_type == content::MEDIA_DEVICE_VIDEO_CAPTURE) { | 200 } else if (video_allowed && |
| 201 request_.video_type == content::MEDIA_DEVICE_VIDEO_CAPTURE) { | |
| 200 // Pepper API opens only one device at a time. | 202 // Pepper API opens only one device at a time. |
| 201 device = MediaCaptureDevicesDispatcher::GetInstance()-> | 203 device = MediaCaptureDevicesDispatcher::GetInstance()-> |
| 202 GetRequestedVideoDevice(request_.requested_video_device_id); | 204 GetRequestedVideoDevice(request_.requested_video_device_id); |
| 203 // TODO(wjia): Confirm this is the intended behavior. | 205 // TODO(wjia): Confirm this is the intended behavior. |
| 204 if (!device) { | 206 if (!device) { |
| 205 device = MediaCaptureDevicesDispatcher::GetInstance()-> | 207 device = MediaCaptureDevicesDispatcher::GetInstance()-> |
| 206 GetFirstAvailableVideoDevice(); | 208 GetFirstAvailableVideoDevice(); |
| 207 } | 209 } |
| 208 } | 210 } |
| 209 if (device) | 211 if (device) |
| 210 devices.push_back(*device); | 212 devices.push_back(*device); |
| 211 break; | 213 break; |
| 212 } case content::MEDIA_GENERATE_STREAM: { | 214 } case content::MEDIA_GENERATE_STREAM: { |
|
wjia(left Chromium)
2013/08/28 16:57:35
nit: drop the case to a new line. Somehow, this sl
Henrik Grunell
2013/08/29 08:19:51
Done. Also added {} to the other case blocks to be
| |
| 213 bool needs_audio_device = audio_allowed; | 215 bool needs_audio_device = audio_allowed; |
| 214 bool needs_video_device = video_allowed; | 216 bool needs_video_device = video_allowed; |
|
wjia(left Chromium)
2013/08/28 16:57:35
Should these be the following?
needs_*_device =
Henrik Grunell
2013/08/29 08:19:51
For request_.request_type == content::MEDIA_GENERA
| |
| 215 | 217 |
| 216 // Get the exact audio or video device if an id is specified. | 218 // Get the exact audio or video device if an id is specified. |
| 217 if (!request_.requested_audio_device_id.empty()) { | 219 if (needs_audio_device && !request_.requested_audio_device_id.empty()) { |
| 218 const content::MediaStreamDevice* audio_device = | 220 const content::MediaStreamDevice* audio_device = |
| 219 MediaCaptureDevicesDispatcher::GetInstance()-> | 221 MediaCaptureDevicesDispatcher::GetInstance()-> |
| 220 GetRequestedAudioDevice(request_.requested_audio_device_id); | 222 GetRequestedAudioDevice(request_.requested_audio_device_id); |
| 221 if (audio_device) { | 223 if (audio_device) { |
| 222 devices.push_back(*audio_device); | 224 devices.push_back(*audio_device); |
| 223 needs_audio_device = false; | 225 needs_audio_device = false; |
| 224 } | 226 } |
| 225 } | 227 } |
| 226 if (!request_.requested_video_device_id.empty()) { | 228 if (needs_video_device && !request_.requested_video_device_id.empty()) { |
| 227 const content::MediaStreamDevice* video_device = | 229 const content::MediaStreamDevice* video_device = |
|
tommi (sloooow) - chröme
2013/08/28 16:13:47
Wouldn't it make more sense to check the allowed b
Henrik Grunell
2013/08/29 08:19:51
Agree. Then I also renamed the needs_* bools to ge
| |
| 228 MediaCaptureDevicesDispatcher::GetInstance()-> | 230 MediaCaptureDevicesDispatcher::GetInstance()-> |
| 229 GetRequestedVideoDevice(request_.requested_video_device_id); | 231 GetRequestedVideoDevice(request_.requested_video_device_id); |
| 230 if (video_device) { | 232 if (video_device) { |
| 231 devices.push_back(*video_device); | 233 devices.push_back(*video_device); |
| 232 needs_video_device = false; | 234 needs_video_device = false; |
| 233 } | 235 } |
| 234 } | 236 } |
| 235 | 237 |
| 236 // If either or both audio and video devices were requested but not | 238 // If either or both audio and video devices were requested but not |
| 237 // specified by id, get the default devices. | 239 // specified by id, get the default devices. |
| 238 if (needs_audio_device || needs_video_device) { | 240 if (needs_audio_device || needs_video_device) { |
| 239 MediaCaptureDevicesDispatcher::GetInstance()-> | 241 MediaCaptureDevicesDispatcher::GetInstance()-> |
| 240 GetDefaultDevicesForProfile(profile_, | 242 GetDefaultDevicesForProfile(profile_, |
| 241 needs_audio_device, | 243 needs_audio_device, |
| 242 needs_video_device, | 244 needs_video_device, |
| 243 &devices); | 245 &devices); |
| 244 } | 246 } |
| 245 break; | 247 break; |
| 246 } case content::MEDIA_DEVICE_ACCESS: | 248 } case content::MEDIA_DEVICE_ACCESS: |
|
wjia(left Chromium)
2013/08/28 16:57:35
ditto.
Henrik Grunell
2013/08/29 08:19:51
Done.
| |
| 247 // Get the default devices for the request. | 249 // Get the default devices for the request. |
| 248 MediaCaptureDevicesDispatcher::GetInstance()-> | 250 MediaCaptureDevicesDispatcher::GetInstance()-> |
| 249 GetDefaultDevicesForProfile(profile_, | 251 GetDefaultDevicesForProfile(profile_, |
| 250 audio_allowed, | 252 audio_allowed, |
| 251 video_allowed, | 253 video_allowed, |
| 252 &devices); | 254 &devices); |
| 253 break; | 255 break; |
| 254 case content::MEDIA_ENUMERATE_DEVICES: | 256 case content::MEDIA_ENUMERATE_DEVICES: |
| 255 // Do nothing. | 257 // Do nothing. |
| 256 NOTREACHED(); | 258 NOTREACHED(); |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 504 request_permissions_.find(content::MEDIA_DEVICE_AUDIO_CAPTURE); | 506 request_permissions_.find(content::MEDIA_DEVICE_AUDIO_CAPTURE); |
| 505 return it != request_permissions_.end() && it->second == MEDIA_ALLOWED; | 507 return it != request_permissions_.end() && it->second == MEDIA_ALLOWED; |
| 506 } | 508 } |
| 507 | 509 |
| 508 bool MediaStreamDevicesController::IsDeviceVideoCaptureRequestedAndAllowed() | 510 bool MediaStreamDevicesController::IsDeviceVideoCaptureRequestedAndAllowed() |
| 509 const { | 511 const { |
| 510 MediaStreamTypePermissionMap::const_iterator it = | 512 MediaStreamTypePermissionMap::const_iterator it = |
| 511 request_permissions_.find(content::MEDIA_DEVICE_VIDEO_CAPTURE); | 513 request_permissions_.find(content::MEDIA_DEVICE_VIDEO_CAPTURE); |
| 512 return it != request_permissions_.end() && it->second == MEDIA_ALLOWED; | 514 return it != request_permissions_.end() && it->second == MEDIA_ALLOWED; |
| 513 } | 515 } |
| OLD | NEW |