File: about-blank.https.sub.html

package info (click to toggle)
firefox 144.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,637,504 kB
  • sloc: cpp: 7,576,692; javascript: 6,430,831; ansic: 3,748,119; python: 1,398,978; xml: 628,810; asm: 438,679; java: 186,194; sh: 63,212; makefile: 19,159; objc: 13,086; perl: 12,986; yacc: 4,583; cs: 3,846; pascal: 3,448; lex: 1,720; ruby: 1,003; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 53; csh: 10
file content (64 lines) | stat: -rw-r--r-- 2,018 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<!DOCTYPE html>
<meta charset="utf-8">
<title>The initial about:blank respects origin isolation</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

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

<script type="module">
import {
  insertIframe,
  setBothDocumentDomains,
  testSameAgentCluster,
  testDifferentAgentClusters,
  testGetter
} from "./resources/helpers.mjs";

promise_setup(async () => {
  await insertAboutBlankIframe();
  await insertIframe("{{hosts[][www]}}");
});

// Since the initial about:blank inherits its origin from its parent, it is
// same-origin with the parent, and thus cross-origin with child2.
testSameAgentCluster([self, 0], "parent to about:blank");
testDifferentAgentClusters([0, 1], "about:blank to child2");
testDifferentAgentClusters([1, 0], "child2 to about:blank");

testGetter(self, true, "parent");
testGetter(0, true, "about:blank");
testGetter(1, false, "child2");

async function insertAboutBlankIframe() {
  const iframe = await createBlankIframe();

  // Now create and add the script, but don't navigate anywhere (since we want
  // to stay on the initial about:blank).
  // We need to absolutize the URL to since about:blank doesn't have a base URL.
  const scriptURL = (new URL("./resources/send-header-page-script.mjs", import.meta.url)).href;
  const script = iframe.contentDocument.createElement("script");
  script.type = "module";
  script.src = scriptURL;

  await new Promise((resolve, reject) => {
    script.onload = resolve;
    script.onerror = () => reject(
      new Error("Could not load the child frame script into the about:blank page")
    );
    iframe.contentDocument.body.append(script);
  });

  await setBothDocumentDomains(iframe.contentWindow);
}

async function createBlankIframe() {
  const iframe = document.createElement("iframe");
  const promise = new Promise(resolve => {
    iframe.addEventListener("load", resolve);
  });
  document.body.append(iframe);
  await promise;
  return iframe;
}
</script>