| /* | 
 |  * 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 | 
 |  * are met: | 
 |  * 1. Redistributions of source code must retain the above copyright | 
 |  *    notice, this list of conditions and the following disclaimer. | 
 |  * 2. Redistributions in binary form must reproduce the above copyright | 
 |  *    notice, this list of conditions and the following disclaimer in the | 
 |  *    documentation and/or other materials provided with the distribution. | 
 |  * | 
 |  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY | 
 |  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
 |  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 
 |  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR | 
 |  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 
 |  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 
 |  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 
 |  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 
 |  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
 |  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
 |  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  | 
 |  */ | 
 |  | 
 | [ | 
 |     Conditional=VIDEO, | 
 |     JSGenerateToNativeObject, | 
 |     ActiveDOMObject, | 
 | ] interface HTMLMediaElement : HTMLElement { | 
 |  | 
 |     // error state | 
 |     readonly attribute MediaError error; | 
 |  | 
 |     // network state | 
 |     [Reflect, URL] attribute DOMString src; | 
 |     [URL] 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; | 
 |  | 
 |     readonly attribute TimeRanges buffered; | 
 |     void load(); | 
 | #if defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA | 
 |     DOMString canPlayType([Default=Undefined] optional DOMString type, [Default=Undefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] optional DOMString keySystem); | 
 | #elif defined(ENABLE_ENCRYPTED_MEDIA_V2) && ENABLE_ENCRYPTED_MEDIA_V2 | 
 |     DOMString canPlayType([Default=Undefined] optional DOMString type, [Default=Undefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] optional DOMString keySystem); | 
 | #else | 
 |     DOMString canPlayType([Default=Undefined] optional DOMString type); | 
 | #endif | 
 |  | 
 |     // 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 | 
 |     [SetterRaisesException] attribute unrestricted double currentTime; | 
 |     readonly attribute unrestricted double duration; | 
 |     readonly attribute boolean paused; | 
 |     attribute unrestricted double defaultPlaybackRate; | 
 |     attribute unrestricted double playbackRate; | 
 |     readonly attribute TimeRanges played; | 
 |     readonly attribute TimeRanges seekable; | 
 |     readonly attribute boolean ended; | 
 |     [Reflect] attribute boolean autoplay; | 
 |     [Reflect] attribute boolean loop; | 
 |     void play(); | 
 |     void pause(); | 
 |     void fastSeek(unrestricted double time); | 
 |  | 
 |     // controls | 
 |     attribute boolean controls; | 
 |     [SetterRaisesException] attribute unrestricted double volume; | 
 |     attribute boolean muted; | 
 |     [Reflect=muted] attribute boolean defaultMuted; | 
 |  | 
 |     attribute EventListener onemptied; | 
 |     attribute EventListener onloadedmetadata; | 
 |     attribute EventListener onloadeddata; | 
 |     attribute EventListener oncanplay; | 
 |     attribute EventListener oncanplaythrough; | 
 |     attribute EventListener onplaying; | 
 |     attribute EventListener onended; | 
 |     attribute EventListener onwaiting; | 
 |     attribute EventListener ondurationchange; | 
 |     attribute EventListener ontimeupdate; | 
 |     attribute EventListener onplay; | 
 |     attribute EventListener onpause; | 
 |     attribute EventListener onratechange; | 
 |     attribute EventListener onvolumechange; | 
 |  | 
 |     // WebKit extensions | 
 |     attribute boolean webkitPreservesPitch; | 
 |  | 
 |     readonly attribute boolean webkitHasClosedCaptions; | 
 |     attribute boolean webkitClosedCaptionsVisible; | 
 |  | 
 |     // The number of bytes consumed by the media decoder. | 
 |     [Conditional=MEDIA_STATISTICS] readonly attribute unsigned long webkitAudioDecodedByteCount; | 
 |     [Conditional=MEDIA_STATISTICS] readonly attribute unsigned long webkitVideoDecodedByteCount; | 
 |  | 
 | #if defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA | 
 |     [RaisesException] void webkitGenerateKeyRequest([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, optional Uint8Array initData); | 
 |     [RaisesException] void webkitAddKey([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, Uint8Array key, optional Uint8Array initData, [Default=NullString] optional DOMString sessionId); | 
 |     [RaisesException] void webkitCancelKeyRequest([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, [Default=NullString] optional DOMString sessionId); | 
 |  | 
 |     attribute EventListener onwebkitkeyadded; | 
 |     attribute EventListener onwebkitkeyerror; | 
 |     attribute EventListener onwebkitkeymessage; | 
 | #endif | 
 |     [Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2] attribute EventListener onwebkitneedkey; | 
 | #if defined(ENABLE_ENCRYPTED_MEDIA_V2) && ENABLE_ENCRYPTED_MEDIA_V2 | 
 |     [ImplementedAs=keys] readonly attribute MediaKeys webkitKeys; | 
 |     [ImplementedAs=setMediaKeys] void webkitSetMediaKeys(MediaKeys mediaKeys); | 
 | #endif | 
 |  | 
 | #if defined(ENABLE_VIDEO_TRACK) && ENABLE_VIDEO_TRACK | 
 |     [RaisesException] TextTrack addTextTrack(DOMString kind, optional DOMString label, optional DOMString language); | 
 |     readonly attribute AudioTrackList audioTracks; | 
 |     readonly attribute TextTrackList textTracks; | 
 |     readonly attribute VideoTrackList videoTracks; | 
 | #endif | 
 |  | 
 |     [Reflect, TreatNullAs=NullString] attribute DOMString mediaGroup; | 
 |     [CustomSetter] attribute MediaController controller; | 
 |  | 
 | #if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT | 
 |     [Conditional=MEDIA_SOURCE] VideoPlaybackQuality getVideoPlaybackQuality(); | 
 | #endif | 
 |  | 
 |     [Conditional=IOS_AIRPLAY] void webkitShowPlaybackTargetPicker(); | 
 |     [Conditional=IOS_AIRPLAY] readonly attribute boolean webkitCurrentPlaybackTargetIsWireless; | 
 |     [Conditional=IOS_AIRPLAY] attribute EventListener onwebkitcurrentplaybacktargetiswirelesschanged; | 
 |     [Conditional=IOS_AIRPLAY] attribute EventListener onwebkitplaybacktargetavailabilitychanged; | 
 | }; |