1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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();
};
|