Index: third_party/WebKit/LayoutTests/custom-elements/spec/selectors/pseudo-class-defined.html |
diff --git a/third_party/WebKit/LayoutTests/custom-elements/spec/selectors/pseudo-class-defined.html b/third_party/WebKit/LayoutTests/custom-elements/spec/selectors/pseudo-class-defined.html |
index a248f121b1ae9c9f8e2dc78ff829c16b4af62cdc..b2cd70c290c1b2a90020677c309c61dd7a83df8e 100644 |
--- a/third_party/WebKit/LayoutTests/custom-elements/spec/selectors/pseudo-class-defined.html |
+++ b/third_party/WebKit/LayoutTests/custom-elements/spec/selectors/pseudo-class-defined.html |
@@ -4,9 +4,9 @@ |
<iframe id="iframe"></iframe> |
<script> |
const testList = [ |
- { tagName: 'div', defined: true }, |
- { tagName: 'a-a', defined: false }, |
- { tagName: 'font-face', defined: true }, |
+ { tag_name: 'div', defined: true }, |
+ { tag_name: 'a-a', defined: false }, |
+ { tag_name: 'font-face', defined: true }, |
]; |
// Setup iframe to test the parser. |
@@ -18,40 +18,51 @@ iframe.srcdoc = `<style> |
:defined { color:${defined}; } |
:not(:defined) { color:${not_defined}; } |
</style>` |
- + testList.map(d => `<${d.tagName}></${d.tagName}>`).join(''); |
+ + testList.map(d => `<${d.tag_name}></${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.tagName)[0], `<${data.tagName}>`); |
+ test_defined(data.defined, doc.getElementsByTagName(data.tag_name)[0], `<${data.tag_name}>`); |
// Test DOM createElement() methods. |
- test_defined_for_createElement(data.defined, doc, data.tagName); |
+ test_defined_for_createElement(data.defined, doc, data.tag_name); |
// Documents without browsing context should be "uncustomized"; i.e., "defined". |
- test_defined_for_createElement(true, doc_without_browsing_context, data.tagName, 'Without browsing context: '); |
+ test_defined_for_createElement(true, doc_without_browsing_context, data.tag_name, 'Without browsing context: '); |
} |
done(); |
}; |
-function test_defined_for_createElement(defined, doc, tagName, description = '') { |
+function test_defined_for_createElement(defined, doc, tag_name, description = '') { |
// Test document.createElement(). |
- let element = doc.createElement(tagName); |
+ let element = doc.createElement(tag_name); |
doc.body.appendChild(element); |
- test_defined(defined, element, `${description}createElement("${tagName}")`); |
+ test_defined(defined, element, `${description}createElement("${tag_name}")`); |
// Test document.createElementNS(). |
- element = doc.createElementNS('http://www.w3.org/1999/xhtml', tagName); |
- doc.body.appendChild(element); |
- test_defined(defined, element, `${description}createElementNS("http://www.w3.org/1999/xhtml", "${tagName}")`); |
+ let html_element = 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}")`); |
// If the element namespace is not HTML, it should be "uncustomized"; i.e., "defined". |
- element = doc.createElementNS('http://www.w3.org/2000/svg', tagName); |
- doc.body.appendChild(element); |
- test_defined(true, element, `${description}createElementNS("http://www.w3.org/2000/svg", "${tagName}")`); |
+ let svg_element = 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}")`); |
+ |
+ // Test ":defined" changes when the custom element was defined. |
+ if (!defined) { |
+ let w = doc.defaultView; |
+ w.customElements.define(tag_name, class extends w.HTMLElement { |
+ constructor() { super(); } |
+ }); |
+ |
+ test_defined(true, element, `Upgraded ${description}createElement("${tag_name}")`); |
+ test_defined(true, html_element, `Upgraded ${description}createElementNS("http://www.w3.org/1999/xhtml", "${tag_name}")`); |
+ } |
} |
function test_defined(expected, element, description) { |