Add interfaces and stubs for audio and video tracks
[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 COMPUTER, 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 COMPUTER, 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 attribute [Reflect, URL] DOMString src;
37 readonly attribute [URL] 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(in [Optional=DefaultIsUndefined] DOMString type, in [Optional=DefaultIsUndefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem);
50 #elif defined(ENABLE_ENCRYPTED_MEDIA_V2) && ENABLE_ENCRYPTED_MEDIA_V2
51     DOMString canPlayType(in [Optional=DefaultIsUndefined] DOMString type, in [Optional=DefaultIsUndefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem);
52 #else
53 DOMString canPlayType(in [Optional=DefaultIsUndefined] 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 attribute double currentTime
67     setter raises (DOMException);
68 readonly attribute double initialTime;
69 readonly attribute double startTime;
70 readonly attribute double duration;
71 readonly attribute boolean paused;
72 attribute double defaultPlaybackRate;
73 attribute double playbackRate;
74 readonly attribute TimeRanges played;
75 readonly attribute TimeRanges seekable;
76 readonly attribute boolean ended;
77 attribute [Reflect] boolean autoplay;
78 attribute [Reflect] boolean loop;
79 void play();
80 void pause();
81
82 // controls
83 attribute boolean controls;
84 attribute double volume 
85     setter raises (DOMException);
86 attribute boolean muted;
87 attribute [Reflect=muted] boolean defaultMuted;
88
89 // WebKit extensions
90 attribute boolean webkitPreservesPitch;
91
92 readonly attribute boolean webkitHasClosedCaptions;
93 attribute boolean webkitClosedCaptionsVisible;
94
95 // The number of bytes consumed by the media decoder.
96 readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitAudioDecodedByteCount;
97 readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitVideoDecodedByteCount;
98
99 #if defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA
100 void webkitGenerateKeyRequest(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, in [Optional] Uint8Array initData)
101     raises (DOMException);
102 void webkitAddKey(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, in Uint8Array key, in [Optional] Uint8Array initData, in [Optional=DefaultIsNullString] DOMString sessionId)
103     raises (DOMException);
104 void webkitCancelKeyRequest(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, in [Optional=DefaultIsNullString] DOMString sessionId)
105     raises (DOMException);
106
107     attribute EventListener onwebkitkeyadded;
108     attribute EventListener onwebkitkeyerror;
109     attribute EventListener onwebkitkeymessage;
110 #endif
111     attribute [Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2] EventListener onwebkitneedkey;
112 #if defined(ENABLE_ENCRYPTED_MEDIA_V2) && ENABLE_ENCRYPTED_MEDIA_V2
113     attribute MediaKeys mediaKeys;
114 #endif
115
116 #if defined(ENABLE_VIDEO_TRACK) && ENABLE_VIDEO_TRACK
117 TextTrack addTextTrack(in DOMString kind, in [Optional] DOMString label, in [Optional] DOMString language)
118     raises (DOMException);
119 readonly attribute AudioTrackList audioTracks;
120 readonly attribute TextTrackList textTracks;
121 readonly attribute VideoTrackList videoTracks;
122 #endif
123
124 [Reflect, TreatNullAs=NullString] attribute DOMString mediaGroup;
125 attribute [CustomSetter] MediaController controller;
126 };