<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<div id=editor contenteditable><x-x>aa</x-x></div>
<script>
'use strict';

promise_test(function () {
  let constructCount = 0;
  customElements.define('x-x', class extends HTMLElement {
    constructor() {
      super();
      constructCount++;
    }
  });

  assert_equals(constructCount, 1, 'define() should run constructor');

  let element = editor.firstElementChild;
  element.focus();
  let selection = getSelection();
  selection.collapse(element.firstChild, 1);

  eventSender.keyDown('\r');

  // Backup queue runs in a microtask, so schedule the assertions after that.
  return new Promise(resolve => {
    resolve();
  }).then(() => {
    assert_equals(document.getElementsByTagName('x-x').length, 2, 'Enter key should clone the element');
    assert_equals(constructCount, 2, 'clone should run constructor');
  });
}, 'clone-a-node in contenteditable');
</script>
