Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- Manifest: dom/security/test/csp/mochitest.toml
 
<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<script class="testbody" type="text/javascript">
/* Description of the test:
 * We dynamically load an about:blank iframe which then loads a testframe
 * including a CSP frame-ancestors directive which matches the including
 * security context. We make sure that we not incorrectly block on
 * about:blank which should inherit the security context.
 */
SimpleTest.waitForExplicitFinish();
let aboutBlankFrame = document.createElement("iframe");
document.body.appendChild(aboutBlankFrame);
aboutBlankFrame.onload = function() {
  ok(true, "aboutBlankFrame onload should fire");
  let aboutBlankDoc = aboutBlankFrame.contentDocument;
  is(aboutBlankDoc.documentURI, "about:blank",
    "sanity: aboutBlankFrame URI should be about:blank");
  let testframe = aboutBlankDoc.createElement("iframe");
  aboutBlankDoc.body.appendChild(testframe);
  testframe.onload = function() {
    ok(true, "testframe onload should fire");
    let testDoc = SpecialPowers.wrap(testframe.contentDocument);
    ok(testDoc.documentURI.endsWith("file_csp_frame_ancestors_about_blank.html"),
       "sanity: document in testframe should be the testfile");
    let cspJSON = testDoc.cspJSON;
    ok(cspJSON.includes("frame-ancestors"), "found frame-ancestors directive");
    SimpleTest.finish();
  }
  testframe.onerror = function() {
    ok(false, "testframe onerror should not fire");
  }
  testframe.src = "file_csp_frame_ancestors_about_blank.html";
}
aboutBlankFrame.onerror = function() {
  ok(false, "aboutBlankFrame onerror should not be called");
}
aboutBlankFrame.src = "about:blank";
</script>
</body>
</html>