summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/anonymous-iframe/resources/common.js
blob: 2fa51aa9c6145f5f65c591b051728722c9bdae3f (plain)
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
// Create a credentialless iframe. The new document will execute any scripts
// sent toward the token it returns.
const newIframeCredentialless = (child_origin, opt_headers) => {
  opt_headers ||= "";
  const sub_document_token = token();
  let iframe = document.createElement('iframe');
  iframe.src = child_origin + executor_path + opt_headers +
    `&uuid=${sub_document_token}`;
  iframe.credentialless = true;
  document.body.appendChild(iframe);
  return sub_document_token;
};

// Create a normal iframe. The new document will execute any scripts sent
// toward the token it returns.
const newIframe = (child_origin) => {
  const sub_document_token = token();
  let iframe = document.createElement('iframe');
  iframe.src = child_origin + executor_path + `&uuid=${sub_document_token}`;
  iframe.credentialless = false
  document.body.appendChild(iframe);
  return sub_document_token;
};

// Create a popup. The new document will execute any scripts sent toward the
// token it returns.
const newPopup = (test, origin) => {
  const popup_token = token();
  const popup = window.open(origin + executor_path + `&uuid=${popup_token}`);
  test.add_cleanup(() => popup.close());
  return popup_token;
}

// Create a fenced frame. The new document will execute any scripts sent
// toward the token it returns.
const newFencedFrame = async (child_origin) => {
  const support_loading_mode_fenced_frame =
    "|header(Supports-Loading-Mode,fenced-frame)";
  const sub_document_token = token();
  const url = child_origin + executor_path +
    support_loading_mode_fenced_frame +
    `&uuid=${sub_document_token}`;
  const urn = await generateURNFromFledge(url, []);
  attachFencedFrame(urn);
  return sub_document_token;
};

const importScript = (url) => {
  const script = document.createElement("script");
  script.type = "text/javascript";
  script.src = url;
  const loaded = new Promise(resolve => script.onload = resolve);
  document.body.appendChild(script);
  return loaded;
}