[whatwg] Feature-detectable WakeLocks

WakeLock.request() expecting a string isn't very friendly to feature detection. 

I'd prefer if individual lock types were instances of objects, e.g. navigator.*Lock objects could be instances of a variant of the WakeLock interface:

navigator.screenLock.request();
navigator.screenLock.isHeld();

navigator.cpuLock.request();
navigator.cpuLock.release();


Alternatively, if the WakeLock was instantiable (to have a standard way for independent page components to share locks) then these objects could be constructors:

if (navigator.ScreenLock) {
 var lock = new navigator.ScreenLock();
 …
 lock.release();
}

(or `new navigator.wakeLocks.Screen()`, etc.)

Having specific instances for different types of locks could also enable elegant extensibility of the API, e.g.

var screenLock = new navigator.ScreenLock();
screenLock.dimScreen(); // completely made-up API

var cpuLock = new navigator.CpuLock();
cpuLock.setThreadPriority("low"); // completely made-up API

-- 
regards, Kornel

Received on Monday, 18 August 2014 22:42:02 UTC