W3C home > Mailing lists > Public > public-sysapps@w3.org > May 2014

Re: Permissions UI & Necessary API

From: Kostiainen, Anssi <anssi.kostiainen@intel.com>
Date: Wed, 14 May 2014 08:49:26 +0000
To: "Sysapps@w3.org" <public-sysapps@w3.org>
CC: "reeder_29@yahoo.com" <reeder_29@yahoo.com>, Marcos Caceres <w3c@marcosc.com>
Message-ID: <C6324547-99EC-4A6C-B50C-7DD049E12DB3@intel.com>
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

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 20:36:20 UTC