This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.
One of the problems with the current method of getting access to media is that it occurs as a side effect of a call done for other purposes (GetUserMedia). The parameters for this aren't ideal to determine the full range of permissions that a page would want - for instance, a page might first open a video device, and later open an audio device separately; in our current models, that would give 2 permissions prompts. Instead of doing it this way, we could make an explicit call: void GetMediaPermissions(Permissions permissions, successCallback, errorCallback) Permissions = enum( "videoInputDevices", "audioInputDevices", // and maybe extend this to "deviceEnumeration", "screenCapture", "windowCapture", .... ) The UA could then use the list of permissions requested to construct an appropriate UI element for asking permission from the user (or use a stored permissions model to grant access immediately, if that's the Right Thing). In any case, all programs that know what class of permissions they want can get those permissions with one call, one prompt, no matter what they do later. For backwards compatibility, getUserMedia would be documented to have an implicit call to GetMediaPermissions "behind the curtains". An earlier attempt was http://dev.w3.org/2009/dap/perms/FeaturePermissions.html - an important difference between that and this proposal is that this proposal explicitly states that one can ask for a set of features, not just one at a time, and that user prompts (and therefore reasonably long delays) are to be expected.
Proposed IDL, based on the DAP IDL: Navigator implements NavigatorDevicePermissions; [NoInterfaceObject] interface NavigatorDevicePermissions { DevicePermissionLevel devicePermissionLevel (in DOMString feature); void requestDevicePermission (in sequence<DOMString> features, in Function success, in Function failure); attribute DOMString[] devicePermissionsImplemented; }; enum DevicePermissionLevel { "UserAllowed", "DefaultAllowed", "UserDenied", "DefaultDenied" }; // Permissions must be valid members of DevicePermissionNames // or a subtype that extends it. enum DevicePermissionNames { "videoInputDevices", "audioInputDevices", "inputDeviceLabels", "outputDeviceLabels", "screenCapture", "windowCapture" }
Please see http://notifications.spec.whatwg.org/#dom-notification-requestpermission and in particular http://robert.ocallahan.org/2011/06/permissions-for-web-applications_30.html There's good reasons why we abandoned this path. Flash tried to do this, Java tried, both are not very successful at conveying to the user what's going on.
I could not see any consensus for this change, so I'm resolving this bug as WONTFIX.