Add interfaces and stubs for audio and video tracks
[WebKit-https.git] / Source / WebCore / html / HTMLMediaElement.idl
index d6ba79d..05bc2dd 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007, 2010 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] HTMLMediaElement : HTMLElement {
+[
+    Conditional=VIDEO,
+    JSGenerateToNativeObject,
+    ActiveDOMObject
+] interface HTMLMediaElement : HTMLElement {
 
-    // error state
-    readonly attribute MediaError error;
+// error state
+readonly attribute MediaError error;
 
-    // network state
-    attribute [Reflect, URL] DOMString src;
-    readonly attribute 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;
+// network state
+attribute [Reflect, URL] DOMString src;
+readonly attribute [URL] DOMString currentSrc;
 
-    readonly attribute TimeRanges buffered;
-    [NeedsUserGestureCheck] void load() 
-        raises (DOMException);
-    DOMString canPlayType(in DOMString type);
+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;
 
-    // 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;
+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
 
-    // playback state
-    attribute float currentTime
-        setter raises (DOMException);
-    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;
-    [NeedsUserGestureCheck] void play();
-    [NeedsUserGestureCheck] void pause();
+// 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;
 
-    // controls
-    attribute boolean controls;
-    attribute float volume 
-        setter raises (DOMException);
-    attribute boolean muted;
-    
-    // WebKit extensions
-    attribute boolean webkitPreservesPitch;
+// 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();
 
-    readonly attribute boolean webkitHasClosedCaptions;
-    attribute boolean webkitClosedCaptionsVisible;
+// 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
+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
+
+[Reflect, TreatNullAs=NullString] attribute DOMString mediaGroup;
+attribute [CustomSetter] MediaController controller;
 };
-}