mirror of
https://github.com/servo/servo.git
synced 2025-08-13 01:15:34 +01:00
Update web-platform-tests to revision b7ee88243f64e6c7f2d00c163bd3bc501e4db7ef
This commit is contained in:
parent
804b4b3db6
commit
a4b4c8e015
134 changed files with 2918 additions and 388 deletions
|
@ -0,0 +1,90 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/semantics-other.html#selector-defined">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<iframe id="iframe"></iframe>
|
||||
<script>
|
||||
const testList = [
|
||||
{ tag_name: 'div', defined: true },
|
||||
{ tag_name: 'a-a', defined: false },
|
||||
{ tag_name: 'font-face', defined: true },
|
||||
{ tag_name: 'abbr', is: 'my-abbr', defined: false },
|
||||
];
|
||||
|
||||
// Setup iframe to test the parser.
|
||||
const neither = 'rgb(255, 0, 0)';
|
||||
const defined = 'rgb(255, 165, 0)';
|
||||
const not_defined = 'rgb(0, 0, 255)';
|
||||
iframe.srcdoc = `<style>
|
||||
* { color:${neither}; }
|
||||
:defined { color:${defined}; }
|
||||
:not(:defined) { color:${not_defined}; }
|
||||
</style>`
|
||||
+ testList.map(d => `<${d.tag_name}${d.is ? ' is=' + d.is : ''}></${d.tag_name}>`).join('');
|
||||
setup({ explicit_done: true });
|
||||
iframe.onload = () => {
|
||||
const doc = iframe.contentDocument;
|
||||
const doc_without_browsing_context = doc.implementation.createHTMLDocument();
|
||||
for (const data of testList) {
|
||||
// Test elements inserted by parser.
|
||||
test_defined(data.defined, doc.getElementsByTagName(data.tag_name)[0],
|
||||
`<${data.tag_name}${data.is ? ' is=' + data.is : ''}>`);
|
||||
|
||||
// Test DOM createElement() methods.
|
||||
test_defined_for_createElement(data.defined, !data.defined, doc, data.tag_name, data.is);
|
||||
|
||||
// Documents without browsing context should behave the same.
|
||||
test_defined_for_createElement(data.defined, false, doc_without_browsing_context, data.tag_name, data.is, 'Without browsing context: ');
|
||||
}
|
||||
|
||||
done();
|
||||
};
|
||||
|
||||
function test_defined_for_createElement(defined, should_test_change, doc, tag_name, is, description = '') {
|
||||
let is_desc = is ? `, { is: "${is}" }` : '';
|
||||
// Test document.createElement().
|
||||
let element = is ? doc.createElement(tag_name, { is: is }) : doc.createElement(tag_name);
|
||||
doc.body.appendChild(element);
|
||||
test_defined(defined, element, `${description}createElement("${tag_name}"${is_desc})`);
|
||||
|
||||
// Test document.createElementNS().
|
||||
let html_element = is ? doc.createElementNS('http://www.w3.org/1999/xhtml', tag_name, { is: is })
|
||||
: doc.createElementNS('http://www.w3.org/1999/xhtml', tag_name);
|
||||
doc.body.appendChild(html_element);
|
||||
test_defined(defined, html_element, `${description}createElementNS("http://www.w3.org/1999/xhtml", "${tag_name}"${is_desc})`);
|
||||
|
||||
// If the element namespace is not HTML, it should be "uncustomized"; i.e., "defined".
|
||||
let svg_element = is ? doc.createElementNS('http://www.w3.org/2000/svg', tag_name, { is: is })
|
||||
: doc.createElementNS('http://www.w3.org/2000/svg', tag_name);
|
||||
doc.body.appendChild(svg_element);
|
||||
test_defined(true, svg_element, `${description}createElementNS("http://www.w3.org/2000/svg", "${tag_name}"${is_desc})`);
|
||||
|
||||
// Test ":defined" changes when the custom element was defined.
|
||||
if (should_test_change) {
|
||||
let w = doc.defaultView;
|
||||
assert_false(!w, 'defaultView required to test change');
|
||||
if (is) {
|
||||
w.customElements.define(is, class extends w.HTMLElement {}, { extends: tag_name });
|
||||
} else {
|
||||
w.customElements.define(tag_name, class extends w.HTMLElement {
|
||||
constructor() { super(); }
|
||||
});
|
||||
}
|
||||
|
||||
test_defined(true, element, `Upgraded ${description}createElement("${tag_name}"${is_desc})`);
|
||||
test_defined(true, html_element, `Upgraded ${description}createElementNS("http://www.w3.org/1999/xhtml", "${tag_name}"${is_desc})`);
|
||||
}
|
||||
}
|
||||
|
||||
function test_defined(expected, element, description) {
|
||||
test(() => {
|
||||
assert_equals(element.matches(':defined'), expected, 'matches(":defined")');
|
||||
assert_equals(element.matches(':not(:defined)'), !expected, 'matches(":not(:defined")');
|
||||
const view = element.ownerDocument.defaultView;
|
||||
if (!view)
|
||||
return;
|
||||
const style = view.getComputedStyle(element);
|
||||
assert_equals(style.color, expected ? defined : not_defined, 'getComputedStyle');
|
||||
}, `${description} should ${expected ? 'be' : 'not be'} :defined`);
|
||||
}
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue