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..511756e14a
--- /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;
+
+ void focus();
+ void play();
+ void pause();
+ void stop();
+ void prevTrack();
+ void nextTrack();
+ void seekBackward();
+ void seekForward();
+ void skipAd();
+ void 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.
+ void 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();
+};