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;
}
add_task(function test_json_parse_with_source_xrays() {
let sandbox = new Cu.Sandbox("about:blank");
// Get rid of the extra global when experimental.json_parse_with_source pref is removed var g = newGlobal({ newCompartment: true });
Cu.evalInSandbox(`
let other = new Cu.Sandbox("about:blank");
let rawWrapper = other.eval('JSON.rawJSON(4.32)');
`, g); Assert.ok(g.eval("JSON.isRawJSON(rawWrapper);")); Assert.equal(Cu.evalInSandbox("JSON.stringify(rawWrapper)", g), "4.32");
// rawJSON is a data property, so the Xray should hide it Assert.equal(g.eval("rawWrapper.wrappedJSObject.rawJSON"), "4.32"); Assert.equal(g.eval("rawWrapper.rawJSON"), undefined);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.