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, |