Bug 1842428 - Part 2: Remove unused imports. r=mccr8
[gecko.git] / js / xpconnect / tests / unit / test_private_field_xrays.js
blob9cb973a27c703661193e9cb261bc623e3fdebb2f
1 'use strict';
3 add_task(async function () {
4   let webnav = Services.appShell.createWindowlessBrowser(false);
6   let docShell = webnav.docShell;
8   docShell.createAboutBlankContentViewer(null, null);
10   let window = webnav.document.defaultView;
12   let iframe = window.eval(`
13     iframe = document.createElement("iframe");
14     iframe.id = "iframe"
15     document.body.appendChild(iframe)
16     iframe`);
19   let unwrapped = Cu.waiveXrays(iframe);
22   class Base {
23     constructor(o) {
24       return o;
25     }
26   };
29   class A extends Base {
30     #x = 12;
31     static gx(o) {
32       return o.#x;
33     }
35     static sx(o, v) {
36       o.#x = v;
37     }
38   };
40   new A(iframe);
41   Assert.equal(A.gx(iframe), 12);
42   A.sx(iframe, 'wrapped');
44   // Shouldn't tunnel past xray.
45   Assert.throws(() => A.gx(unwrapped), TypeError);
46   Assert.throws(() => A.sx(unwrapped, 'unwrapped'), TypeError);
48   new A(unwrapped);
49   Assert.equal(A.gx(unwrapped), 12);
50   Assert.equal(A.gx(iframe), 'wrapped');
52   A.sx(iframe, 'modified');
53   Assert.equal(A.gx(unwrapped), 12);
54   A.sx(unwrapped, 16);
55   Assert.equal(A.gx(iframe), 'modified');
56 });