idlharness.https.html (10339B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <title>HTML IDL tests</title> 4 <meta name=timeout content=long> 5 <meta name="variant" content="?include=(Document|Window)"> 6 <meta name="variant" content="?include=HTML.+"> 7 <meta name="variant" content="?exclude=(Document|Window|HTML.+)"> 8 <script src=/resources/testharness.js></script> 9 <script src=/resources/testharnessreport.js></script> 10 <script src=/common/subset-tests-by-key.js></script> 11 <script src=/common/get-host-info.sub.js></script> 12 <script src=/resources/WebIDLParser.js></script> 13 <script src=/resources/idlharness.js></script> 14 15 <h1>HTML IDL tests</h1> 16 <div id=log></div> 17 18 <script> 19 "use strict"; 20 var errorVideo; // used to get a MediaError object 21 var iframe; // used to get a Document object (can't use `document` because some test clears the page) 22 setup(function() { 23 errorVideo = document.createElement('video'); 24 errorVideo.src = 'data:,'; 25 errorVideo.preload = 'auto'; 26 iframe = document.createElement('iframe'); 27 iframe.hidden = true; 28 document.body.appendChild(iframe); 29 }); 30 31 function createInput(type) { 32 var input = document.createElement('input'); 33 input.type = type; 34 return input; 35 } 36 37 const waitForLoad = new Promise(resolve => { addEventListener('load', resolve); }) 38 39 idl_test( 40 ['html'], 41 ['wai-aria', 'SVG', 'cssom', 'touch-events', 'uievents', 'dom', 'xhr', 'FileAPI', 'mediacapture-streams', 'performance-timeline', 'trusted-types'], 42 async idlArray => { 43 self.documentWithHandlers = new Document(); 44 const handler = function(e) {}; 45 for (const callback of idlArray.members['GlobalEventHandlers'].members) { 46 if (callback.idlType && callback.idlType.idlType === 'EventHandler') { 47 documentWithHandlers[callback.name] = handler; 48 } 49 } 50 idlArray.add_untested_idls('typedef Window WindowProxy;'); 51 52 idlArray.add_objects({ 53 Element: ['document.createElement("div")'], 54 Range: ['new Range()'], 55 XMLSerializer: ['new XMLSerializer()'], 56 NodeList: ['document.getElementsByName("name")'], 57 HTMLAllCollection: ['document.all'], 58 HTMLFormControlsCollection: ['document.createElement("form").elements'], 59 RadioNodeList: [], 60 HTMLOptionsCollection: ['document.createElement("select").options'], 61 DOMStringMap: ['document.head.dataset'], 62 Transferable: [], 63 Document: ['iframe.contentDocument', 'new Document()', 'documentWithHandlers'], 64 XMLDocument: ['document.implementation.createDocument(null, "", null)'], 65 HTMLElement: [ 66 'document.createElement("noscript")', 67 'Object.assign(document.createElement("noscript"),{popover:"auto"})', 68 ], // more tests in html/semantics/interfaces.js 69 HTMLUnknownElement: ['document.createElement("bgsound")'], // more tests in html/semantics/interfaces.js 70 HTMLHtmlElement: ['document.createElement("html")'], 71 HTMLHeadElement: ['document.createElement("head")'], 72 HTMLTitleElement: ['document.createElement("title")'], 73 HTMLBaseElement: ['document.createElement("base")'], 74 HTMLLinkElement: ['document.createElement("link")'], 75 HTMLMetaElement: ['document.createElement("meta")'], 76 HTMLStyleElement: ['document.createElement("style")'], 77 HTMLScriptElement: ['document.createElement("script")'], 78 HTMLBodyElement: ['document.createElement("body")'], 79 HTMLHeadingElement: ['document.createElement("h1")'], 80 HTMLParagraphElement: ['document.createElement("p")'], 81 HTMLHRElement: ['document.createElement("hr")'], 82 HTMLPreElement: [ 83 'document.createElement("pre")', 84 'document.createElement("listing")', 85 'document.createElement("xmp")', 86 ], 87 HTMLQuoteElement: [ 88 'document.createElement("blockquote")', 89 'document.createElement("q")', 90 ], 91 HTMLOlistElement: ['document.createElement("ol")'], 92 HTMLUlistElement: ['document.createElement("ul")'], 93 HTMLLIElement: ['document.createElement("li")'], 94 HTMLDlistElement: ['document.createElement("dl")'], 95 HTMLDivElement: ['document.createElement("div")'], 96 HTMLAnchorElement: ['document.createElement("a")'], 97 HTMLDataElement: ['document.createElement("data")'], 98 HTMLTimeElement: ['document.createElement("time")'], 99 HTMLSpanElement: ['document.createElement("span")'], 100 HTMLBRElement: ['document.createElement("br")'], 101 HTMLModElement: [ 102 'document.createElement("ins")', 103 'document.createElement("del")', 104 ], 105 HTMLPictureElement: ['document.createElement("picture")'], 106 HTMLImageElement: ['document.createElement("img")', 'new Image()'], 107 HTMLIFrameElement: ['document.createElement("iframe")'], 108 HTMLEmbedElement: ['document.createElement("embed")'], 109 HTMLObjectElement: ['document.createElement("object")'], 110 HTMLParamElement: ['document.createElement("param")'], 111 HTMLVideoElement: ['document.createElement("video")'], 112 HTMLAudioElement: ['document.createElement("audio")', 'new Audio()'], 113 HTMLSourceElement: ['document.createElement("source")'], 114 HTMLTrackElement: ['document.createElement("track")'], 115 HTMLMediaElement: [], 116 MediaError: ['errorVideo.error'], 117 AudioTrackList: [], 118 AudioTrack: [], 119 VideoTrackList: [], 120 VideoTrack: [], 121 TextTrackList: ['document.createElement("video").textTracks'], 122 TextTrack: ['document.createElement("track").track'], 123 TextTrackCueList: ['document.createElement("video").addTextTrack("subtitles").cues'], 124 TextTrackCue: [], 125 DataCue: [], 126 TimeRanges: ['document.createElement("video").buffered'], 127 TrackEvent: ['new TrackEvent("addtrack", {track:document.createElement("track").track})'], 128 HTMLTemplateElement: ['document.createElement("template")'], 129 HTMLSlotElement: ['document.createElement("slot")'], 130 HTMLCanvasElement: ['document.createElement("canvas")'], 131 CanvasRenderingContext2D: ['document.createElement("canvas").getContext("2d")'], 132 CanvasGradient: [], 133 CanvasPattern: [], 134 ToggleEvent: ['new ToggleEvent("beforetoggle")'], 135 TextMetrics: [], 136 ImageData: ['new ImageData(10, 10)'], 137 HTMLMapElement: ['document.createElement("map")'], 138 HTMLAreaElement: ['document.createElement("area")'], 139 HTMLTableElement: ['document.createElement("table")'], 140 HTMLTableCaptionElement: ['document.createElement("caption")'], 141 HTMLTableColElement: [ 142 'document.createElement("colgroup")', 143 'document.createElement("col")', 144 ], 145 HTMLTableSectionElement: [ 146 'document.createElement("tbody")', 147 'document.createElement("thead")', 148 'document.createElement("tfoot")', 149 ], 150 HTMLTableRowElement: ['document.createElement("tr")'], 151 HTMLTableCellElement: [ 152 'document.createElement("td")', 153 'document.createElement("th")', 154 ], 155 HTMLFormElement: ['document.createElement("form")'], 156 HTMLFieldsetElement: ['document.createElement("fieldset")'], 157 HTMLLegendElement: ['document.createElement("legend")'], 158 HTMLLabelElement: ['document.createElement("label")'], 159 HTMLInputElement: [ 160 'document.createElement("input")', 161 'createInput("text")', 162 'createInput("hidden")', 163 'createInput("search")', 164 'createInput("tel")', 165 'createInput("url")', 166 'createInput("email")', 167 'createInput("password")', 168 'createInput("date")', 169 'createInput("month")', 170 'createInput("week")', 171 'createInput("time")', 172 'createInput("datetime-local")', 173 'createInput("number")', 174 'createInput("range")', 175 'createInput("color")', 176 'createInput("checkbox")', 177 'createInput("radio")', 178 'createInput("file")', 179 'createInput("submit")', 180 'createInput("image")', 181 'createInput("reset")', 182 'createInput("button")' 183 ], 184 HTMLButtonElement: ['document.createElement("button")'], 185 HTMLSelectElement: ['document.createElement("select")'], 186 HTMLDataListElement: ['document.createElement("datalist")'], 187 HTMLOptGroupElement: ['document.createElement("optgroup")'], 188 HTMLOptionElement: ['document.createElement("option")', 'new Option()'], 189 HTMLTextAreaElement: ['document.createElement("textarea")'], 190 HTMLOutputElement: ['document.createElement("output")'], 191 HTMLProgressElement: ['document.createElement("progress")'], 192 HTMLMeterElement: ['document.createElement("meter")'], 193 ValidityState: ['document.createElement("input").validity'], 194 FormDataEvent: ['new FormDataEvent("formdata", { formData: new FormData() })'], 195 HTMLDetailsElement: ['document.createElement("details")'], 196 HTMLMenuElement: ['document.createElement("menu")'], 197 Window: ['window'], 198 BarProp: [], 199 History: ['window.history'], 200 Location: ['window.location'], 201 PopStateEvent: ['new PopStateEvent("popstate", { data: {} })'], 202 HashChangeEvent: [], 203 PageTransitionEvent: [], 204 BeforeUnloadEvent: [], 205 WindowModal: [], 206 DOMParser: ['new DOMParser()'], 207 Navigator: ['window.navigator'], 208 External: ['window.external'], 209 DataTransfer: [], 210 DataTransferItemList: [], 211 DataTransferItem: [], 212 DragEvent: [], 213 NavigatorUserMediaError: [], 214 MediaStream: [], 215 MediaStreamTrack: [], 216 MediaStreamRecorder: [], 217 PeerConnection: [], 218 MediaStreamEvent: [], 219 ErrorEvent: [], 220 EventSource: ['new EventSource("http://invalid")'], 221 AbstractWorker: [], 222 Worker: [], 223 SharedWorker: [], 224 MessageEvent: ['new MessageEvent("message", { data: 5 })'], 225 MessageChannel: [], 226 MessagePort: [], 227 HTMLMarqueeElement: ['document.createElement("marquee")'], 228 HTMLFrameSetElement: ['document.createElement("frameset")'], 229 HTMLFrameElement: ['document.createElement("frame")'], 230 HTMLDirectoryElement: ['document.createElement("dir")'], 231 HTMLFontElement: ['document.createElement("font")'], 232 DOMStringList: ['location.ancestorOrigins'], 233 Storage: [ 234 'localStorage', 235 'sessionStorage', 236 ], 237 StorageEvent: ['new StorageEvent("storage")'] 238 }); 239 idlArray.prevent_multiple_testing('HTMLElement'); 240 await waitForLoad; 241 } 242 ); 243 244 </script>