| <?xml version="1.0" encoding="utf-8"?> |
| <html xmlns="http://www.w3.org/1999/xhtml" xmlns:bar="bar"> |
| <head> |
| <title>Test for Shadow DOM innerHTML setter in XML</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| <![CDATA[ |
| // We define our custom elements lazily so we don't mess |
| // with the DOM during parsing. |
| customElements.define("custom-el-1", |
| class extends HTMLElement { |
| constructor() { |
| super(); |
| this.attachShadow({ mode: "open" }); |
| try { this.shadowRoot.innerHTML = "<span/>"; } catch (e) {} |
| } |
| }); |
| function defineElements() { |
| // We define our custom elements whose behavior involves |
| // ancestors of our parent lazily, because otherwise the |
| // constructor runs before the element is in the DOM and has |
| // the ancestors set up. |
| customElements.define("custom-el-2", |
| class extends HTMLElement { |
| constructor() { |
| super(); |
| this.attachShadow({ mode: "open" }); |
| try { this.shadowRoot.innerHTML = "<span/>"; } catch (e) {} |
| } |
| }); |
| customElements.define("custom-el-with-prefix", |
| class extends HTMLElement { |
| constructor() { |
| super(); |
| this.attachShadow({ mode: "open" }); |
| try { |
| this.shadowRoot.innerHTML = "<bar:span/>"; |
| } catch (e) { |
| // Test will fail due to us not having the kid |
| } |
| } |
| }); |
| } |
| ]]> |
| </script> |
| </head> |
| <body> |
| <custom-el-1 id="htmlDefault"/> |
| <span xmlns="foo" xmlns:html="http://www.w3.org/1999/xhtml"> |
| <html:custom-el-2 id="fooDefault"/> |
| </span> |
| <custom-el-with-prefix id="prefixTest"/> |
| <script> |
| <![CDATA[ |
| const htmlNS = "http://www.w3.org/1999/xhtml"; |
| test(() => { |
| var el = document.getElementById("htmlDefault"); |
| var kid = el.shadowRoot.firstChild; |
| assert_equals(kid.namespaceURI, htmlNS, |
| "Kid's namespace should be our default"); |
| }, "InnerHTML behavior on custom element in default XHTML namespace"); |
| |
| test(defineElements, "Setting up the custom elements"); |
| test(() => { |
| var el = document.getElementById("fooDefault"); |
| var kid = el.shadowRoot.firstChild; |
| assert_equals(kid.namespaceURI, "foo", |
| "Kid's namespace should be our default"); |
| }, "InnerHTML behavior on custom element in default 'foo' namespace"); |
| |
| test(() => { |
| var el = document.getElementById("prefixTest"); |
| var kid = el.shadowRoot.firstChild; |
| assert_equals(kid.namespaceURI, "bar", |
| "Kid's namespace should be based on ancestor prefix"); |
| }, "InnerHTML behavior with prefixes on custom element"); |
| ]]> |
| </script> |
| </body> |
| </html> |