tor-browser

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

test-access-property.js (2107B)


      1 const same_origin = get_host_info().HTTPS_ORIGIN;
      2 const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
      3 
      4 const origin = [
      5  ["same-origin" , same_origin ],
      6  ["cross-origin", cross_origin],
      7 ];
      8 let escapeComma = url => url.replace(/,/g, '\\,');
      9 
     10 let testAccessProperty = (
     11  property,
     12  op,
     13  expectReport = true,
     14  use_restrict_properties = false,
     15 ) => {
     16  origin.forEach(([origin_name, origin]) => {
     17    promise_test(async t => {
     18      const this_window_token = token();
     19 
     20      // The opener window:
     21      const opener_token = token();
     22      const opener_url = get_host_info().HTTP_ORIGIN + executor_path +
     23        `&uuid=${opener_token}`;
     24 
     25      // The openee window:
     26      const openee_token = token();
     27      const openee_report_token = token();
     28      const openee_report_to = reportToHeaders(openee_report_token);
     29      const coop_ro_header =
     30        use_restrict_properties
     31          ? openee_report_to.coopReportOnlyRestrictPropertiesHeader
     32          : openee_report_to.coopReportOnlySameOriginHeader;
     33      const openee_url = origin + executor_path + openee_report_to.header +
     34        coop_ro_header + coep_header + `&uuid=${openee_token}`;
     35 
     36      t.add_cleanup(() => {
     37        send(opener_token, "window.close()")
     38        send(openee_token, "window.close()")
     39      });
     40 
     41      // Open the two windows. Wait for them to be loaded.
     42      window.open(opener_url);
     43      send(opener_token, `
     44        window.openee = window.open('${escapeComma(openee_url)}');
     45      `);
     46      send(openee_token, `send("${this_window_token}", "Ready");`);
     47      assert_equals(await receive(this_window_token), "Ready");
     48 
     49      // 2. Try to access the openee.
     50      send(opener_token, `(${op})(openee);`);
     51 
     52      // 3. Fetch reports sent to the openee.
     53      let report = await receiveReport(openee_report_token,
     54        "access-to-coop-page-from-opener");
     55      if (expectReport) {
     56        assert_equals(report.body.property, property);
     57      } else {
     58        // "timeout" should be returned if no such reports are received.
     59        assert_equals(report, "timeout");
     60      }
     61 
     62 
     63    }, `${origin_name} > ${op}`);
     64  })
     65 };