<!DOCTYPE html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<div id="shadowHost"></div>
<style id="style"></style>
<script>
function moveAndReentrantlyAppendToStyleElement() {
  let sr = shadowHost.createShadowRoot();
  let script = document.createElement('script');
  sr.appendChild(script);

  let scriptText = `
    let s = shadowHost.shadowRoot.querySelector('style');
    let text = document.createTextNode('div { background-color: skyblue; }');
    s.appendChild(text);`;

  // Appending scriptText and style in the same call is important here. This way
  // scriptText will be evaluated synchronously while in script.append.
  // Having that script execute before the tree-scope-move was fully completed
  // is what caused a crash previously.
  script.append(scriptText, style);
}

test(function () {
  try {
    moveAndReentrantlyAppendToStyleElement();
  } catch (e) {}
  let bg = shadowHost.shadowRoot.styleSheets[0].cssRules[0].styleMap
    .get('background-color').toString();
  assert_equals(bg, 'skyblue'); // Don't crash.
}, 'Reentrantly appending to style element while changing tree scope does not crash');

</script>
