<script>
function queueTest() {
  // The timeout is necessary to avoid the parser still being active when
  // `document.open()` is called and becoming a no-op.
  //
  // We also cannot use setTimeout(..., 0), as the parser is terminated in a
  // task with DOM manipulation task source while the timeout is run in a task
  // on the timer task source. The order is therefore not guaranteed. Let's
  // play it safer and use some actual timeout.
  setTimeout(() => {
    document.open();
    document.write("<p>New content</p>");
    document.close();
    opener.onDocumentOpen();
  }, 200);
}
</script>
<body onload="opener.onFrameLoaded(); queueTest();">
<p>Old content</p>
</body>
