blob: 9a83606a076af05e8a3c1056e3a5ae7d4d988c86 [file] [log] [blame]
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
//
// API docs from [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web).
// Attributions and copyright licensing by Mozilla Contributors is licensed
// under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/.
// Generated from Web IDL definitions.
// ignore_for_file: unintended_html_in_doc_comment
@JS()
library;
import 'dart:js_interop';
import 'dom.dart';
import 'html.dart';
typedef WakeLockType = String;
/// The **`WakeLock`** interface of the
/// [Screen Wake Lock API](https://developer.mozilla.org/en-US/docs/Web/API/Screen_Wake_Lock_API)
/// can be used to request a lock that prevents device screens from dimming or
/// locking when an application needs to keep running.
///
/// This interface, and hence the system wake lock, is exposed through the
/// [Navigator.wakeLock] property.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/WakeLock).
extension type WakeLock._(JSObject _) implements JSObject {
/// The **`request()`** method of the [WakeLock] interface returns a `Promise`
/// that fulfills with a [WakeLockSentinel] object if the system screen wake
/// lock is granted.
///
/// The screen wake lock prevents device screens from dimming or locking when
/// an application needs to keep running.
external JSPromise<WakeLockSentinel> request([WakeLockType type]);
}
/// The **`WakeLockSentinel`** interface of the
/// [Screen Wake Lock API](https://developer.mozilla.org/en-US/docs/Web/API/Screen_Wake_Lock_API)
/// can be used to monitor the status of the platform screen wake lock, and
/// manually release the lock when needed.
///
/// The screen wake lock prevents device screens from dimming or locking when an
/// application needs to keep running.
///
/// A screen wake lock is requested using the [WakeLock.request] method, which
/// returns a `Promise` that fulfills with a `WakeLockSentinel` object if the
/// lock is granted.
///
/// An acquired screen wake lock can be released manually via the
/// [WakeLockSentinel.release] method, or automatically via the platform screen
/// wake lock. The latter may occur if the document becomes inactive or loses
/// visibility, if the device is low on power, or if the user turns on a power
/// save mode.
/// A released `WakeLockSentinel` cannot be re-used: a new sentinel must be
/// requested using [WakeLock.request] if a new lock is needed.
/// Releasing all `WakeLockSentinel` instances of a given wake lock type will
/// cause the underlying platform wake lock to be released.
///
/// An event is fired at the `WakeLockSentinel` if the platform lock is
/// released, allowing applications to configure their UI, and re-request the
/// lock if needed.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/WakeLockSentinel).
extension type WakeLockSentinel._(JSObject _) implements EventTarget, JSObject {
/// The **`release()`** method of the [WakeLockSentinel] interface releases
/// the [WakeLockSentinel], returning a `Promise` that is resolved once the
/// sentinel has been successfully released.
external JSPromise<JSAny?> release();
/// The **`released`** read-only property of the [WakeLockSentinel] interface
/// returns a boolean that indicates whether a [WakeLockSentinel] has been
/// released.
///
/// The `WakeLockSentinel` is released when the associated platform screen
/// wake lock is revoked; afterwards `released` will always return `true`.
/// If a subsequent screen wake lock is required, the application will need to
/// request a new screen wake lock (the current `WakeLockSentinel` cannot be
/// reused).
external bool get released;
/// The **`type`** read-only property of the [WakeLockSentinel] interface
/// returns a string representation of the currently acquired
/// [WakeLockSentinel] type.
external WakeLockType get type;
external EventHandler get onrelease;
external set onrelease(EventHandler value);
}