opener-setter.window.js (1109B)
1 [ 2 undefined, 3 42, 4 function() { return "hi" }, 5 "hi", 6 {}, 7 [], 8 Symbol() 9 ].forEach(val => { 10 test(t => { 11 const frame = document.body.appendChild(document.createElement("iframe")), 12 win = frame.contentWindow; 13 t.add_cleanup(() => frame.remove()); 14 15 assert_own_property(win, "opener"); 16 assert_equals(win.opener, null); 17 const beforeDesc = Object.getOwnPropertyDescriptor(win, "opener"), 18 openerGet = beforeDesc.get, 19 openerSet = beforeDesc.set; 20 assert_own_property(beforeDesc, "get"); 21 assert_own_property(beforeDesc, "set"); 22 assert_true(beforeDesc.enumerable); 23 assert_true(beforeDesc.configurable); 24 25 win.opener = val; 26 assert_equals(win.opener, val); 27 assert_equals(openerGet(), null); 28 29 const desc = Object.getOwnPropertyDescriptor(win, "opener"); 30 assert_equals(desc.value, val); 31 assert_true(desc.writable); 32 assert_true(desc.enumerable); 33 assert_true(desc.configurable); 34 35 openerSet("x"); 36 assert_equals(win.opener, "x"); 37 }, "Setting window.opener to " + String(val)); // String() needed for symbols 38 });