tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

embedder-policy.js (1257B)


      1 // This file should be loaded alongside with utils.js.
      2 //
      3 // This file is loaded by:
      4 // - embedder-no-coep.https.html
      5 // - embedder-require-corp.https.html
      6 
      7 // Make input list to be used as a wptserve pipe
      8 // (https://web-platform-tests.org/writing-tests/server-pipes.html).
      9 // e.g.
     10 // args: ['content-type,text/plain','Age,0']
     11 // return: 'header(content-type,text/plain)|header(Age,0)'
     12 function generateHeader(headers) {
     13  return headers.map((h) => {
     14    return 'header(' + h + ')';
     15  }).join('|');
     16 }
     17 
     18 // Setup a fenced frame for embedder-* WPTs.
     19 async function setupTest(test_type, uuid, hostname='') {
     20  let headers = ["Supports-Loading-Mode,fenced-frame"];
     21  switch (test_type) {
     22    case "coep:require-corp":
     23      headers.push("cross-origin-embedder-policy,require-corp");
     24      headers.push("cross-origin-resource-policy,same-origin");
     25      break;
     26    case "no coep":
     27      break;
     28    default:
     29      assert_unreachable("unknown test_type:" + test_type);
     30      break;
     31  }
     32  const tmp_url = new URL('resources/embeddee.html', location.href);
     33  if (hostname) {
     34    tmp_url.hostname = hostname;
     35  }
     36  tmp_url.searchParams.append("pipe", generateHeader(headers));
     37  const url = generateURL(tmp_url.toString(), [uuid]);
     38  return attachFencedFrame(url);
     39 }