Re: Permissions UI & Necessary API

On 06 May 2014, at 16:53, Kostiainen, Anssi <anssi.kostiainen@intel.com> wrote:

>> Theoretically, permission could change between checking and calling getCurrentLocation, but if I'm calling them in the same tick, ocurrence should be vastly rarer than geolocation failures.
> 
> I think that is not really a concern. I don’t see anything getting in between the following considering the single-threaded nature of JavaScript:
> 
> if (geo.permission === 'enabled') {
>  geo.getCurrentPosition();
> }
> 
> Or perhaps you have a more complete real life example in mind?

Related to this discussion, a proposal by Nikhil elsewhere [1] on how Promise.all() might be used:

[[

Promise.all([
  Notification.requestPermission(), // Some shimmed form that returns a Promise
  navigator.push.hasPermission()
]).then(function(perms) {
  if (perms[0] == 'granted') { // notifications ok; }
  if (perms[1] == 'granted') { navigator.push.register(); }
});

]]

Promise.all() returns a promise that resolves when all of the promises passed to it have resolved.

I’m wondering if something like the following has obvious issues:

[[

[NoInterfaceObject]
interface Permissions {
  Promise requestPermission ();
  Promise hasPermission ();
  /* ... */
};

Notification implements Permissions;
PushManager implements Permissions;
/* ... */
Geolocation implements Permissions;

]]

I think not all APIs can be retrofitted with this, but many could.

Thanks,

-Anssi

[1] https://github.com/w3c/push-api/issues/3#issuecomment-42997477

Received on Wednesday, 14 May 2014 08:51:23 UTC