| Index: test/mjsunit/harmony/object-observe.js
|
| diff --git a/test/mjsunit/harmony/object-observe.js b/test/mjsunit/harmony/object-observe.js
|
| index 6868cbf4dc52c425b41fa3d6e9e07c10faf2f12b..fb15a1fa835a06f5211f880938dbe1be03901c57 100644
|
| --- a/test/mjsunit/harmony/object-observe.js
|
| +++ b/test/mjsunit/harmony/object-observe.js
|
| @@ -976,40 +976,16 @@ observer.assertNotCalled();
|
|
|
|
|
| // Test all kinds of objects generically.
|
| -function TestObserveConfigurable(obj, prop, is_writable) {
|
| +function TestObserveConfigurable(obj, prop) {
|
| reset();
|
| - var valueWhenDeleted = is_writable ? 3 : obj[prop];
|
| Object.observe(obj, observer.callback);
|
| Object.unobserve(obj, observer.callback);
|
| obj[prop] = 1;
|
| Object.observe(obj, observer.callback);
|
| obj[prop] = 2;
|
| - obj[prop] = valueWhenDeleted;
|
| + obj[prop] = 3;
|
| delete obj[prop];
|
| - // If the deleted obj[prop] exposed another 'prop' along the
|
| - // prototype chain, only update it if it doesn't have an
|
| - // (inheritable) accessor or it is a read-only data property. If
|
| - // either of those is true, then instead create an own property with
|
| - // the descriptor that [[Put]] mandates for a new property (ES-5.1,
|
| - // 8.12.5.6)
|
| - var createOwnProperty = false;
|
| - for (var o = Object.getPrototypeOf(obj); o; o = Object.getPrototypeOf(o)) {
|
| - var desc = Object.getOwnPropertyDescriptor(o, prop);
|
| - if (desc) {
|
| - if (!desc.writable)
|
| - createOwnProperty = true;
|
| - break;
|
| - }
|
| - }
|
| - if (createOwnProperty)
|
| - Object.defineProperty(obj, prop, {
|
| - value: 4,
|
| - writable: true,
|
| - enumerable: true,
|
| - configurable: true
|
| - });
|
| - else
|
| - obj[prop] = 4;
|
| + obj[prop] = 4;
|
| obj[prop] = 4; // ignored
|
| obj[prop] = 5;
|
| Object.defineProperty(obj, prop, {value: 6});
|
| @@ -1039,9 +1015,10 @@ function TestObserveConfigurable(obj, prop, is_writable) {
|
| delete obj[prop];
|
| Object.defineProperty(obj, prop, {value: 11, configurable: true});
|
| Object.deliverChangeRecords(observer.callback);
|
| -
|
| - var expected = [
|
| - { object: obj, name: prop, type: "delete", oldValue: valueWhenDeleted },
|
| + observer.assertCallbackRecords([
|
| + { object: obj, name: prop, type: "update", oldValue: 1 },
|
| + { object: obj, name: prop, type: "update", oldValue: 2 },
|
| + { object: obj, name: prop, type: "delete", oldValue: 3 },
|
| { object: obj, name: prop, type: "add" },
|
| { object: obj, name: prop, type: "update", oldValue: 4 },
|
| { object: obj, name: prop, type: "update", oldValue: 5 },
|
| @@ -1065,15 +1042,7 @@ function TestObserveConfigurable(obj, prop, is_writable) {
|
| { object: obj, name: prop, type: "update", oldValue: 12 },
|
| { object: obj, name: prop, type: "delete", oldValue: 36 },
|
| { object: obj, name: prop, type: "add" },
|
| - ];
|
| -
|
| - if (is_writable) {
|
| - expected.unshift(
|
| - { object: obj, name: prop, type: "update", oldValue: 1 },
|
| - { object: obj, name: prop, type: "update", oldValue: 2 });
|
| - }
|
| -
|
| - observer.assertCallbackRecords(expected);
|
| + ]);
|
| Object.unobserve(obj, observer.callback);
|
| delete obj[prop];
|
| }
|
| @@ -1175,7 +1144,7 @@ for (var i in objects) for (var j in properties) {
|
| var desc = Object.getOwnPropertyDescriptor(obj, prop);
|
| print("***", typeof obj, stringifyNoThrow(obj), prop);
|
| if (!desc || desc.configurable)
|
| - TestObserveConfigurable(obj, prop, !desc || desc.writable);
|
| + TestObserveConfigurable(obj, prop);
|
| else if (desc.writable)
|
| TestObserveNonConfigurable(obj, prop, desc);
|
| }
|
|
|