| <!DOCTYPE html> |
| <link rel="help" href="https://dom.spec.whatwg.org/#dom-document-importnode"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="../resources/custom-elements-helpers.js"></script> |
| <body> |
| <script> |
| test_with_window((w, doc) => { |
| class MyElement extends HTMLElement {} |
| class MyElement2 extends w.HTMLElement {} |
| customElements.define('my-element', MyElement); |
| w.customElements.define('my-element', MyElement2); |
| |
| let original = document.createElement('my-element'); |
| assert_true(original instanceof MyElement); |
| |
| let imported = doc.importNode(original); |
| assert_true(imported instanceof MyElement2); |
| }, 'autonomous: document.importNode() should import custom elements successfully'); |
| |
| test_with_window((w, doc) => { |
| class MyElement3 extends w.HTMLElement {} |
| w.customElements.define('my-element3', MyElement3); |
| |
| let original = document.createElement('my-element3'); |
| assert_equals(original.constructor, HTMLElement); |
| |
| let imported = doc.importNode(original); |
| assert_true(imported instanceof MyElement3); |
| }, 'autonomous: document.importNode() should import "undefined" custom elements successfully'); |
| |
| test_with_window((w, doc) => { |
| class MyDiv extends HTMLDivElement {} |
| class MyDiv2 extends w.HTMLDivElement {} |
| customElements.define('my-div', MyDiv, { extends: 'div' }); |
| w.customElements.define('my-div', MyDiv2, { extends: 'div' }); |
| |
| let original = document.createElement('div', { is: 'my-div' }); |
| assert_true(original instanceof MyDiv); |
| |
| let imported = doc.importNode(original); |
| assert_true(imported instanceof MyDiv2); |
| }, 'built-in: document.importNode() should import custom elements successfully'); |
| |
| test_with_window((w, doc) => { |
| class MyDiv2 extends w.HTMLDivElement {} |
| w.customElements.define('my-div2', MyDiv2, { extends: 'div' }); |
| |
| let original = document.createElement('div', { is: 'my-div2' }); |
| assert_equals(original.constructor, HTMLDivElement); |
| |
| let imported = doc.importNode(original); |
| assert_true(imported instanceof MyDiv2); |
| }, 'built-in: document.importNode() should import "undefined" custom elements successfully'); |
| </script> |
| </body> |