Add interfaces and stubs for audio and video tracks
[WebKit-https.git] / Source / WebCore / html / HTMLMediaElement.idl
index 9cb2df3..05bc2dd 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007, 2010, 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2007, 2010, 2011, 2012 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-module html {
-    interface [
-        Conditional=VIDEO,
-        JSGenerateToNativeObject
-    ] HTMLMediaElement : HTMLElement {
-
-    // error state
-    readonly attribute MediaError error;
-
-    // network state
-    attribute [Reflect, URL] DOMString src;
-    readonly attribute [URL] DOMString currentSrc;
-    
-    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;
-    attribute DOMString preload;
-
-    readonly attribute TimeRanges buffered;
-    void load() 
-        raises (DOMException);
-    DOMString canPlayType(in [Optional=DefaultIsUndefined] 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 float currentTime
-        setter raises (DOMException);
-    readonly attribute double initialTime;
-    readonly attribute float startTime;
-    readonly attribute float duration;
-    readonly attribute boolean paused;
-    attribute float defaultPlaybackRate;
-    attribute float playbackRate;
-    readonly attribute TimeRanges played;
-    readonly attribute TimeRanges seekable;
-    readonly attribute boolean ended;
-    attribute [Reflect] boolean autoplay;
-    attribute [Reflect] boolean loop;
-    void play();
-    void pause();
-
-    // controls
-    attribute boolean controls;
-    attribute float volume 
-        setter raises (DOMException);
-    attribute boolean muted;
-    attribute [Reflect=muted] boolean defaultMuted;
-
-    // WebKit extensions
-    attribute boolean webkitPreservesPitch;
-
-    readonly attribute boolean webkitHasClosedCaptions;
-    attribute boolean webkitClosedCaptionsVisible;
-
-    // The number of bytes consumed by the media decoder.
-    readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitAudioDecodedByteCount;
-    readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitVideoDecodedByteCount;
-
-#if defined(ENABLE_MEDIA_SOURCE) && ENABLE_MEDIA_SOURCE
-    // URL passed to src attribute to enable the media source logic.
-    readonly attribute [V8EnabledAtRuntime=webkitMediaSource, URL] DOMString webkitMediaSourceURL;
-
-    // Appends media to to the source.
-    [V8EnabledAtRuntime=webkitMediaSource] void webkitSourceAppend(in Uint8Array data) raises (DOMException);
-
-    // Signals the end of stream.
-    [V8EnabledAtRuntime=webkitMediaSource] const unsigned short EOS_NO_ERROR = 0; // End of stream reached w/o error.
-    [V8EnabledAtRuntime=webkitMediaSource] const unsigned short EOS_NETWORK_ERR = 1; // A network error triggered end of stream.
-    [V8EnabledAtRuntime=webkitMediaSource] const unsigned short EOS_DECODE_ERR = 2; // A decode error triggered end of stream.
-    [V8EnabledAtRuntime=webkitMediaSource] void webkitSourceEndOfStream(in unsigned short status) raises (DOMException);
+[
+    Conditional=VIDEO,
+    JSGenerateToNativeObject,
+    ActiveDOMObject
+] interface HTMLMediaElement : HTMLElement {
+
+// error state
+readonly attribute MediaError error;
+
+// network state
+attribute [Reflect, URL] DOMString src;
+readonly attribute [URL] DOMString currentSrc;
+
+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;
+attribute DOMString preload;
+
+readonly attribute TimeRanges buffered;
+void load();
+#if defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA
+    DOMString canPlayType(in [Optional=DefaultIsUndefined] DOMString type, in [Optional=DefaultIsUndefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem);
+#elif defined(ENABLE_ENCRYPTED_MEDIA_V2) && ENABLE_ENCRYPTED_MEDIA_V2
+    DOMString canPlayType(in [Optional=DefaultIsUndefined] DOMString type, in [Optional=DefaultIsUndefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem);
+#else
+DOMString canPlayType(in [Optional=DefaultIsUndefined] DOMString type);
+#endif
 
-    // Indicates the current state of the media source.
-    [V8EnabledAtRuntime=webkitMediaSource] const unsigned short SOURCE_CLOSED = 0;
-    [V8EnabledAtRuntime=webkitMediaSource] const unsigned short SOURCE_OPEN = 1;
-    [V8EnabledAtRuntime=webkitMediaSource] const unsigned short SOURCE_ENDED = 2;
-    readonly attribute [V8EnabledAtRuntime=webkitMediaSource] unsigned short webkitSourceState;
+// 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
+    setter raises (DOMException);
+readonly attribute double initialTime;
+readonly attribute double startTime;
+readonly attribute double duration;
+readonly attribute boolean paused;
+attribute double defaultPlaybackRate;
+attribute double playbackRate;
+readonly attribute TimeRanges played;
+readonly attribute TimeRanges seekable;
+readonly attribute boolean ended;
+attribute [Reflect] boolean autoplay;
+attribute [Reflect] boolean loop;
+void play();
+void pause();
+
+// controls
+attribute boolean controls;
+attribute double volume 
+    setter raises (DOMException);
+attribute boolean muted;
+attribute [Reflect=muted] boolean defaultMuted;
+
+// WebKit extensions
+attribute boolean webkitPreservesPitch;
+
+readonly attribute boolean webkitHasClosedCaptions;
+attribute boolean webkitClosedCaptionsVisible;
+
+// The number of bytes consumed by the media decoder.
+readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitAudioDecodedByteCount;
+readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitVideoDecodedByteCount;
+
+#if defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA
+void webkitGenerateKeyRequest(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, in [Optional] Uint8Array initData)
+    raises (DOMException);
+void webkitAddKey(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, in Uint8Array key, in [Optional] Uint8Array initData, in [Optional=DefaultIsNullString] DOMString sessionId)
+    raises (DOMException);
+void webkitCancelKeyRequest(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, in [Optional=DefaultIsNullString] DOMString sessionId)
+    raises (DOMException);
+
+    attribute EventListener onwebkitkeyadded;
+    attribute EventListener onwebkitkeyerror;
+    attribute EventListener onwebkitkeymessage;
+#endif
+    attribute [Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2] EventListener onwebkitneedkey;
+#if defined(ENABLE_ENCRYPTED_MEDIA_V2) && ENABLE_ENCRYPTED_MEDIA_V2
+    attribute MediaKeys mediaKeys;
 #endif
 
 #if defined(ENABLE_VIDEO_TRACK) && ENABLE_VIDEO_TRACK
-    [V8EnabledAtRuntime=webkitVideoTrack] TextTrack addTextTrack(in DOMString kind, in [Optional] DOMString label, in [Optional] DOMString language)
-        raises (DOMException);
-    readonly attribute [V8EnabledAtRuntime=webkitVideoTrack] TextTrackList textTracks;
+TextTrack addTextTrack(in DOMString kind, in [Optional] DOMString label, in [Optional] DOMString language)
+    raises (DOMException);
+readonly attribute AudioTrackList audioTracks;
+readonly attribute TextTrackList textTracks;
+readonly attribute VideoTrackList videoTracks;
 #endif
 
-    attribute [Reflect, TreatNullAs=NullString] DOMString mediaGroup;
-    attribute [CustomSetter] MediaController controller;
+[Reflect, TreatNullAs=NullString] attribute DOMString mediaGroup;
+attribute [CustomSetter] MediaController controller;
 };
-}