<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<html>
<body></body>
<script>
    async_test(async test => {
      // 1. Load an iframe (not blocked).
      let iframe = document.createElement("iframe");
      {
        iframe.name = "theiframe";
        iframe.src =
          "http://www1.{{host}}/content-security-policy/support/frame.html#0";
        let iframeLoaded = new Promise(resolve => { iframe.onload = resolve; });
        document.body.appendChild(iframe);
        await iframeLoaded;
      }

      // 2. Start blocking iframes using CSP frame-src 'none'.
      {
        let meta = document.createElement('meta');
        meta.httpEquiv = "Content-Security-Policy";
        meta.content = "frame-src 'none'";
        document.getElementsByTagName('head')[0].appendChild(meta);
      }

      // 3. Blocked same-document navigation using iframe.src.
      {
        let violation = new Promise(resolve => {
          window.addEventListener('securitypolicyviolation', resolve);
        });
        iframe.src =
          "http://www1.{{host}}/content-security-policy/support/frame.html#1";
        await violation;
      }

      // 4. Blocked same-document navigation using window.open.
      {
        let violation = new Promise(resolve => {
          window.addEventListener('securitypolicyviolation', resolve);
        });
        window.open(
          "http://www1.{{host}}/content-security-policy/support/frame.html#2",
          "theiframe");
        await violation;
      }

      // 5. Regression test for https://crbug.com/1018385. The browser should
      // not crash while displaying the error page.
      await new Promise(resolve => window.setTimeout(resolve, 1000));

      test.done();
    }, "Same-document navigations in an iframe blocked by CSP frame-src dynamically using the <meta> tag");
</script>
</html>
