<!DOCTYPE html>
<title>Declarative Shadow DOM after attachShadow</title>
<link rel='author' title='Mason Freed' href='mailto:masonfreed@chromium.org'>
<link rel='help' href='https://github.com/whatwg/dom/issues/831'>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>

<body>
<script>
let gotHost = false;
function myObserver(mutationsList, observer) {
  for (let mutation of mutationsList) {
    for (let n of mutation.addedNodes) {
      if (n.id === 'host') {
        gotHost = true;
        const shadowRoot = n.attachShadow( {mode: 'closed'});
        assert_true(!!shadowRoot, 'Unable to attach shadow imperatively');
      }
    }
  }
}
const observer = new MutationObserver(myObserver);
observer.observe(document.body, { childList: true, subtree: true });
assert_false(gotHost, 'No mutations yet');
</script>

<div id=host>
  <script></script> <!-- Make sure MutationObserver gets to run -->
  <template shadowroot=open>
    <slot></slot>
  </template>
</div>

<script>
test(t => {
  t.add_cleanup(function() { observer.disconnect(); });
  assert_true(gotHost);
  let host = document.querySelector('#host');
  let template = host.querySelector('template');
  assert_true(!!template, 'Declarative shadow attach should fail, so template should be left over');
  assert_true(!host.shadowRoot, 'Shadow root should be closed (from attachShadow call)');
}, 'Declarative Shadow DOM: declarative shadow should fail if attachShadow() already called');
</script>
</body>
