blob: d6e5bb9d7fa1bf7da4bf95e9da78d87a06116e65 [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';
typedef MediaSessionActionHandler = JSFunction;
typedef MediaSessionPlaybackState = String;
typedef MediaSessionAction = String;
/// The **`MediaSession`** interface of the [Media Session API] allows a web
/// page to provide custom behaviors for standard media playback interactions,
/// and to report metadata that can be sent by the user agent to the device or
/// operating system for presentation in standardized user interface elements.
///
/// For example, a smartphone might have a standard panel in its lock screen
/// that provides controls for media playback and information display. A browser
/// on the device can use `MediaSession` to make browser playback controllable
/// from that standard/global user interface.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/MediaSession).
extension type MediaSession._(JSObject _) implements JSObject {
/// The **`setActionHandler()`** method of the [MediaSession] interface sets a
/// handler for a media session action.
/// These actions let a web app receive notifications when the user engages a
/// device's built-in physical or onscreen media controls, such as play, stop,
/// or seek buttons.
external void setActionHandler(
MediaSessionAction action,
MediaSessionActionHandler? handler,
);
/// The **`setPositionState()`** method of the
/// [MediaSession] interface is used to update the current
/// document's media playback position and speed for presentation by user's
/// device in any
/// kind of interface that provides details about ongoing media. This can be
/// particularly useful if your code implements a player for type of media not
/// directly
/// supported by the browser.
///
/// Call this method on the `navigator` object's
/// [navigator.mediaSession] object.
external void setPositionState([MediaPositionState state]);
/// The **`setMicrophoneActive()`** method of the [MediaSession] interface is
/// used to indicate to the user agent whether the user's microphone is
/// considered to be currently muted.
///
/// Call this method on the `navigator` object's
/// [navigator.mediaSession] object.
///
/// Note that the status of the microphone is not tracked in the
/// [MediaSession] itself, but must be tracked separately.
external JSPromise<JSAny?> setMicrophoneActive(bool active);
/// The **`setCameraActive()`** method of the [MediaSession] interface is used
/// to indicate to the user agent whether the user's camera is considered to
/// be active.
///
/// Call this method on the `navigator` object's
/// [navigator.mediaSession] object.
///
/// Note that the status of the camera is not tracked in the [MediaSession]
/// itself, but must be tracked separately.
external JSPromise<JSAny?> setCameraActive(bool active);
/// The **`metadata`** property of the [MediaSession]
/// interface contains a [MediaMetadata] object providing descriptive
/// information about the currently playing media, or `null` if the metadata
/// has
/// not been set. This metadata is provided by the browser to the device for
/// presentation in
/// any standard media control user interface the device might offer.
external MediaMetadata? get metadata;
external set metadata(MediaMetadata? value);
/// The **`playbackState`** property of the
/// [MediaSession] interface indicates whether the current media session is
/// playing or paused.
external MediaSessionPlaybackState get playbackState;
external set playbackState(MediaSessionPlaybackState value);
}
/// The **`MediaMetadata`** interface of the [Media Session API] allows a web
/// page to provide rich media metadata for display in a platform UI.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/MediaMetadata).
extension type MediaMetadata._(JSObject _) implements JSObject {
external factory MediaMetadata([MediaMetadataInit init]);
/// The **`title`** property of the
/// [MediaMetadata] interface returns or sets the title of the media to be
/// played.
external String get title;
external set title(String value);
/// The **`artist`** property of the
/// [MediaMetadata] interface returns or sets the name of the artist, group,
/// creator, etc., of the media to be played.
external String get artist;
external set artist(String value);
/// The **`album`** property of the
/// [MediaMetadata] interface returns or sets the name of the album or
/// collection containing the media to be played.
external String get album;
external set album(String value);
/// The **`artwork`** property of the
/// [MediaMetadata] interface returns or sets an array of
/// objects representing images associated with playing
/// media.
external JSArray<JSObject> get artwork;
external set artwork(JSArray<JSObject> value);
}
extension type MediaMetadataInit._(JSObject _) implements JSObject {
external factory MediaMetadataInit({
String title,
String artist,
String album,
JSArray<MediaImage> artwork,
JSArray<ChapterInformationInit> chapterInfo,
});
external String get title;
external set title(String value);
external String get artist;
external set artist(String value);
external String get album;
external set album(String value);
external JSArray<MediaImage> get artwork;
external set artwork(JSArray<MediaImage> value);
external JSArray<ChapterInformationInit> get chapterInfo;
external set chapterInfo(JSArray<ChapterInformationInit> value);
}
extension type ChapterInformationInit._(JSObject _) implements JSObject {
external factory ChapterInformationInit({
String title,
num startTime,
JSArray<MediaImage> artwork,
});
external String get title;
external set title(String value);
external double get startTime;
external set startTime(num value);
external JSArray<MediaImage> get artwork;
external set artwork(JSArray<MediaImage> value);
}
extension type MediaImage._(JSObject _) implements JSObject {
external factory MediaImage({
required String src,
String sizes,
String type,
});
external String get src;
external set src(String value);
external String get sizes;
external set sizes(String value);
external String get type;
external set type(String value);
}
extension type MediaPositionState._(JSObject _) implements JSObject {
external factory MediaPositionState({
num duration,
num playbackRate,
num position,
});
external double get duration;
external set duration(num value);
external double get playbackRate;
external set playbackRate(num value);
external double get position;
external set position(num value);
}