tor-browser

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

testharness-shadowrealm-inner.js (1382B)


      1 // testharness file with ShadowRealm utilities to be imported inside ShadowRealm
      2 
      3 /**
      4 * Set up all properties on the ShadowRealm's global object that tests will
      5 * expect to be present.
      6 *
      7 * @param {string} queryString - string to use as value for location.search,
      8 *   used for subsetting some tests
      9 * @param {function} fetchAdaptor - a function that takes a resource URI and
     10 *   returns a function which itself takes a (resolve, reject) pair from the
     11 *   hosting realm, and calls resolve with the text result of fetching the
     12 *   resource, or reject with a string indicating the error that occurred
     13 */
     14 globalThis.setShadowRealmGlobalProperties = function (queryString, fetchAdaptor) {
     15  globalThis.fetch_json = (resource) => {
     16    const executor = fetchAdaptor(resource);
     17    return new Promise(executor).then((s) => JSON.parse(s));
     18  };
     19 
     20  // Used only by idlharness.js
     21  globalThis.fetch_spec = (spec) => {
     22    const resource = `/interfaces/${spec}.idl`;
     23    const executor = fetchAdaptor(resource);
     24    return new Promise(executor).then(
     25      idl => ({ spec, idl }),
     26      () => {
     27        throw new IdlHarnessError(`Error fetching ${resource}.`);
     28      });
     29  }
     30 
     31  globalThis.location = { search: queryString };
     32 };
     33 
     34 globalThis.GLOBAL = {
     35  isWindow: function() { return false; },
     36  isWorker: function() { return false; },
     37  isShadowRealm: function() { return true; },
     38 };