mirror of
https://github.com/classilla/tenfourfox.git
synced 2025-01-23 03:32:39 +00:00
146 lines
4.7 KiB
HTML
146 lines
4.7 KiB
HTML
<!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 URL {};
|
|
interface HTMLVideoElement {};
|
|
interface AudioTrack {};
|
|
interface VideoTrack {};
|
|
interface TextTrack {};
|
|
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;
|
|
SourceBuffer addSourceBuffer (DOMString type);
|
|
void removeSourceBuffer (SourceBuffer sourceBuffer);
|
|
void endOfStream (optional EndOfStreamError error);
|
|
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;
|
|
void appendBuffer (ArrayBuffer data);
|
|
void appendBuffer (ArrayBufferView data);
|
|
void appendStream (Stream stream, [EnforceRange] optional unsigned long long maxSize);
|
|
void abort ();
|
|
void remove (double start, double end);
|
|
};
|
|
|
|
interface SourceBufferList : EventTarget {
|
|
readonly attribute unsigned long length;
|
|
getter SourceBuffer (unsigned long index);
|
|
};
|
|
|
|
interface VideoPlaybackQuality {
|
|
readonly attribute DOMHighResTimeStamp creationTime;
|
|
readonly attribute unsigned long totalVideoFrames;
|
|
readonly attribute unsigned long droppedVideoFrames;
|
|
readonly attribute unsigned long corruptedVideoFrames;
|
|
readonly attribute double totalFrameDelay;
|
|
};
|
|
|
|
partial interface URL {
|
|
static DOMString createObjectURL (MediaSource mediaSource);
|
|
};
|
|
|
|
partial interface HTMLVideoElement {
|
|
VideoPlaybackQuality getVideoPlaybackQuality ();
|
|
};
|
|
|
|
partial interface AudioTrack {
|
|
attribute DOMString kind;
|
|
attribute DOMString language;
|
|
readonly attribute SourceBuffer? sourceBuffer;
|
|
};
|
|
|
|
partial interface VideoTrack {
|
|
attribute DOMString kind;
|
|
attribute DOMString language;
|
|
readonly attribute SourceBuffer? sourceBuffer;
|
|
};
|
|
|
|
partial interface TextTrack {
|
|
attribute DOMString kind;
|
|
attribute DOMString language;
|
|
readonly attribute SourceBuffer? sourceBuffer;
|
|
};
|
|
|
|
enum EndOfStreamError {
|
|
"network",
|
|
"decode"
|
|
};
|
|
enum AppendMode {
|
|
"segments",
|
|
"sequence"
|
|
};
|
|
|
|
enum ReadyState {
|
|
"closed",
|
|
"open",
|
|
"ended"
|
|
};
|
|
|
|
</script>
|
|
<script>
|
|
"use strict";
|
|
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'],
|
|
VideoPlaybackQuality: ['video.getVideoPlaybackQuality()'],
|
|
});
|
|
idlArray.test();
|
|
}
|
|
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>
|