-
Notifications
You must be signed in to change notification settings - Fork 3.2k
/
Copy pathtestharness-shadowrealm-inner.js
38 lines (34 loc) · 1.35 KB
/
testharness-shadowrealm-inner.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// 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; },
};