Commit 1570d627 authored by rossberg@chromium.org's avatar rossberg@chromium.org

Object.observe/unobserve now return object

BUG=v8:2418

Review URL: https://codereview.chromium.org/11419078
Patch from Rafael Weinstein <rafaelw@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13009 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 75cb0246
...@@ -88,10 +88,10 @@ function ObjectObserve(object, callback) { ...@@ -88,10 +88,10 @@ function ObjectObserve(object, callback) {
} }
var changeObservers = objectInfo.changeObservers; var changeObservers = objectInfo.changeObservers;
if (changeObservers.indexOf(callback) >= 0) if (changeObservers.indexOf(callback) < 0)
return; changeObservers.push(callback);
changeObservers.push(callback); return object;
} }
function ObjectUnobserve(object, callback) { function ObjectUnobserve(object, callback) {
...@@ -102,14 +102,14 @@ function ObjectUnobserve(object, callback) { ...@@ -102,14 +102,14 @@ function ObjectUnobserve(object, callback) {
var objectInfo = objectInfoMap.get(object); var objectInfo = objectInfoMap.get(object);
if (IS_UNDEFINED(objectInfo)) if (IS_UNDEFINED(objectInfo))
return; return object;
var changeObservers = objectInfo.changeObservers; var changeObservers = objectInfo.changeObservers;
var index = changeObservers.indexOf(callback); var index = changeObservers.indexOf(callback);
if (index < 0) if (index >= 0)
return; changeObservers.splice(index, 1);
changeObservers.splice(index, 1); return object;
} }
function EnqueueChangeRecord(changeRecord, observers) { function EnqueueChangeRecord(changeRecord, observers) {
......
...@@ -98,10 +98,12 @@ Object.defineProperty(changeRecordWithAccessor, 'name', { ...@@ -98,10 +98,12 @@ Object.defineProperty(changeRecordWithAccessor, 'name', {
assertThrows(function() { Object.observe("non-object", observer.callback); }, TypeError); assertThrows(function() { Object.observe("non-object", observer.callback); }, TypeError);
assertThrows(function() { Object.observe(obj, nonFunction); }, TypeError); assertThrows(function() { Object.observe(obj, nonFunction); }, TypeError);
assertThrows(function() { Object.observe(obj, frozenFunction); }, TypeError); assertThrows(function() { Object.observe(obj, frozenFunction); }, TypeError);
assertEquals(obj, Object.observe(obj, observer.callback));
// Object.unobserve // Object.unobserve
assertThrows(function() { Object.unobserve(4, observer.callback); }, TypeError); assertThrows(function() { Object.unobserve(4, observer.callback); }, TypeError);
assertThrows(function() { Object.unobserve(obj, nonFunction); }, TypeError); assertThrows(function() { Object.unobserve(obj, nonFunction); }, TypeError);
assertEquals(obj, Object.unobserve(obj, observer.callback));
// Object.getNotifier // Object.getNotifier
var notifier = Object.getNotifier(obj); var notifier = Object.getNotifier(obj);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment