File's structured serialization should serialize lastModified attribute
[WebKit-https.git] / LayoutTests / imported / w3c / web-platform-tests / media-source / interfaces.html
1 <!doctype html>
2 <meta charset=utf-8>
3 <title>Media Source Extensions IDL tests</title>
4 <div id=log></div>
5 <script src=/resources/testharness.js></script>
6 <script src=/resources/testharnessreport.js></script>
7 <script src=/resources/WebIDLParser.js></script>
8 <script src=/resources/idlharness.js></script>
9 <script type=text/plain class=untested>
10 interface EventTarget {
11   void addEventListener(DOMString type, EventListener? callback, optional boolean capture /* = false */);
12   void removeEventListener(DOMString type, EventListener? callback, optional boolean capture /* = false */);
13   boolean dispatchEvent(Event event);
14 };
15 interface EventHandler {};
16 interface URL {};
17 interface HTMLVideoElement {};
18 interface AudioTrack {};
19 interface AudioTrackList {};
20 interface VideoTrack {};
21 interface VideoTrackList {};
22 interface TextTrack {};
23 interface TextTrackList {};
24 interface TimeRanges {};
25 typedef double DOMHighResTimeStamp;
26 </script>
27 <script type=text/plain>
28 [Constructor]
29 interface MediaSource : EventTarget {
30     readonly attribute SourceBufferList    sourceBuffers;
31     readonly attribute SourceBufferList    activeSourceBuffers;
32     readonly attribute ReadyState          readyState;
33              attribute unrestricted double duration;
34              attribute EventHandler        onsourceopen;
35              attribute EventHandler        onsourceended;
36              attribute EventHandler        onsourceclose;
37     SourceBuffer addSourceBuffer(DOMString type);
38     void         removeSourceBuffer(SourceBuffer sourceBuffer);
39     void         endOfStream(optional EndOfStreamError error);
40     void         setLiveSeekableRange(double start, double end);
41     void         clearLiveSeekableRange();
42     static boolean isTypeSupported(DOMString type);
43 };
44
45 interface SourceBuffer : EventTarget {
46              attribute AppendMode          mode;
47     readonly attribute boolean             updating;
48     readonly attribute TimeRanges          buffered;
49              attribute double              timestampOffset;
50     readonly attribute AudioTrackList      audioTracks;
51     readonly attribute VideoTrackList      videoTracks;
52     readonly attribute TextTrackList       textTracks;
53              attribute double              appendWindowStart;
54              attribute unrestricted double appendWindowEnd;
55              attribute EventHandler        onupdatestart;
56              attribute EventHandler        onupdate;
57              attribute EventHandler        onupdateend;
58              attribute EventHandler        onerror;
59              attribute EventHandler        onabort;
60     void appendBuffer(BufferSource data);
61     void abort();
62     void remove(double start, unrestricted double end);
63 };
64
65 interface SourceBufferList : EventTarget {
66     readonly attribute unsigned long length;
67              attribute EventHandler  onaddsourcebuffer;
68              attribute EventHandler  onremovesourcebuffer;
69     getter SourceBuffer (unsigned long index);
70 };
71
72 [Exposed=Window,DedicatedWorker,SharedWorker]
73 partial interface URL {
74     static DOMString createObjectURL(MediaSource mediaSource);
75 };
76
77 partial interface AudioTrack {
78     readonly attribute SourceBuffer? sourceBuffer;
79 };
80
81 partial interface VideoTrack {
82     readonly attribute SourceBuffer? sourceBuffer;
83 };
84
85 partial interface TextTrack {
86     readonly attribute SourceBuffer? sourceBuffer;
87 };
88
89 enum EndOfStreamError {
90     "network",
91     "decode"
92 };
93
94 enum AppendMode {
95     "segments",
96     "sequence"
97 };
98
99 enum ReadyState {
100     "closed",
101     "open",
102     "ended"
103 };
104 </script>
105 <script>
106 "use strict";
107 setup({ explicit_done: true });
108 var mediaSource;
109 var sourceBuffer;
110 var video = document.createElement("video");
111 var idlCheck = function() {
112   var idlArray = new IdlArray();
113   [].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) {
114     if (node.className == "untested") {
115       idlArray.add_untested_idls(node.textContent);
116     } else {
117       idlArray.add_idls(node.textContent);
118     }
119   });
120   idlArray.add_objects({
121     MediaSource: ['mediaSource'],
122     SourceBuffer: ['sourceBuffer'],
123     SourceBufferList: ['mediaSource.sourceBuffers']
124   });
125   idlArray.test();
126   done();
127 }
128 mediaSource = new MediaSource();
129 video.src = URL.createObjectURL(mediaSource);
130 mediaSource.addEventListener("sourceopen", function () {
131   var defaultType ='video/webm;codecs="vp8,vorbis"';
132   if (MediaSource.isTypeSupported(defaultType)) {
133     sourceBuffer = mediaSource.addSourceBuffer(defaultType);
134   } else {
135     sourceBuffer = mediaSource.addSourceBuffer('video/mp4');
136   }
137   sourceBuffer.addEventListener("updateend", function (e) {
138     mediaSource.endOfStream();
139     idlCheck();
140   });
141   sourceBuffer.appendBuffer(new ArrayBuffer());
142 });
143 </script>