| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 Object.defineProperty(obj, prop, {writable: false}); | 398 Object.defineProperty(obj, prop, {writable: false}); |
| 399 obj[prop] = 7; // ignored | 399 obj[prop] = 7; // ignored |
| 400 Object.defineProperty(obj, prop, {value: 8}); | 400 Object.defineProperty(obj, prop, {value: 8}); |
| 401 Object.defineProperty(obj, prop, {value: 7, writable: true}); | 401 Object.defineProperty(obj, prop, {value: 7, writable: true}); |
| 402 Object.defineProperty(obj, prop, {get: function() {}}); | 402 Object.defineProperty(obj, prop, {get: function() {}}); |
| 403 Object.defineProperty(obj, prop, {get: frozenFunction}); | 403 Object.defineProperty(obj, prop, {get: frozenFunction}); |
| 404 Object.defineProperty(obj, prop, {get: frozenFunction}); // ignored | 404 Object.defineProperty(obj, prop, {get: frozenFunction}); // ignored |
| 405 Object.defineProperty(obj, prop, {get: frozenFunction, set: frozenFunction}); | 405 Object.defineProperty(obj, prop, {get: frozenFunction, set: frozenFunction}); |
| 406 Object.defineProperty(obj, prop, {set: frozenFunction}); // ignored | 406 Object.defineProperty(obj, prop, {set: frozenFunction}); // ignored |
| 407 Object.defineProperty(obj, prop, {get: undefined, set: frozenFunction}); | 407 Object.defineProperty(obj, prop, {get: undefined, set: frozenFunction}); |
| 408 obj.__defineSetter__(prop, frozenFunction); // ignored |
| 409 obj.__defineSetter__(prop, function() {}); |
| 410 obj.__defineGetter__(prop, function() {}); |
| 408 delete obj[prop]; | 411 delete obj[prop]; |
| 412 delete obj[prop]; // ignored |
| 413 obj.__defineGetter__(prop, function() {}); |
| 409 delete obj[prop]; | 414 delete obj[prop]; |
| 410 Object.defineProperty(obj, prop, {get: function() {}, configurable: true}); | 415 Object.defineProperty(obj, prop, {get: function() {}, configurable: true}); |
| 411 Object.defineProperty(obj, prop, {value: 9, writable: true}); | 416 Object.defineProperty(obj, prop, {value: 9, writable: true}); |
| 412 obj[prop] = 10; | 417 obj[prop] = 10; |
| 413 delete obj[prop]; | 418 delete obj[prop]; |
| 414 Object.defineProperty(obj, prop, {value: 11, configurable: true}); | 419 Object.defineProperty(obj, prop, {value: 11, configurable: true}); |
| 415 Object.deliverChangeRecords(observer.callback); | 420 Object.deliverChangeRecords(observer.callback); |
| 416 observer.assertCallbackRecords([ | 421 observer.assertCallbackRecords([ |
| 417 { object: obj, name: prop, type: "updated", oldValue: 1 }, | 422 { object: obj, name: prop, type: "updated", oldValue: 1 }, |
| 418 { object: obj, name: prop, type: "updated", oldValue: 2 }, | 423 { object: obj, name: prop, type: "updated", oldValue: 2 }, |
| 419 { object: obj, name: prop, type: "deleted", oldValue: 3 }, | 424 { object: obj, name: prop, type: "deleted", oldValue: 3 }, |
| 420 { object: obj, name: prop, type: "new" }, | 425 { object: obj, name: prop, type: "new" }, |
| 421 { object: obj, name: prop, type: "updated", oldValue: 4 }, | 426 { object: obj, name: prop, type: "updated", oldValue: 4 }, |
| 422 { object: obj, name: prop, type: "updated", oldValue: 5 }, | 427 { object: obj, name: prop, type: "updated", oldValue: 5 }, |
| 423 { object: obj, name: prop, type: "reconfigured", oldValue: 6 }, | 428 { object: obj, name: prop, type: "reconfigured", oldValue: 6 }, |
| 424 { object: obj, name: prop, type: "updated", oldValue: 6 }, | 429 { object: obj, name: prop, type: "updated", oldValue: 6 }, |
| 425 { object: obj, name: prop, type: "reconfigured", oldValue: 8 }, | 430 { object: obj, name: prop, type: "reconfigured", oldValue: 8 }, |
| 426 { object: obj, name: prop, type: "reconfigured", oldValue: 7 }, | 431 { object: obj, name: prop, type: "reconfigured", oldValue: 7 }, |
| 427 { object: obj, name: prop, type: "reconfigured" }, | 432 { object: obj, name: prop, type: "reconfigured" }, |
| 428 { object: obj, name: prop, type: "reconfigured" }, | 433 { object: obj, name: prop, type: "reconfigured" }, |
| 429 { object: obj, name: prop, type: "reconfigured" }, | 434 { object: obj, name: prop, type: "reconfigured" }, |
| 435 { object: obj, name: prop, type: "reconfigured" }, |
| 436 { object: obj, name: prop, type: "reconfigured" }, |
| 430 { object: obj, name: prop, type: "deleted" }, | 437 { object: obj, name: prop, type: "deleted" }, |
| 431 { object: obj, name: prop, type: "new" }, | 438 { object: obj, name: prop, type: "new" }, |
| 439 { object: obj, name: prop, type: "deleted" }, |
| 440 { object: obj, name: prop, type: "new" }, |
| 432 { object: obj, name: prop, type: "reconfigured" }, | 441 { object: obj, name: prop, type: "reconfigured" }, |
| 433 { object: obj, name: prop, type: "updated", oldValue: 9 }, | 442 { object: obj, name: prop, type: "updated", oldValue: 9 }, |
| 434 { object: obj, name: prop, type: "deleted", oldValue: 10 }, | 443 { object: obj, name: prop, type: "deleted", oldValue: 10 }, |
| 435 { object: obj, name: prop, type: "new" }, | 444 { object: obj, name: prop, type: "new" }, |
| 436 ]); | 445 ]); |
| 437 Object.unobserve(obj, observer.callback); | 446 Object.unobserve(obj, observer.callback); |
| 438 delete obj[prop]; | 447 delete obj[prop]; |
| 439 } | 448 } |
| 440 | 449 |
| 441 function TestObserveNonConfigurable(obj, prop) { | 450 function TestObserveNonConfigurable(obj, prop) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 459 { object: obj, name: prop, type: "updated", oldValue: 5 }, | 468 { object: obj, name: prop, type: "updated", oldValue: 5 }, |
| 460 { object: obj, name: prop, type: "updated", oldValue: 6 }, | 469 { object: obj, name: prop, type: "updated", oldValue: 6 }, |
| 461 { object: obj, name: prop, type: "reconfigured", oldValue: 7 }, | 470 { object: obj, name: prop, type: "reconfigured", oldValue: 7 }, |
| 462 ]); | 471 ]); |
| 463 Object.unobserve(obj, observer.callback); | 472 Object.unobserve(obj, observer.callback); |
| 464 } | 473 } |
| 465 | 474 |
| 466 function createProxy(create, x) { | 475 function createProxy(create, x) { |
| 467 var handler = { | 476 var handler = { |
| 468 getPropertyDescriptor: function(k) { | 477 getPropertyDescriptor: function(k) { |
| 469 return Object.getOwnPropertyDescriptor(this.target, k); | 478 for (var o = this.target; o; o = Object.getPrototypeOf(o)) { |
| 479 var desc = Object.getOwnPropertyDescriptor(o, k); |
| 480 if (desc) return desc; |
| 481 } |
| 482 return undefined; |
| 470 }, | 483 }, |
| 471 getOwnPropertyDescriptor: function(k) { | 484 getOwnPropertyDescriptor: function(k) { |
| 472 return Object.getOwnPropertyDescriptor(this.target, k); | 485 return Object.getOwnPropertyDescriptor(this.target, k); |
| 473 }, | 486 }, |
| 474 defineProperty: function(k, desc) { | 487 defineProperty: function(k, desc) { |
| 475 var x = Object.defineProperty(this.target, k, desc); | 488 var x = Object.defineProperty(this.target, k, desc); |
| 476 Object.deliverChangeRecords(this.callback); | 489 Object.deliverChangeRecords(this.callback); |
| 477 return x; | 490 return x; |
| 478 }, | 491 }, |
| 479 delete: function(k) { | 492 delete: function(k) { |
| (...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 791 Object.observe(dummy, observer.callback); | 804 Object.observe(dummy, observer.callback); |
| 792 Object.unobserve(dummy, observer.callback); | 805 Object.unobserve(dummy, observer.callback); |
| 793 var array = [0]; | 806 var array = [0]; |
| 794 Object.observe(array, observer.callback); | 807 Object.observe(array, observer.callback); |
| 795 array.splice(0, 1); | 808 array.splice(0, 1); |
| 796 Object.deliverChangeRecords(observer.callback); | 809 Object.deliverChangeRecords(observer.callback); |
| 797 observer.assertCallbackRecords([ | 810 observer.assertCallbackRecords([ |
| 798 { object: array, name: '0', type: 'deleted', oldValue: 0 }, | 811 { object: array, name: '0', type: 'deleted', oldValue: 0 }, |
| 799 { object: array, name: 'length', type: 'updated', oldValue: 1}, | 812 { object: array, name: 'length', type: 'updated', oldValue: 1}, |
| 800 ]); | 813 ]); |
| OLD | NEW |