Re: [w3ctag/design-reviews] User Idle Detection (#336)

Maybe something like (Maybe making threshold not optional to avoid polling?)

```webidl
[SecureContext, Exposed=Window, Constructor(IdleDetectorOptions options)
interface IdleDetector : EventTarget {
  readonly attribute IdleState state;
  readonly attribute DOMHighResTimeStamp? timestamp;
  void start();
  void stop();
  attribute EventHandler onchange;
};

dictionary IdleDetectorOptions {
  double threshold;
};

enum IdleState {
  "active",
  "idle",
  "locked" 
}
```

From your explainer it sounds like "locked" means that screen was turned off, and not a locked screen like WakeLock - those need to be aligned.

If you really need a one-shot you can add one like the geolocation sensor: https://www.w3.org/TR/geolocation-sensor/#idl-index

```webidl
[SecureContext, Exposed=Window, Constructor(IdleDetectorOptions options)
interface IdleDetector : EventTarget {
  static Promise<IdleReading> read(optional ReadOptions readOptions);
  readonly attribute DOMHighResTimeStamp? timestamp;
  readonly attribute IdleState state;
  void start();
  void stop();
  attribute EventHandler onchange;
};

dictionary IdleDetectorOptions {
  double threshold;
};

dictionary ReadOptions : IdleDetectorOptions {
  AbortSignal? signal;
};

enum IdleState {
  "active",
  "idle",
  "locked" 
}

ictionary IdleReading {
  DOMHighResTimeStamp? timestamp;
  readonly attribute IdleState state;
```

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3ctag/design-reviews/issues/336#issuecomment-470077151

Received on Wednesday, 6 March 2019 11:44:05 UTC