mirror of
https://github.com/servo/servo.git
synced 2025-06-24 17:14:33 +01:00
236 lines
9.1 KiB
HTML
236 lines
9.1 KiB
HTML
<!doctype html>
|
|
<meta charset=utf-8>
|
|
<!-- WARNING: These tests are preliminary and probably partly incorrect. -->
|
|
<title>HTML IDL tests</title>
|
|
<meta name=timeout content=long>
|
|
<script src=/resources/testharness.js></script>
|
|
<script src=/resources/testharnessreport.js></script>
|
|
<script src=/resources/WebIDLParser.js></script>
|
|
<script src=/resources/idlharness.js></script>
|
|
|
|
<h1>HTML IDL tests</h1>
|
|
<div id=log></div>
|
|
|
|
<script>
|
|
"use strict";
|
|
var errorVideo; // used to get a MediaError object
|
|
var iframe; // used to get a Document object (can't use `document` because some test clears the page)
|
|
setup(function() {
|
|
errorVideo = document.createElement('video');
|
|
errorVideo.src = 'data:,';
|
|
errorVideo.preload = 'auto';
|
|
iframe = document.createElement('iframe');
|
|
iframe.hidden = true;
|
|
document.body.appendChild(iframe);
|
|
});
|
|
|
|
function createInput(type) {
|
|
var input = document.createElement('input');
|
|
input.type = type;
|
|
return input;
|
|
}
|
|
|
|
function doTest([untested, tested]) {
|
|
var idlArray = new IdlArray();
|
|
idlArray.add_untested_idls(untested);
|
|
idlArray.add_idls(tested);
|
|
|
|
idlArray.add_objects({
|
|
NodeList: ['document.getElementsByName("name")'],
|
|
HTMLAllCollection: ['document.all'],
|
|
HTMLFormControlsCollection: ['document.createElement("form").elements'],
|
|
RadioNodeList: [],
|
|
HTMLOptionsCollection: ['document.createElement("select").options'],
|
|
DOMStringMap: ['document.head.dataset'],
|
|
Transferable: [],
|
|
Document: ['iframe.contentDocument', 'new Document()'],
|
|
XMLDocument: ['document.implementation.createDocument(null, "", null)'],
|
|
HTMLElement: ['document.createElement("noscript")'], // more tests in html/semantics/interfaces.js
|
|
HTMLUnknownElement: ['document.createElement("bgsound")'], // more tests in html/semantics/interfaces.js
|
|
HTMLHtmlElement: ['document.createElement("html")'],
|
|
HTMLHeadElement: ['document.createElement("head")'],
|
|
HTMLTitleElement: ['document.createElement("title")'],
|
|
HTMLBaseElement: ['document.createElement("base")'],
|
|
HTMLLinkElement: ['document.createElement("link")'],
|
|
HTMLMetaElement: ['document.createElement("meta")'],
|
|
HTMLStyleElement: ['document.createElement("style")'],
|
|
HTMLScriptElement: ['document.createElement("script")'],
|
|
HTMLBodyElement: ['document.createElement("body")'],
|
|
HTMLHeadingElement: ['document.createElement("h1")'],
|
|
HTMLParagraphElement: ['document.createElement("p")'],
|
|
HTMLHRElement: ['document.createElement("hr")'],
|
|
HTMLPreElement: [
|
|
'document.createElement("pre")',
|
|
'document.createElement("listing")',
|
|
'document.createElement("xmp")',
|
|
],
|
|
HTMLQuoteElement: [
|
|
'document.createElement("blockquote")',
|
|
'document.createElement("q")',
|
|
],
|
|
HTMLOlistElement: ['document.createElement("ol")'],
|
|
HTMLUlistElement: ['document.createElement("ul")'],
|
|
HTMLLIElement: ['document.createElement("li")'],
|
|
HTMLDlistElement: ['document.createElement("dl")'],
|
|
HTMLDivElement: ['document.createElement("div")'],
|
|
HTMLAnchorElement: ['document.createElement("a")'],
|
|
HTMLDataElement: ['document.createElement("data")'],
|
|
HTMLTimeElement: ['document.createElement("time")'],
|
|
HTMLSpanElement: ['document.createElement("span")'],
|
|
HTMLBRElement: ['document.createElement("br")'],
|
|
HTMLModElement: [
|
|
'document.createElement("ins")',
|
|
'document.createElement("del")',
|
|
],
|
|
HTMLPictureElement: ['document.createElement("picture")'],
|
|
HTMLImageElement: ['document.createElement("img")', 'new Image()'],
|
|
HTMLIframeElement: ['document.createElement("iframe")'],
|
|
HTMLEmbedElement: ['document.createElement("embed")'],
|
|
HTMLObjectElement: ['document.createElement("object")'],
|
|
HTMLParamElement: ['document.createElement("param")'],
|
|
HTMLVideoElement: ['document.createElement("video")'],
|
|
HTMLAudioElement: ['document.createElement("audio")', 'new Audio()'],
|
|
HTMLSourceElement: ['document.createElement("source")'],
|
|
HTMLTrackElement: ['document.createElement("track")'],
|
|
HTMLMediaElement: [],
|
|
MediaError: ['errorVideo.error'],
|
|
AudioTrackList: [],
|
|
AudioTrack: [],
|
|
VideoTrackList: [],
|
|
VideoTrack: [],
|
|
TextTrackList: ['document.createElement("video").textTracks'],
|
|
TextTrack: ['document.createElement("track").track'],
|
|
TextTrackCueList: ['document.createElement("video").addTextTrack("subtitles").cues'],
|
|
TextTrackCue: [],
|
|
DataCue: [],
|
|
TimeRanges: ['document.createElement("video").buffered'],
|
|
TrackEvent: ['new TrackEvent("addtrack", {track:document.createElement("track").track})'],
|
|
HTMLTemplateElement: ['document.createElement("template")'],
|
|
HTMLSlotElement: ['document.createElement("slot")'],
|
|
HTMLCanvasElement: ['document.createElement("canvas")'],
|
|
CanvasRenderingContext2D: ['document.createElement("canvas").getContext("2d")'],
|
|
CanvasGradient: [],
|
|
CanvasPattern: [],
|
|
TextMetrics: [],
|
|
ImageData: [],
|
|
HTMLMapElement: ['document.createElement("map")'],
|
|
HTMLAreaElement: ['document.createElement("area")'],
|
|
HTMLTableElement: ['document.createElement("table")'],
|
|
HTMLTableCaptionElement: ['document.createElement("caption")'],
|
|
HTMLTableColElement: [
|
|
'document.createElement("colgroup")',
|
|
'document.createElement("col")',
|
|
],
|
|
HTMLTableSectionElement: [
|
|
'document.createElement("tbody")',
|
|
'document.createElement("thead")',
|
|
'document.createElement("tfoot")',
|
|
],
|
|
HTMLTableRowElement: ['document.createElement("tr")'],
|
|
HTMLTableCellElement: [
|
|
'document.createElement("td")',
|
|
'document.createElement("th")',
|
|
],
|
|
HTMLFormElement: ['document.createElement("form")'],
|
|
HTMLFieldsetElement: ['document.createElement("fieldset")'],
|
|
HTMLLegendElement: ['document.createElement("legend")'],
|
|
HTMLLabelElement: ['document.createElement("label")'],
|
|
HTMLInputElement: [
|
|
'document.createElement("input")',
|
|
'createInput("text")',
|
|
'createInput("hidden")',
|
|
'createInput("search")',
|
|
'createInput("tel")',
|
|
'createInput("url")',
|
|
'createInput("email")',
|
|
'createInput("password")',
|
|
'createInput("date")',
|
|
'createInput("month")',
|
|
'createInput("week")',
|
|
'createInput("time")',
|
|
'createInput("datetime-local")',
|
|
'createInput("number")',
|
|
'createInput("range")',
|
|
'createInput("color")',
|
|
'createInput("checkbox")',
|
|
'createInput("radio")',
|
|
'createInput("file")',
|
|
'createInput("submit")',
|
|
'createInput("image")',
|
|
'createInput("reset")',
|
|
'createInput("button")'
|
|
],
|
|
HTMLButtonElement: ['document.createElement("button")'],
|
|
HTMLSelectElement: ['document.createElement("select")'],
|
|
HTMLDataListElement: ['document.createElement("datalist")'],
|
|
HTMLOptGroupElement: ['document.createElement("optgroup")'],
|
|
HTMLOptionElement: ['document.createElement("option")', 'new Option()'],
|
|
HTMLTextAreaElement: ['document.createElement("textarea")'],
|
|
HTMLOutputElement: ['document.createElement("output")'],
|
|
HTMLProgressElement: ['document.createElement("progress")'],
|
|
HTMLMeterElement: ['document.createElement("meter")'],
|
|
ValidityState: ['document.createElement("input").validity'],
|
|
HTMLDetailsElement: ['document.createElement("details")'],
|
|
HTMLMenuElement: ['document.createElement("menu")'],
|
|
Window: ['window'],
|
|
BarProp: [],
|
|
History: ['window.history'],
|
|
Location: ['window.location'],
|
|
PopStateEvent: ['new PopStateEvent("popstate", { data: {} })'],
|
|
HashChangeEvent: [],
|
|
PageTransitionEvent: [],
|
|
BeforeUnloadEvent: [],
|
|
ApplicationCache: ['window.applicationCache'],
|
|
WindowModal: [],
|
|
Navigator: ['window.navigator'],
|
|
External: ['window.external'],
|
|
DataTransfer: [],
|
|
DataTransferItemList: [],
|
|
DataTransferItem: [],
|
|
DragEvent: [],
|
|
NavigatorUserMediaError: [],
|
|
MediaStream: [],
|
|
LocalMediaStream: [],
|
|
MediaStreamTrack: [],
|
|
MediaStreamRecorder: [],
|
|
PeerConnection: [],
|
|
MediaStreamEvent: [],
|
|
ErrorEvent: [],
|
|
WebSocket: ['new WebSocket("ws://foo")'],
|
|
CloseEvent: ['new CloseEvent("close")'],
|
|
AbstractWorker: [],
|
|
Worker: [],
|
|
SharedWorker: [],
|
|
MessageEvent: ['new MessageEvent("message", { data: 5 })'],
|
|
MessageChannel: [],
|
|
MessagePort: [],
|
|
HTMLAppletElement: ['document.createElement("applet")'],
|
|
HTMLMarqueeElement: ['document.createElement("marquee")'],
|
|
HTMLFrameSetElement: ['document.createElement("frameset")'],
|
|
HTMLFrameElement: ['document.createElement("frame")'],
|
|
HTMLDirectoryElement: ['document.createElement("dir")'],
|
|
HTMLFontElement: ['document.createElement("font")'],
|
|
});
|
|
idlArray.prevent_multiple_testing("HTMLElement");
|
|
idlArray.test();
|
|
};
|
|
|
|
function fetchData(url) {
|
|
return fetch(url).then((response) => response.text());
|
|
}
|
|
|
|
function waitForLoad() {
|
|
return new Promise(function(resolve) {
|
|
addEventListener("load", resolve);
|
|
});
|
|
}
|
|
|
|
promise_test(function() {
|
|
// Have to wait for onload
|
|
return Promise.all([fetchData("resources/untested-interfaces.idl"),
|
|
fetchData("resources/interfaces.idl"),
|
|
waitForLoad()])
|
|
.then(doTest);
|
|
}, "Test driver");
|
|
|
|
</script>
|