summaryrefslogtreecommitdiffstats
path: root/dom/webidl/MediaSession.webidl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/webidl/MediaSession.webidl')
-rw-r--r--dom/webidl/MediaSession.webidl85
1 files changed, 85 insertions, 0 deletions
diff --git a/dom/webidl/MediaSession.webidl b/dom/webidl/MediaSession.webidl
new file mode 100644
index 0000000000..51d97eee1f
--- /dev/null
+++ b/dom/webidl/MediaSession.webidl
@@ -0,0 +1,85 @@
+/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* 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 http://mozilla.org/MPL/2.0/.
+ *
+ * The origin of this IDL file is
+ * https://w3c.github.io/mediasession/#idl-index
+ */
+
+enum MediaSessionPlaybackState {
+ "none",
+ "paused",
+ "playing"
+};
+
+enum MediaSessionAction {
+ "play",
+ "pause",
+ "seekbackward",
+ "seekforward",
+ "previoustrack",
+ "nexttrack",
+ "skipad",
+ "seekto",
+ "stop",
+};
+
+callback MediaSessionActionHandler = undefined(MediaSessionActionDetails details);
+
+[Exposed=Window, Pref="dom.media.mediasession.enabled"]
+interface MediaSession {
+ attribute MediaMetadata? metadata;
+
+ attribute MediaSessionPlaybackState playbackState;
+
+ undefined setActionHandler(MediaSessionAction action, MediaSessionActionHandler? handler);
+
+ [Throws]
+ undefined setPositionState(optional MediaPositionState state = {});
+
+ // Fire the action handler. It's test-only for now.
+ [ChromeOnly]
+ undefined notifyHandler(MediaSessionActionDetails details);
+};
+
+[Exposed=Window, Pref="dom.media.mediasession.enabled"]
+interface MediaMetadata {
+ [Throws]
+ constructor(optional MediaMetadataInit init = {});
+
+ attribute DOMString title;
+ attribute DOMString artist;
+ attribute DOMString album;
+ // https://github.com/w3c/mediasession/issues/237
+ // Take and return `MediaImage` on setter and getter.
+ [Frozen, Cached, Pure, Throws]
+ attribute sequence<object> artwork;
+};
+
+dictionary MediaMetadataInit {
+ DOMString title = "";
+ DOMString artist = "";
+ DOMString album = "";
+ sequence<MediaImage> artwork = [];
+};
+
+dictionary MediaImage {
+ required USVString src;
+ DOMString sizes = "";
+ DOMString type = "";
+};
+
+// Spec issue https://github.com/w3c/mediasession/issues/254
+dictionary MediaSessionActionDetails {
+ required MediaSessionAction action;
+ double seekOffset;
+ double seekTime;
+ boolean fastSeek;
+};
+
+dictionary MediaPositionState {
+ double duration;
+ double playbackRate;
+ double position;
+};