// testharness file with ShadowRealm utilities to be imported inside ShadowRealm /** * Set up all properties on the ShadowRealm's global object that tests will * expect to be present. * * @param {string} queryString - string to use as value for location.search, * used for subsetting some tests * @param {function} fetchAdaptor - a function that takes a resource URI and * returns a function which itself takes a (resolve, reject) pair from the * hosting realm, and calls resolve with the text result of fetching the * resource, or reject with a string indicating the error that occurred */ globalThis.setShadowRealmGlobalProperties = function (queryString, fetchAdaptor) { globalThis.fetch_json = (resource) => { const executor = fetchAdaptor(resource); return new Promise(executor).then((s) => JSON.parse(s)); }; // Used only by idlharness.js globalThis.fetch_spec = (spec) => { const resource = `/interfaces/${spec}.idl`; const executor = fetchAdaptor(resource); return new Promise(executor).then( idl => ({ spec, idl }), () => { throw new IdlHarnessError(`Error fetching ${resource}.`); }); } globalThis.location = { search: queryString }; }; globalThis.GLOBAL = { isWindow: function() { return false; }, isWorker: function() { return false; }, isShadowRealm: function() { return true; }, };