<!DOCTYPE html>
<title>Shadow DOM: Event.composedPath() should return the same result even if DOM is mutated</title>
<meta name="author" title="Hayato Ito" href="mailto:hayato@google.com">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/shadow-dom.js"></script>

<div id="test1">
  <div id="host">
    <template id="sr" data-mode="closed">
      <div id="target"></div>
    </template>
  </div>
</div>

<script>
async_test((t) => {
  const n = createTestTree(document.querySelector('#test1'));
  n.host.addEventListener('my-event', t.step_func((e) => {
    const path_before = e.composedPath();
    // Move the target out of a closed shadow tree
    n.host.append(n.target);
    const path_after = e.composedPath();
    assert_array_equals(path_before, path_after);
    t.done();
  }));
  const event = new Event('my-event', { bubbles: true, composed: true });
  n.target.dispatchEvent(event);
}, 'Event.composedPath() should return the same result even if DOM is mutated (1/2)');
</script>

<div id="test2">
  <div id="host1">
    <template id="sr1" data-mode="closed">
      <div id="host2">
        <template id="sr2" data-mode="open">
          <div id="target"></div>
        </template>
      </div>
    </template>
  </div>
</div>

<script>
async_test((t) => {
  const n = createTestTree(document.querySelector('#test2'));
  n.host1.addEventListener('my-event', t.step_func((e) => {
    const path_before = e.composedPath();
    // Move nodes out of a closed shadow tree
    n.host1.append(n.host2);
    n.host1.append(n.target);
    const path_after = e.composedPath();
    assert_array_equals(path_before, path_after);
    t.done();
  }));
  const event = new Event('my-event', { bubbles: true, composed: true });
  n.target.dispatchEvent(event);
}, 'Event.composedPath() should return the same result even if DOM is mutated (2/2)');
</script>
