8626b7c65730918d5721d244c724b67f6c47d45b
[WebKit-https.git] / Source / WebCore / html / HTMLMediaElement.idl
1 /*
2  * Copyright (C) 2007, 2010, 2011, 2012 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 [
27     Conditional=VIDEO,
28     JSGenerateToNativeObject,
29     ActiveDOMObject,
30 ] interface HTMLMediaElement : HTMLElement {
31
32     // error state
33     readonly attribute MediaError error;
34
35     // network state
36     [Reflect, URL] attribute DOMString src;
37     [URL] readonly attribute DOMString currentSrc;
38
39     const unsigned short NETWORK_EMPTY = 0;
40     const unsigned short NETWORK_IDLE = 1;
41     const unsigned short NETWORK_LOADING = 2;
42     const unsigned short NETWORK_NO_SOURCE = 3;
43     readonly attribute unsigned short networkState;
44     attribute DOMString preload;
45
46     readonly attribute TimeRanges buffered;
47     void load();
48 #if defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA
49     DOMString canPlayType([Default=Undefined] optional DOMString type, [Default=Undefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] optional DOMString keySystem);
50 #elif defined(ENABLE_ENCRYPTED_MEDIA_V2) && ENABLE_ENCRYPTED_MEDIA_V2
51     DOMString canPlayType([Default=Undefined] optional DOMString type, [Default=Undefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] optional DOMString keySystem);
52 #else
53     DOMString canPlayType([Default=Undefined] optional DOMString type);
54 #endif
55
56     // ready state
57     const unsigned short HAVE_NOTHING = 0;
58     const unsigned short HAVE_METADATA = 1;
59     const unsigned short HAVE_CURRENT_DATA = 2;
60     const unsigned short HAVE_FUTURE_DATA = 3;
61     const unsigned short HAVE_ENOUGH_DATA = 4;
62     readonly attribute unsigned short readyState;
63     readonly attribute boolean seeking;
64
65     // playback state
66     [SetterRaisesException] attribute unrestricted double currentTime;
67     readonly attribute unrestricted double duration;
68     readonly attribute boolean paused;
69     attribute unrestricted double defaultPlaybackRate;
70     attribute unrestricted double playbackRate;
71     readonly attribute TimeRanges played;
72     readonly attribute TimeRanges seekable;
73     readonly attribute boolean ended;
74     [Reflect] attribute boolean autoplay;
75     [Reflect] attribute boolean loop;
76     void play();
77     void pause();
78     void fastSeek(unrestricted double time);
79
80     // controls
81     attribute boolean controls;
82     [SetterRaisesException] attribute unrestricted double volume;
83     attribute boolean muted;
84     [Reflect=muted] attribute boolean defaultMuted;
85
86     attribute EventListener onemptied;
87     attribute EventListener onloadedmetadata;
88     attribute EventListener onloadeddata;
89     attribute EventListener oncanplay;
90     attribute EventListener oncanplaythrough;
91     attribute EventListener onplaying;
92     attribute EventListener onended;
93     attribute EventListener onwaiting;
94     attribute EventListener ondurationchange;
95     attribute EventListener ontimeupdate;
96     attribute EventListener onplay;
97     attribute EventListener onpause;
98     attribute EventListener onratechange;
99     attribute EventListener onvolumechange;
100
101     // WebKit extensions
102     attribute boolean webkitPreservesPitch;
103
104     readonly attribute boolean webkitHasClosedCaptions;
105     attribute boolean webkitClosedCaptionsVisible;
106
107     // The number of bytes consumed by the media decoder.
108     [Conditional=MEDIA_STATISTICS] readonly attribute unsigned long webkitAudioDecodedByteCount;
109     [Conditional=MEDIA_STATISTICS] readonly attribute unsigned long webkitVideoDecodedByteCount;
110
111 #if defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA
112     [RaisesException] void webkitGenerateKeyRequest([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, optional Uint8Array initData);
113     [RaisesException] void webkitAddKey([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, Uint8Array key, optional Uint8Array initData, [Default=NullString] optional DOMString sessionId);
114     [RaisesException] void webkitCancelKeyRequest([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, [Default=NullString] optional DOMString sessionId);
115
116     attribute EventListener onwebkitkeyadded;
117     attribute EventListener onwebkitkeyerror;
118     attribute EventListener onwebkitkeymessage;
119 #endif
120     [Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2] attribute EventListener onwebkitneedkey;
121 #if defined(ENABLE_ENCRYPTED_MEDIA_V2) && ENABLE_ENCRYPTED_MEDIA_V2
122     [ImplementedAs=keys] readonly attribute MediaKeys webkitKeys;
123     [ImplementedAs=setMediaKeys] void webkitSetMediaKeys(MediaKeys mediaKeys);
124 #endif
125
126 #if defined(ENABLE_VIDEO_TRACK) && ENABLE_VIDEO_TRACK
127     [RaisesException] TextTrack addTextTrack(DOMString kind, optional DOMString label, optional DOMString language);
128     readonly attribute AudioTrackList audioTracks;
129     readonly attribute TextTrackList textTracks;
130     readonly attribute VideoTrackList videoTracks;
131 #endif
132
133     [Reflect, TreatNullAs=NullString] attribute DOMString mediaGroup;
134     [CustomSetter] attribute MediaController controller;
135
136 #if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
137     [Conditional=MEDIA_SOURCE] VideoPlaybackQuality getVideoPlaybackQuality();
138 #endif
139
140     [Conditional=WIRELESS_PLAYBACK_TARGET] void webkitShowPlaybackTargetPicker();
141     [Conditional=WIRELESS_PLAYBACK_TARGET] readonly attribute boolean webkitCurrentPlaybackTargetIsWireless;
142     [Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventListener onwebkitcurrentplaybacktargetiswirelesschanged;
143     [Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventListener onwebkitplaybacktargetavailabilitychanged;
144 };