Re: Follow up issues from WebRTC / PING TPAC meeting

> The remaining discussion appears to be what's shared once this implicit device-info permission is granted, which is lots of stuff. Like labels.
> 
It seems part of the issue comes from the fact that browsers may decide to grant the device-info permission forever after a getUserMedia prompt is granted once.
This might be difficult for users to remember and understand.

This behaviour is in user agent land and the spec does not say anything about it right now. Maybe the spec should provide guidelines and warn against that.

Or we could go further and only expose device info on a page based on specific user actions on that page, like if getUserMedia promise is resolved successfully.
Maybe we should remove the concept of the device-info permission, which is different and more difficult to explain than a camera permission or a geolocation permission.
> Which leads me to my last idea:
> 
> Remove deviceId
> Add a deviceName constraint (no-op without device-info permission)
> Then let JS store the label instead:
> 
>   const stream = await navigator.mediaDevices.getUserMedia({video: {deviceName: localStorage.chosenCamera}});
>   localStorage.chosenCamera = stream.getVideoTracks()[0].label;
> 
> We only needed deviceId in the first place to cover the "choose camera beforehand" use-case, when there's no label.
> 
> Would that make us happy?

In a perfect world, I am not sure we would like to expose all device labels.
Labels are very persistent and, except for built-in capture devices, might be very user specific.
On the contrary, the browser is in full control of device Ids, can regenerate them at will.
Device IDs can also handle complex cases that labels cannot.

Received on Monday, 7 October 2019 06:49:31 UTC