<!DOCTYPE html>
<meta charset="utf-8">
<title>Meta refresh is blocked by the allow-scripts sandbox flag at its creation time, not when refresh comes due</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="help" href="https://html.spec.whatwg.org/multipage/semantics.html#attr-meta-http-equiv-refresh">

<div id="log"></div>

<script>
"use strict";

const sourceIFrame = document.createElement("iframe");
sourceIFrame.setAttribute("sandbox", "allow-same-origin");

const destIFrame = document.createElement("iframe");

let sourceLoadCount = 0;
let destLoadCount = 0;

sourceIFrame.onload = () => {
  ++sourceLoadCount;

  if (sourceLoadCount === 2) {
    assert_unreached("The iframe from which the meta came from must not refresh");
  }

  maybeStartTest();
};

destIFrame.onload = () => {
  ++destLoadCount;

  if (destLoadCount === 2) {
    assert_unreached("The iframe into which the meta was moved must not refresh");
  }

  maybeStartTest();
};

function maybeStartTest() {
  if (sourceLoadCount === 1 && destLoadCount === 1) {
    // Test that no refreshes occur within 3 seconds
    step_timeout(done, 3000);

    const meta = sourceIFrame.contentDocument.querySelector("meta");
    destIFrame.contentDocument.body.appendChild(meta);
  }
}

sourceIFrame.src = "support/refresh.sub.html?input=" + encodeURIComponent("1; url=foo");
destIFrame.src = "support/ufoo";

document.body.appendChild(sourceIFrame);
document.body.appendChild(destIFrame);
</script>
