tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>