diff options
Diffstat (limited to 'testing/web-platform/tests/media-source/interfaces.html')
-rw-r--r-- | testing/web-platform/tests/media-source/interfaces.html | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/testing/web-platform/tests/media-source/interfaces.html b/testing/web-platform/tests/media-source/interfaces.html new file mode 100644 index 000000000..f7f6d7c83 --- /dev/null +++ b/testing/web-platform/tests/media-source/interfaces.html @@ -0,0 +1,143 @@ +<!doctype html> +<meta charset=utf-8> +<title>Media Source Extensions IDL tests</title> +<div id=log></div> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=/resources/WebIDLParser.js></script> +<script src=/resources/idlharness.js></script> +<script type=text/plain class=untested> +interface EventTarget { + void addEventListener(DOMString type, EventListener? callback, optional boolean capture /* = false */); + void removeEventListener(DOMString type, EventListener? callback, optional boolean capture /* = false */); + boolean dispatchEvent(Event event); +}; +interface EventHandler {}; +interface URL {}; +interface HTMLVideoElement {}; +interface AudioTrack {}; +interface AudioTrackList {}; +interface VideoTrack {}; +interface VideoTrackList {}; +interface TextTrack {}; +interface TextTrackList {}; +interface TimeRanges {}; +typedef double DOMHighResTimeStamp; +</script> +<script type=text/plain> +[Constructor] +interface MediaSource : EventTarget { + readonly attribute SourceBufferList sourceBuffers; + readonly attribute SourceBufferList activeSourceBuffers; + readonly attribute ReadyState readyState; + attribute unrestricted double duration; + attribute EventHandler onsourceopen; + attribute EventHandler onsourceended; + attribute EventHandler onsourceclose; + SourceBuffer addSourceBuffer(DOMString type); + void removeSourceBuffer(SourceBuffer sourceBuffer); + void endOfStream(optional EndOfStreamError error); + void setLiveSeekableRange(double start, double end); + void clearLiveSeekableRange(); + static boolean isTypeSupported(DOMString type); +}; + +interface SourceBuffer : EventTarget { + attribute AppendMode mode; + readonly attribute boolean updating; + readonly attribute TimeRanges buffered; + attribute double timestampOffset; + readonly attribute AudioTrackList audioTracks; + readonly attribute VideoTrackList videoTracks; + readonly attribute TextTrackList textTracks; + attribute double appendWindowStart; + attribute unrestricted double appendWindowEnd; + attribute EventHandler onupdatestart; + attribute EventHandler onupdate; + attribute EventHandler onupdateend; + attribute EventHandler onerror; + attribute EventHandler onabort; + void appendBuffer(BufferSource data); + void abort(); + void remove(double start, unrestricted double end); +}; + +interface SourceBufferList : EventTarget { + readonly attribute unsigned long length; + attribute EventHandler onaddsourcebuffer; + attribute EventHandler onremovesourcebuffer; + getter SourceBuffer (unsigned long index); +}; + +[Exposed=Window,DedicatedWorker,SharedWorker] +partial interface URL { + static DOMString createObjectURL(MediaSource mediaSource); +}; + +partial interface AudioTrack { + readonly attribute SourceBuffer? sourceBuffer; +}; + +partial interface VideoTrack { + readonly attribute SourceBuffer? sourceBuffer; +}; + +partial interface TextTrack { + readonly attribute SourceBuffer? sourceBuffer; +}; + +enum EndOfStreamError { + "network", + "decode" +}; + +enum AppendMode { + "segments", + "sequence" +}; + +enum ReadyState { + "closed", + "open", + "ended" +}; +</script> +<script> +"use strict"; +setup({ explicit_done: true }); +var mediaSource; +var sourceBuffer; +var video = document.createElement("video"); +var idlCheck = function() { + var idlArray = new IdlArray(); + [].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) { + if (node.className == "untested") { + idlArray.add_untested_idls(node.textContent); + } else { + idlArray.add_idls(node.textContent); + } + }); + idlArray.add_objects({ + MediaSource: ['mediaSource'], + SourceBuffer: ['sourceBuffer'], + SourceBufferList: ['mediaSource.sourceBuffers'] + }); + idlArray.test(); + done(); +} +mediaSource = new MediaSource(); +video.src = URL.createObjectURL(mediaSource); +mediaSource.addEventListener("sourceopen", function () { + var defaultType ='video/webm;codecs="vp8,vorbis"'; + if (video.canPlayType(defaultType)) { + sourceBuffer = mediaSource.addSourceBuffer(defaultType); + } else { + sourceBuffer = mediaSource.addSourceBuffer('video/mp4'); + } + sourceBuffer.addEventListener("updateend", function (e) { + mediaSource.endOfStream(); + idlCheck(); + }); + sourceBuffer.appendBuffer(new ArrayBuffer()); +}); +</script> |