summaryrefslogtreecommitdiffstats
path: root/dom/chrome-webidl/MediaController.webidl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/chrome-webidl/MediaController.webidl')
-rw-r--r--dom/chrome-webidl/MediaController.webidl75
1 files changed, 75 insertions, 0 deletions
diff --git a/dom/chrome-webidl/MediaController.webidl b/dom/chrome-webidl/MediaController.webidl
new file mode 100644
index 0000000000..b16282877a
--- /dev/null
+++ b/dom/chrome-webidl/MediaController.webidl
@@ -0,0 +1,75 @@
+/* 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/.
+ */
+
+/**
+ * This enum lists all supported behaviors on the media controller.
+ */
+enum MediaControlKey {
+ "focus",
+ "play",
+ "pause",
+ "playpause",
+ "previoustrack",
+ "nexttrack",
+ "seekbackward",
+ "seekforward",
+ "skipad",
+ "seekto",
+ "stop",
+};
+
+/**
+ * MediaController is used to control media playback for a tab, and each tab
+ * would only have one media controller, which can be accessed from the
+ * canonical browsing context.
+ */
+[Exposed=Window, ChromeOnly]
+interface MediaController : EventTarget {
+ readonly attribute unsigned long long id;
+ readonly attribute boolean isActive;
+ readonly attribute boolean isAudible;
+ readonly attribute boolean isPlaying;
+ readonly attribute MediaSessionPlaybackState playbackState;
+
+ [Throws]
+ MediaMetadataInit getMetadata();
+
+ [Frozen, Cached, Pure]
+ readonly attribute sequence<MediaControlKey> supportedKeys;
+
+ attribute EventHandler onactivated;
+ attribute EventHandler ondeactivated;
+
+ // Following events would only be dispatched after controller is active.
+ attribute EventHandler onmetadatachange;
+ attribute EventHandler onplaybackstatechange;
+ attribute EventHandler onpositionstatechange;
+ attribute EventHandler onsupportedkeyschange;
+
+ undefined focus();
+ undefined play();
+ undefined pause();
+ undefined stop();
+ undefined prevTrack();
+ undefined nextTrack();
+ undefined seekBackward();
+ undefined seekForward();
+ undefined skipAd();
+ undefined seekTo(double seekTime, optional boolean fastSeek = false);
+};
+
+[ChromeOnly,Exposed=Window,HeaderFile="mozilla/dom/MediaControlService.h"]
+namespace MediaControlService {
+ // This is used to generate fake media control keys event in testing.
+ undefined generateMediaControlKey(MediaControlKey aKey);
+
+ // This is used to get the media metadata from the current main controller in
+ // testing.
+ MediaMetadataInit getCurrentActiveMediaMetadata();
+
+ // This is used to get the actual media playback state from the current main
+ // controller in testing.
+ MediaSessionPlaybackState getCurrentMediaSessionPlaybackState();
+};