- From: Frederick Hirsch <w3c@fjhirsch.com>
- Date: Wed, 28 May 2014 10:50:17 -0400
- To: Dominique Hazael-Massieux <dom@w3.org>
- Cc: Frederick Hirsch <w3c@fjhirsch.com>, Marcos <marcos@marcosc.com>, "public-device-apis@w3.org" <public-device-apis@w3.org>, "Kostiainen, Anssi" <anssi.kostiainen@intel.com>, Mats Wichmann <m.wichmann@samsung.com>
> requestWakeLock makes it easy to forget to remove the lock; poke() makes
> it harder (the wake lock disappears as soon as you stop poking).
>
> Another aspect where managing lock will trip people up: if several
> distinct libraries try to manage it, they have to carefully manage the
> state to avoid unlocking someone else's lock.
This was my concern in my first point, programmer usability & avoiding errors (I mentioned security as an aside, which obscured my main point I guess)
Simplicity of use, avoiding errors. With multiple threads could locks become an issue?
regards, Frederick
Frederick Hirsch, Nokia
Chair DAP
@fjhirsch
On May 28, 2014, at 9:17 AM, Dominique Hazael-Massieux <dom@w3.org> wrote:
> Le mercredi 28 mai 2014 à 08:54 -0400, Marcos a écrit :
>>> I suggest that we should attempt to avoid the risk of apps requesting
>>> locks and then not freeing them due to programmer error or other
>>> error conditions. (One denial of service attack might be to disable
>>> screen sleep to either cause burn-in or battery drain..)
>>
>> I seriously don't see this as a real problem, as if one closes the app
>> or opens a different tab the lock no longer applies (i.e., this only
>> applies to foregrounded windows).
>
> Agreed; more specifically, I think both proposals on the table have the
> same properties with regard to security.
>
>>> it seems Dom’s poke proposal gets at the idea of allowing programmatic
>>> notice of input other than touch, avoiding the issue of locks
>>
>> Not sure I follow how it avoids the issue of locks? Not sure what
>> "locks" means in this context?
>
> requestWakeLock makes it easy to forget to remove the lock; poke() makes
> it harder (the wake lock disappears as soon as you stop poking).
>
> Another aspect where managing lock will trip people up: if several
> distinct libraries try to manage it, they have to carefully manage the
> state to avoid unlocking someone else's lock.
>
>> I just assume people will just do this:
>> //Poke it, because you must never sleep!!!
>> setInterval(poke, 0);
>
> That's certainly a risk. That said I think the mental model of replacing
> user interaction with a poke is easier to grasp than managing locks and
> states in asynchronous environments.
>
>> When what they want is:
>> screen.getWakeLock();
>>
>> //If the use leaves and comes back...
>> window.onfocus = () => {
>> //if we've lost the lock
>> if(screen.wakeLockState === "unlocked"){
>> screen.getWakeLock();
>> }
>> }
>
> Hmm... My perspective was that losing focus on the tab would stop the
> screen wake lock implicitly (i.e. the screen would be free to dim / lock
> again), not that it would require the developer to re-request it. That
> seems like a recipe for bugs.
>
>>> Is it possible that the browser implementation could detect
>>> window refresh associated with video or games, thus obviating
>>> the need for use of an API entirely in some cases? (that still would
>>> not address the use case of viewing a recipe)
>>
>> You could, like assuming requestAnimationFrame() or CSS animations
>> could imply this. But it's a bit of an abuse of the API and would tie
>> people to using some particular solution or another. That could become
>> unpredictable and have unforeseen consequences that developers didn't
>> expect ("wtf is causing the screen to stay on?"). It's better, IMO, to
>> let developers just handle this and not add any magic.
>
> +1
>
> Dom
>
Received on Wednesday, 28 May 2014 14:50:49 UTC