michael@0: function getter() { return 1; } michael@0: function setter() { } michael@0: function getDescriptor(name) { michael@0: if (name != 'prop') michael@0: throw "Unknown property: " + name; michael@0: return { configurable: true, enumerable: true, get: getter, set: setter }; michael@0: } michael@0: function getNames() { return ['prop']; } michael@0: var handler = { michael@0: getOwnPropertyDescriptor: getDescriptor, michael@0: getPropertyDescriptor: getDescriptor, michael@0: getOwnPropertyNames: getNames, michael@0: getPropertyNames: getNames, michael@0: defineProperty: function() {}, michael@0: delete: function() {} michael@0: }; michael@0: michael@0: // Make sure that __lookup{Getter,Setter}__ works on proxies. michael@0: var proxy = Proxy.create(handler); michael@0: assertEq(Object.prototype.__lookupGetter__.call(proxy, 'prop'), getter); michael@0: assertEq(Object.prototype.__lookupSetter__.call(proxy, 'prop'), setter);