From 085bf78c703c3b60fb5b57136f21329d4245155c Mon Sep 17 00:00:00 2001 From: "rossberg@chromium.org" Date: Fri, 23 Nov 2012 15:43:54 +0000 Subject: [PATCH] Object.observe: Tests for __define{G,S}etter__. R=adamk@chromium.org,rafaelw@chromium.org BUG= Review URL: https://codereview.chromium.org/11348193 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13047 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- test/mjsunit/harmony/object-observe.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/test/mjsunit/harmony/object-observe.js b/test/mjsunit/harmony/object-observe.js index fbf4bf4..474bfcd 100644 --- a/test/mjsunit/harmony/object-observe.js +++ b/test/mjsunit/harmony/object-observe.js @@ -405,7 +405,12 @@ function TestObserveConfigurable(obj, prop) { Object.defineProperty(obj, prop, {get: frozenFunction, set: frozenFunction}); Object.defineProperty(obj, prop, {set: frozenFunction}); // ignored Object.defineProperty(obj, prop, {get: undefined, set: frozenFunction}); + obj.__defineSetter__(prop, frozenFunction); // ignored + obj.__defineSetter__(prop, function() {}); + obj.__defineGetter__(prop, function() {}); delete obj[prop]; + delete obj[prop]; // ignored + obj.__defineGetter__(prop, function() {}); delete obj[prop]; Object.defineProperty(obj, prop, {get: function() {}, configurable: true}); Object.defineProperty(obj, prop, {value: 9, writable: true}); @@ -427,6 +432,10 @@ function TestObserveConfigurable(obj, prop) { { object: obj, name: prop, type: "reconfigured" }, { object: obj, name: prop, type: "reconfigured" }, { object: obj, name: prop, type: "reconfigured" }, + { object: obj, name: prop, type: "reconfigured" }, + { object: obj, name: prop, type: "reconfigured" }, + { object: obj, name: prop, type: "deleted" }, + { object: obj, name: prop, type: "new" }, { object: obj, name: prop, type: "deleted" }, { object: obj, name: prop, type: "new" }, { object: obj, name: prop, type: "reconfigured" }, @@ -466,7 +475,11 @@ function TestObserveNonConfigurable(obj, prop) { function createProxy(create, x) { var handler = { getPropertyDescriptor: function(k) { - return Object.getOwnPropertyDescriptor(this.target, k); + for (var o = this.target; o; o = Object.getPrototypeOf(o)) { + var desc = Object.getOwnPropertyDescriptor(o, k); + if (desc) return desc; + } + return undefined; }, getOwnPropertyDescriptor: function(k) { return Object.getOwnPropertyDescriptor(this.target, k); -- 2.7.4