freeze-builtins.js (942B)
1 var g = newGlobal({freezeBuiltins: true}); 2 3 g.evaluate("" + function checkFrozen(name) { 4 // Check constructor on the global is non-writable/non-configurable. 5 let desc = Object.getOwnPropertyDescriptor(this, name); 6 assertEq(desc.writable, false); 7 assertEq(desc.configurable, false); 8 9 // Constructor must be frozen. 10 let ctor = desc.value; 11 assertEq(Object.isFrozen(ctor), true); 12 13 // Prototype must be sealed. 14 if (ctor.prototype) { 15 assertEq(Object.isSealed(ctor.prototype), true); 16 } 17 }); 18 19 g.checkFrozen("Object"); 20 g.checkFrozen("Array"); 21 g.checkFrozen("Function"); 22 23 g.checkFrozen("ArrayBuffer"); 24 g.checkFrozen("Int32Array"); 25 g.checkFrozen("Number"); 26 g.checkFrozen("String"); 27 g.checkFrozen("Proxy"); 28 g.checkFrozen("Promise"); 29 g.checkFrozen("RegExp"); 30 g.checkFrozen("Map"); 31 g.checkFrozen("WeakMap"); 32 g.checkFrozen("WeakRef"); 33 g.checkFrozen("Error"); 34 g.checkFrozen("TypeError"); 35 36 g.checkFrozen("JSON"); 37 g.checkFrozen("Math");