tor-browser

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

browser_json_refresh.js (3225B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 const TEST_JSON_FILE = "simple_json.json";
      7 
      8 add_task(async function () {
      9  info("Test JSON refresh started");
     10 
     11  // generate file:// URI for JSON file and load in new tab
     12  const dir = getChromeDir(getResolvedURI(gTestPath));
     13  dir.append(TEST_JSON_FILE);
     14  dir.normalize();
     15  const uri = Services.io.newFileURI(dir);
     16  const tab = await addJsonViewTab(uri.spec);
     17 
     18  // perform sanity checks for URI and principals in loadInfo
     19  await SpecialPowers.spawn(
     20    tab.linkedBrowser,
     21    [{ TEST_JSON_FILE }],
     22    // eslint-disable-next-line no-shadow
     23    async function ({ TEST_JSON_FILE }) {
     24      const channel = content.docShell.currentDocumentChannel;
     25      const channelURI = channel.URI.spec;
     26      ok(
     27        channelURI.startsWith("file://") && channelURI.includes(TEST_JSON_FILE),
     28        "sanity: correct channel uri"
     29      );
     30      const contentPolicyType = channel.loadInfo.externalContentPolicyType;
     31      is(
     32        contentPolicyType,
     33        Ci.nsIContentPolicy.TYPE_DOCUMENT,
     34        "sanity: correct contentPolicyType"
     35      );
     36 
     37      const loadingPrincipal = channel.loadInfo.loadingPrincipal;
     38      is(loadingPrincipal, null, "sanity: correct loadingPrincipal");
     39      const triggeringPrincipal = channel.loadInfo.triggeringPrincipal;
     40      ok(
     41        triggeringPrincipal.isSystemPrincipal,
     42        "sanity: correct triggeringPrincipal"
     43      );
     44      const principalToInherit = channel.loadInfo.principalToInherit;
     45      ok(
     46        principalToInherit.isNullPrincipal,
     47        "sanity: correct principalToInherit"
     48      );
     49      is(
     50        content.document.nodePrincipal.origin,
     51        "resource://devtools",
     52        "sanity: correct doc.nodePrincipal"
     53      );
     54    }
     55  );
     56 
     57  // reload the tab
     58  await reloadBrowser();
     59 
     60  // check principals in loadInfo are still correct
     61  await SpecialPowers.spawn(
     62    tab.linkedBrowser,
     63    [{ TEST_JSON_FILE }],
     64    // eslint-disable-next-line no-shadow
     65    async function ({ TEST_JSON_FILE }) {
     66      // eslint-disable-line
     67      const channel = content.docShell.currentDocumentChannel;
     68      const channelURI = channel.URI.spec;
     69      ok(
     70        channelURI.startsWith("file://") && channelURI.includes(TEST_JSON_FILE),
     71        "reloaded: correct channel uri"
     72      );
     73      const contentPolicyType = channel.loadInfo.externalContentPolicyType;
     74      is(
     75        contentPolicyType,
     76        Ci.nsIContentPolicy.TYPE_DOCUMENT,
     77        "reloaded: correct contentPolicyType"
     78      );
     79 
     80      const loadingPrincipal = channel.loadInfo.loadingPrincipal;
     81      is(loadingPrincipal, null, "reloaded: correct loadingPrincipal");
     82      const triggeringPrincipal = channel.loadInfo.triggeringPrincipal;
     83      ok(
     84        triggeringPrincipal.isSystemPrincipal,
     85        "reloaded: correct triggeringPrincipal"
     86      );
     87      const principalToInherit = channel.loadInfo.principalToInherit;
     88      ok(
     89        principalToInherit.isNullPrincipal,
     90        "sanity: correct principalToInherit"
     91      );
     92      is(
     93        content.document.nodePrincipal.origin,
     94        "resource://devtools",
     95        "reloaded: correct doc.nodePrincipal"
     96      );
     97    }
     98  );
     99 });