| <!doctype html> | |
| <meta charset=utf-8> | |
| <title>HTML IDL tests</title> | |
| <meta name=timeout content=long> | |
| <meta name="variant" content="?include=(Document|Window)"> | |
| <meta name="variant" content="?include=HTML.*"> | |
| <meta name="variant" content="?exclude=(Document|Window|HTML.*)"> | |
| <script src=/resources/testharness.js></script> | |
| <script src=/resources/testharnessreport.js></script> | |
| <script src=/common/subset-tests-by-key.js></script> | |
| <script src=/common/get-host-info.sub.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; | |
| } | |
| const waitForLoad = new Promise(resolve => { addEventListener('load', resolve); }) | |
| idl_test( | |
| ['html'], | |
| ['wai-aria', 'SVG', 'cssom', 'touch-events', 'uievents', 'dom', 'xhr', 'FileAPI', 'mediacapture-streams'], | |
| async idlArray => { | |
| self.documentWithHandlers = new Document(); | |
| const handler = function(e) {}; | |
| for (const callback of idlArray.members['GlobalEventHandlers'].members) { | |
| if (callback.idlType && callback.idlType.idlType === 'EventHandler') { | |
| documentWithHandlers[callback.name] = handler; | |
| } | |
| } | |
| idlArray.add_untested_idls('typedef Window WindowProxy;'); | |
| 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()', 'documentWithHandlers'], | |
| 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: ['new ImageData(10, 10)'], | |
| 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'], | |
| FormDataEvent: ['new FormDataEvent("formdata", { formData: new FormData() })'], | |
| 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: [], | |
| WindowModal: [], | |
| DOMParser: ['new DOMParser()'], | |
| Navigator: ['window.navigator'], | |
| External: ['window.external'], | |
| DataTransfer: [], | |
| DataTransferItemList: [], | |
| DataTransferItem: [], | |
| DragEvent: [], | |
| NavigatorUserMediaError: [], | |
| MediaStream: [], | |
| MediaStreamTrack: [], | |
| MediaStreamRecorder: [], | |
| PeerConnection: [], | |
| MediaStreamEvent: [], | |
| ErrorEvent: [], | |
| EventSource: ['new EventSource("http://invalid")'], | |
| 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")'], | |
| DOMStringList: ['location.ancestorOrigins'], | |
| Storage: [ | |
| 'localStorage', | |
| 'sessionStorage', | |
| ], | |
| StorageEvent: ['new StorageEvent("storage")'] | |
| }); | |
| idlArray.prevent_multiple_testing('HTMLElement'); | |
| await waitForLoad; | |
| } | |
| ); | |
| </script> |