<!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>
