blob: 3cb08f405a5a768c26c0c1f25d3d6d32ea9beb77 [file] [log] [blame]
<!doctype html>
<meta charset=utf-8>
<title>DOM IDL tests</title>
<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>DOM IDL tests</h1>
<div id=log></div>
<script>
"use strict";
var xmlDoc = document.implementation.createDocument(null, "", null);
var detachedRange = document.createRange();
detachedRange.detach();
var element = xmlDoc.createElementNS(null, "test");
element.setAttribute("bar", "baz");
var idlArray = new IdlArray();
function doTest([html, dom]) {
// HTML is needed for EventHandler. Provide a dummy interface for
// LinkStyle which HTML depends on but we're not testing.
idlArray.add_untested_idls('interface LinkStyle {};');
idlArray.add_untested_idls(html);
idlArray.add_idls(dom);
idlArray.add_objects({
EventTarget: ['new EventTarget()'],
Event: ['document.createEvent("Event")', 'new Event("foo")'],
CustomEvent: ['new CustomEvent("foo")'],
AbortController: ['new AbortController()'],
AbortSignal: ['new AbortController().signal'],
Document: ['new Document()'],
XMLDocument: ['xmlDoc'],
DOMImplementation: ['document.implementation'],
DocumentFragment: ['document.createDocumentFragment()'],
DocumentType: ['document.doctype'],
Element: ['element'],
Attr: ['document.querySelector("[id]").attributes[0]'],
Text: ['document.createTextNode("abc")'],
ProcessingInstruction: ['xmlDoc.createProcessingInstruction("abc", "def")'],
Comment: ['document.createComment("abc")'],
Range: ['document.createRange()', 'detachedRange'],
NodeIterator: ['document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false)'],
TreeWalker: ['document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false)'],
NodeList: ['document.querySelectorAll("script")'],
HTMLCollection: ['document.body.children'],
DOMTokenList: ['document.body.classList'],
});
idlArray.test();
}
function fetchText(url) {
return fetch(url).then((response) => response.text());
}
promise_test(function() {
return Promise.all(['/interfaces/html.idl',
'/interfaces/dom.idl'].map(fetchText))
.then(doTest);
}, "Test driver");
</script>