| Index: test/mjsunit/es7/object-observe.js
|
| diff --git a/test/mjsunit/es7/object-observe.js b/test/mjsunit/es7/object-observe.js
|
| index 20a2d160514ee554a9a091512d309a43a9ccd32a..923774dc7d26b2e100dea0c6b99206a42c1a42ec 100644
|
| --- a/test/mjsunit/es7/object-observe.js
|
| +++ b/test/mjsunit/es7/object-observe.js
|
| @@ -210,6 +210,31 @@ observer.assertCallbackRecords([
|
| { object: obj, name: 'bar', type: 'delete', expando2: 'str' }
|
| ]);
|
|
|
| +// Properties from prototype of synthetic change records are preserved
|
| +reset();
|
| +Object.observe(obj, observer.callback);
|
| +notifier = Object.getNotifier(obj);
|
| +var proto = {
|
| + type: 'update',
|
| + foo: 'bar'
|
| +};
|
| +var rec = Object.create(proto);
|
| +rec.oldValue = 3;
|
| +notifier.notify(rec);
|
| +
|
| +proto.type = 'delete';
|
| +rec.oldValue = 5;
|
| +
|
| +notifier.performChange('delete', function() {
|
| + return rec;
|
| +});
|
| +
|
| +Object.deliverChangeRecords(observer.callback);
|
| +observer.assertCallbackRecords([
|
| + { object: obj, type: 'update', foo: 'bar', oldValue: 3 },
|
| + { object: obj, type: 'delete', foo: 'bar', oldValue: 5 },
|
| +]);
|
| +
|
| // Non-string accept values are coerced to strings
|
| reset();
|
| Object.observe(obj, observer.callback, [true, 1, null, undefined]);
|
|
|