Chromium Code Reviews| Index: content/browser/renderer_host/media/media_stream_manager.cc |
| diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc |
| index fe537d9751a7e439b15497e1b913c7449a45a907..cc00009ce409b70239af0ee9c52d2966ee68c952 100644 |
| --- a/content/browser/renderer_host/media/media_stream_manager.cc |
| +++ b/content/browser/renderer_host/media/media_stream_manager.cc |
| @@ -161,6 +161,15 @@ std::string ReturnEmptySalt() { |
| return std::string(); |
| } |
| +// Clears the MediaStreamDevice.name from all devices in |device_list|. |
|
mcasas
2014/05/27 12:08:23
s/|device_list|/|devices|/
Henrik Grunell
2014/05/27 15:33:54
Done.
|
| +static void ClearDeviceLabels(content::StreamDeviceInfoArray* devices) { |
| + for (content::StreamDeviceInfoArray::iterator device_itr = devices->begin(); |
| + device_itr != devices->end(); |
| + ++device_itr) { |
| + device_itr->device.name.clear(); |
| + } |
| +} |
| + |
| } // namespace |
| @@ -177,6 +186,7 @@ class MediaStreamManager::DeviceRequest { |
| int requesting_view_id, |
| int page_request_id, |
| const GURL& security_origin, |
| + ResourceContext* resource_context, |
| bool user_gesture, |
| MediaStreamRequestType request_type, |
| const StreamOptions& options, |
| @@ -186,6 +196,7 @@ class MediaStreamManager::DeviceRequest { |
| requesting_view_id(requesting_view_id), |
| page_request_id(page_request_id), |
| security_origin(security_origin), |
| + resource_context(resource_context), |
| user_gesture(user_gesture), |
| request_type(request_type), |
| options(options), |
| @@ -307,6 +318,10 @@ class MediaStreamManager::DeviceRequest { |
| const GURL security_origin; |
| + // This is used when enumerating devices for checking if we have device |
| + // permission, and if not remove the device label. |
| + ResourceContext* resource_context; |
| + |
| const bool user_gesture; |
| const MediaStreamRequestType request_type; |
| @@ -411,6 +426,7 @@ std::string MediaStreamManager::MakeMediaAccessRequest( |
| render_view_id, |
| page_request_id, |
| security_origin, |
| + NULL, |
| false, // user gesture |
| MEDIA_DEVICE_ACCESS, |
| options, |
| @@ -451,6 +467,7 @@ void MediaStreamManager::GenerateStream(MediaStreamRequester* requester, |
| render_view_id, |
| page_request_id, |
| security_origin, |
| + NULL, |
| user_gesture, |
| MEDIA_GENERATE_STREAM, |
| options, |
| @@ -633,7 +650,8 @@ std::string MediaStreamManager::EnumerateDevices( |
| const ResourceContext::SaltCallback& sc, |
| int page_request_id, |
| MediaStreamType type, |
| - const GURL& security_origin) { |
| + const GURL& security_origin, |
| + ResourceContext* resource_context) { |
| DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| DCHECK(requester); |
| DCHECK(type == MEDIA_DEVICE_AUDIO_CAPTURE || |
| @@ -644,6 +662,7 @@ std::string MediaStreamManager::EnumerateDevices( |
| render_view_id, |
| page_request_id, |
| security_origin, |
| + resource_context, |
|
perkj_chrome
2014/05/27 11:57:23
This is not safe. Why not check the permissions an
Henrik Grunell
2014/05/27 15:33:54
Done.
|
| false, // user gesture |
| MEDIA_ENUMERATE_DEVICES, |
| StreamOptions(), |
| @@ -724,6 +743,7 @@ void MediaStreamManager::OpenDevice(MediaStreamRequester* requester, |
| render_view_id, |
| page_request_id, |
| security_origin, |
| + NULL, |
| false, // user gesture |
| MEDIA_OPEN_DEVICE, |
| options, |
| @@ -1365,6 +1385,7 @@ void MediaStreamManager::FinalizeEnumerateDevices(const std::string& label, |
| DeviceRequest* request) { |
| DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| DCHECK_EQ(request->request_type, MEDIA_ENUMERATE_DEVICES); |
| + DCHECK(request->resource_context); |
|
mcasas
2014/05/27 12:08:23
DCHECK(request->state(type), MEDIA_REQUEST_STATE_D
Henrik Grunell
2014/05/27 15:33:54
According to xians@, no.
|
| if (request->security_origin.is_valid()) { |
| for (StreamDeviceInfoArray::iterator it = request->devices.begin(); |
| @@ -1375,6 +1396,13 @@ void MediaStreamManager::FinalizeEnumerateDevices(const std::string& label, |
| request->devices.clear(); |
| } |
| + // Query for mic and camera permissions. |
|
mcasas
2014/05/27 12:08:23
This might sound silly, but aren't we querying for
Henrik Grunell
2014/05/27 15:33:54
Changed based on other comment to check permission
|
| + bool visible_labels = request->audio_type() == MEDIA_DEVICE_AUDIO_CAPTURE ? |
| + request->resource_context->AllowMicAccess(request->security_origin) : |
| + request->resource_context->AllowCameraAccess(request->security_origin); |
| + if (!visible_labels) |
| + ClearDeviceLabels(&request->devices); |
|
perkj_chrome
2014/05/27 11:57:23
Is this ok with Pepper?
Henrik Grunell
2014/05/27 15:33:54
Still no clear answer from them. I'll let someone
|
| + |
| request->requester->DevicesEnumerated( |
| request->requesting_view_id, |
| request->page_request_id, |