summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.idl
blob: 9c65ac5a7ecad45ac249001046fed287da5dc62d (plain)
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
#import <HTML/HTMLElement.idl>
#import <HTML/MediaError.idl>
#import <HTML/TimeRanges.idl>
#import <HTML/VideoTrackList.idl>

enum CanPlayTypeResult {
    "",
    "maybe",
    "probably"
};

// https://html.spec.whatwg.org/multipage/media.html#htmlmediaelement
[Exposed=Window]
interface HTMLMediaElement : HTMLElement {

    // error state
    readonly attribute MediaError? error;

    // network state
    [Reflect, CEReactions] attribute DOMString src;
    readonly attribute USVString currentSrc;
    [Reflect=crossorigin, CEReactions] attribute DOMString? crossOrigin;
    const unsigned short NETWORK_EMPTY = 0;
    const unsigned short NETWORK_IDLE = 1;
    const unsigned short NETWORK_LOADING = 2;
    const unsigned short NETWORK_NO_SOURCE = 3;
    readonly attribute unsigned short networkState;
    readonly attribute TimeRanges buffered;
    undefined load();
    CanPlayTypeResult canPlayType(DOMString type);

    // ready state
    const unsigned short HAVE_NOTHING = 0;
    const unsigned short HAVE_METADATA = 1;
    const unsigned short HAVE_CURRENT_DATA = 2;
    const unsigned short HAVE_FUTURE_DATA = 3;
    const unsigned short HAVE_ENOUGH_DATA = 4;
    readonly attribute unsigned short readyState;
    readonly attribute boolean seeking;

    // playback state
    attribute double currentTime;
    undefined fastSeek(double time);
    readonly attribute unrestricted double duration;
    readonly attribute boolean paused;
    readonly attribute boolean ended;
    [Reflect, CEReactions] attribute boolean autoplay;
    [Reflect, CEReactions] attribute boolean loop;
    Promise<undefined> play();
    undefined pause();

    // controls
    [Reflect, CEReactions] attribute boolean controls;

    // tracks
    [SameObject] readonly attribute VideoTrackList videoTracks;
};