1
0
Fork 0
firefox/js/xpconnect/tests/unit/test_allowWaivers.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

29 lines
1.2 KiB
JavaScript

function checkWaivers(from, allowed) {
var sb = new Cu.Sandbox('http://example.com');
from.test = sb.eval('var o = {prop: 2, f: function() {return 42;}}; o');
// Make sure that |from| has Xrays to sb.
Assert.equal(from.eval('test.prop'), 2);
Assert.equal(from.eval('test.f'), undefined);
// Make sure that waivability works as expected.
Assert.equal(from.eval('!!test.wrappedJSObject'), allowed);
Assert.equal(from.eval('XPCNativeWrapper.unwrap(test) !== test'), allowed);
// Make a sandbox with the same principal as |from|, but without any waiver
// restrictions, and make sure that the waiver does not transfer.
var friend = new Cu.Sandbox(Cu.getObjectPrincipal(from));
friend.test = from.test;
friend.eval('var waived = test.wrappedJSObject;');
Assert.equal(friend.eval('waived.f()'), 42);
friend.from = from;
friend.eval('from.waived = waived');
Assert.equal(from.eval('!!waived.f'), allowed);
}
function run_test() {
checkWaivers(new Cu.Sandbox('http://example.com'), true);
checkWaivers(new Cu.Sandbox('http://example.com', {allowWaivers: false}), false);
checkWaivers(new Cu.Sandbox(['http://example.com']), true);
checkWaivers(new Cu.Sandbox(['http://example.com'], {allowWaivers: false}), false);
}