--- a/testing/web-platform/tests/html/dom/interfaces.https.html
+++ b/testing/web-platform/tests/html/dom/interfaces.https.html
@@ -28,215 +28,196 @@ setup(function() {
});
function createInput(type) {
var input = document.createElement('input');
input.type = type;
return input;
}
-function doTest([html, dom, cssom, uievents, touchevents]) {
- var idlArray = new IdlArray();
- var svg = "interface SVGElement : Element {};";
- idlArray.add_untested_idls(dom + svg + cssom + uievents + touchevents);
- idlArray.add_idls(html);
+const waitForLoad = new Promise(resolve => { addEventListener('load', resolve); })
- 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("wss://foo")'],
- CloseEvent: ['new CloseEvent("close")'],
- AbstractWorker: [],
- Worker: [],
- SharedWorker: [],
- MessageEvent: ['new MessageEvent("message", { data: 5 })'],
- MessageChannel: [],
- MessagePort: [],
- 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("/interfaces/html.idl"),
- fetchData("/interfaces/dom.idl"),
- fetchData("/interfaces/cssom.idl"),
- fetchData("/interfaces/touchevents.idl"),
- fetchData("/interfaces/uievents.idl"),
- waitForLoad()])
- .then(doTest);
-}, "Test driver");
+idl_test(
+ ['html'],
+ ['SVG', 'cssom', 'touchevents', 'uievents', 'dom'],
+ async idlArray => {
+ 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("wss://foo")'],
+ CloseEvent: ['new CloseEvent("close")'],
+ AbstractWorker: [],
+ Worker: [],
+ SharedWorker: [],
+ MessageEvent: ['new MessageEvent("message", { data: 5 })'],
+ MessageChannel: [],
+ MessagePort: [],
+ 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');
+ await waitForLoad;
+ },
+ 'html interfaces'
+);
</script>