1WakeLock provides the ability to block the device / display from sleeping.
2
3On Android, the implementation is inherently coupled to the NativeView
4associated with the context of the requestor due to system APIs. To handle
5this coupling, the Wake Lock usage model on Android is as follows:
6
7(1) The embedder passes in a callback at Device Service construction that
8enables the Wake Lock implementation to map (embedder-specific) context IDs to
9NativeViews.
10(2) For a given embedder-specific context, a trusted client
11connects to the WakeLockProvider interface and gets a
12WakeLockContext instance that is associated with that context.
13(3) That trusted client then forwards requests to bind wake locks from
14untrusted clients that are made within that context, with the Wake Lock
15implementation using the callback from (1) as necessary to obtain the
16NativeView associated with that context.
17
18On other platforms, the usage model is similar but the callback is not
19necessary/employed.
20
21If the client does not have any context available (e.g., is not within the
22context of a WebContents), it can get a WakeLock that doesn't associate to any
23context (by GetWakeLockWithoutContext() in WakeLockProvider). However, note that
24the resulting Wake Lock will not have any effect on Android.
25