45 lines
1 KiB
JavaScript
45 lines
1 KiB
JavaScript
"use strict";
|
|
|
|
const { addDebuggerToGlobal } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/jsdebugger.sys.mjs"
|
|
);
|
|
|
|
const SYSTEM_PRINCIPAL = Cc["@mozilla.org/systemprincipal;1"].createInstance(
|
|
Ci.nsIPrincipal
|
|
);
|
|
|
|
function addTestingFunctionsToGlobal(global) {
|
|
global.eval(
|
|
`
|
|
const testingFunctions = Cu.getJSTestingFunctions();
|
|
for (let k in testingFunctions) {
|
|
|
|
this[k] = testingFunctions[k];
|
|
}
|
|
`
|
|
);
|
|
if (!global.print) {
|
|
global.print = info;
|
|
}
|
|
if (!global.newGlobal) {
|
|
global.newGlobal = newGlobal;
|
|
}
|
|
if (!global.Debugger) {
|
|
addDebuggerToGlobal(global);
|
|
}
|
|
}
|
|
|
|
addTestingFunctionsToGlobal(this);
|
|
|
|
/* Create a new global, with all the JS shell testing functions. Similar to the
|
|
* newGlobal function exposed to JS shells, and useful for porting JS shell
|
|
* tests to xpcshell tests.
|
|
*/
|
|
function newGlobal(args) {
|
|
const global = new Cu.Sandbox(SYSTEM_PRINCIPAL, {
|
|
freshCompartment: true,
|
|
...args,
|
|
});
|
|
addTestingFunctionsToGlobal(global);
|
|
return global;
|
|
}
|