1
0
Fork 0
firefox/js/xpconnect/tests/unit/test_private_field_xrays.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

56 lines
1.1 KiB
JavaScript

'use strict';
add_task(async function () {
let webnav = Services.appShell.createWindowlessBrowser(false);
let docShell = webnav.docShell;
docShell.createAboutBlankDocumentViewer(null, null);
let window = webnav.document.defaultView;
let iframe = window.eval(`
iframe = document.createElement("iframe");
iframe.id = "iframe"
document.body.appendChild(iframe)
iframe`);
let unwrapped = Cu.waiveXrays(iframe);
class Base {
constructor(o) {
return o;
}
};
class A extends Base {
#x = 12;
static gx(o) {
return o.#x;
}
static sx(o, v) {
o.#x = v;
}
};
new A(iframe);
Assert.equal(A.gx(iframe), 12);
A.sx(iframe, 'wrapped');
// Shouldn't tunnel past xray.
Assert.throws(() => A.gx(unwrapped), TypeError);
Assert.throws(() => A.sx(unwrapped, 'unwrapped'), TypeError);
new A(unwrapped);
Assert.equal(A.gx(unwrapped), 12);
Assert.equal(A.gx(iframe), 'wrapped');
A.sx(iframe, 'modified');
Assert.equal(A.gx(unwrapped), 12);
A.sx(unwrapped, 16);
Assert.equal(A.gx(iframe), 'modified');
});