| /* This Source Code Form is subject to the terms of the Mozilla Public |
| * License, v. 2.0. If a copy of the MPL was not distributed with this |
| * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ |
| /* |
| * The origin of this IDL file is |
| * https://w3c.github.io/mediasession/#mediasession |
| */ |
| |
| [Exposed=Window] |
| partial interface Navigator { |
| [SameObject] readonly attribute MediaSession mediaSession; |
| }; |
| |
| enum MediaSessionPlaybackState { |
| "none", |
| "paused", |
| "playing" |
| }; |
| |
| enum MediaSessionAction { |
| "play", |
| "pause", |
| "seekbackward", |
| "seekforward", |
| "previoustrack", |
| "nexttrack", |
| "skipad", |
| "stop", |
| "seekto" |
| }; |
| |
| dictionary MediaSessionActionDetails { |
| required MediaSessionAction action; |
| }; |
| |
| dictionary MediaSessionSeekActionDetails : MediaSessionActionDetails { |
| double? seekOffset; |
| }; |
| |
| dictionary MediaSessionSeekToActionDetails : MediaSessionActionDetails { |
| required double seekTime; |
| boolean? fastSeek; |
| }; |
| |
| dictionary MediaPositionState { |
| double duration; |
| double playbackRate; |
| double position; |
| }; |
| |
| callback MediaSessionActionHandler = undefined(/*MediaSessionActionDetails details*/); |
| |
| [Exposed=Window] |
| interface MediaSession { |
| attribute MediaMetadata? metadata; |
| |
| attribute MediaSessionPlaybackState playbackState; |
| |
| undefined setActionHandler(MediaSessionAction action, MediaSessionActionHandler? handler); |
| |
| [Throws] undefined setPositionState(optional MediaPositionState state = {}); |
| }; |