1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/proxy/testDirectProxyDefineProperty2.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,35 @@ 1.4 +/* 1.5 + * Call the trap with the handler as the this value, the target as the first 1.6 + * argument, the name of the property as the second argument, and the descriptor 1.7 + * as the third argument. 1.8 + */ 1.9 +var target = {}; 1.10 +var called = false; 1.11 +var handler = { 1.12 + defineProperty: function (target1, name, desc1) { 1.13 + assertEq(this, handler); 1.14 + assertEq(target1, target); 1.15 + assertEq(name, 'foo'); 1.16 + assertEq(desc1 == desc, false); 1.17 + assertEq(desc1.value, 'bar'); 1.18 + assertEq(desc1.writable, true); 1.19 + assertEq(desc1.enumerable, false); 1.20 + assertEq(desc1.configurable, true); 1.21 + called = true; 1.22 + } 1.23 +} 1.24 +var desc = { 1.25 + value: 'bar', 1.26 + writable: true, 1.27 + enumerable: false, 1.28 + configurable: true 1.29 +}; 1.30 + 1.31 +var p = new Proxy(target, handler); 1.32 +Object.defineProperty(p, 'foo', desc); 1.33 +assertEq(called, true); 1.34 +assertEq(Object.isExtensible(target), true); 1.35 +assertEq(Object.isExtensible(p), true); 1.36 +Object.preventExtensions(target); 1.37 +assertEq(Object.isExtensible(target), false); 1.38 +assertEq(Object.isExtensible(p), false);