tor-browser

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

coep-navigate-popup.https.html (2558B)


      1 <!doctype html>
      2 <title>Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy: a navigating popup</title>
      3 <meta name=timeout content=long>
      4 <meta name=variant content=?0-1>
      5 <meta name=variant content=?2-3>
      6 <meta name=variant content=?4-last>
      7 <script src=/resources/testharness.js></script>
      8 <script src=/resources/testharnessreport.js></script>
      9 <script src=/common/subset-tests.js></script>
     10 <script src=/common/get-host-info.sub.js></script>
     11 <script src=/common/utils.js></script>
     12 <script src=resources/common.js></script>
     13 <script src=/common/dispatcher/dispatcher.js></script>
     14 <script>
     15 [
     16  {
     17    "title": "coop/coep",
     18    "coop": "same-origin",
     19    "coep": "require-corp",
     20    "opener": true
     21  },
     22  {
     23    "title": "no coop/coep",
     24    "coop": "",
     25    "coep": "require-corp",
     26    "opener": false
     27  },
     28  {
     29    "title": "coop/no coep",
     30    "coop": "same-origin",
     31    "coep": "",
     32    "opener": false
     33  },
     34  {
     35    "title": "no coop/no coep",
     36    "coop": "",
     37    "coep": "",
     38    "opener": false
     39  },
     40  {
     41    "title": "coop unsafe-none/coep",
     42    "coop": "unsafe-none",
     43    "coep": "require-corp",
     44    "opener": false
     45  },
     46  {
     47    "title": "coop unsafe-none/no coep",
     48    "coop": "unsafe-none",
     49    "coep": "",
     50    "opener": false
     51  }
     52 ].forEach((variant, i) => {
     53  // Only run specified variants
     54  if (!shouldRunSubTest(i)) {
     55    return;
     56  }
     57 
     58  ["same-origin", "same-site"].forEach(site => {
     59    const title = `Popup navigating to ${site} with ${variant.title}`;
     60    const responseToken = token();
     61    const iframeToken = token();
     62    const navigateHost = site === "same-origin" ? SAME_ORIGIN : SAME_SITE;
     63    const navigateURL = `${navigateHost.origin}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=${variant.coop}&coep=${variant.coep}&responseToken=${responseToken}&iframeToken=${iframeToken}`;
     64    const opener = site === "same-origin" ? variant.opener : false;
     65 
     66    promise_test(t => {
     67      // For each test we open a COOP: same-origin/COEP: require-corp document in a popup and then
     68      // navigate that to either a same-origin (site=="same-origin") or same-site (site=="same-site")
     69      // document whose COOP and COEP are set as per the top-most array. We then verify that this
     70      // document has the correct opener for its specific setup.
     71      return dispatcher_url_test(t, `${SAME_ORIGIN.origin}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=same-origin&coep=require-corp&navigate=${encodeURIComponent(navigateURL)}`, responseToken, iframeToken, opener, undefined, () => t.done());
     72    }, title);
     73  });
     74 });
     75 </script>