window-opener-unconfigurable.window.js (872B)
1 test(t => { 2 let desc = Object.getOwnPropertyDescriptor(self, "opener"); 3 assert_true(!!desc.get, "Initially {get: function}"); 4 assert_true(!!desc.set, "Initially {set: function}"); 5 assert_true(desc.configurable, "Initially {configurable: true}"); 6 assert_true(desc.enumerable, "Initially {enumerable: true}"); 7 8 Object.defineProperty(self, "opener", {configurable: false}); 9 10 desc = Object.getOwnPropertyDescriptor(self, "opener"); 11 assert_true(!!desc.get, "Still has {get: function}"); 12 assert_true(!!desc.set, "Still has {set: function}"); 13 assert_false(desc.configurable, "Changed to {configurable: false}"); 14 assert_true(desc.enumerable, "Still has {enumerable: true}"); 15 16 assert_throws_js(TypeError, () => self.opener = "something", "Throws a TypeError due to {configurable: false}"); 17 }, "Corner case: self.opener is set while it's not configurable");