}
var changeObservers = objectInfo.changeObservers;
- if (changeObservers.indexOf(callback) >= 0)
- return;
+ if (changeObservers.indexOf(callback) < 0)
+ changeObservers.push(callback);
- changeObservers.push(callback);
+ return object;
}
function ObjectUnobserve(object, callback) {
var objectInfo = objectInfoMap.get(object);
if (IS_UNDEFINED(objectInfo))
- return;
+ return object;
var changeObservers = objectInfo.changeObservers;
var index = changeObservers.indexOf(callback);
- if (index < 0)
- return;
+ if (index >= 0)
+ changeObservers.splice(index, 1);
- changeObservers.splice(index, 1);
+ return object;
}
function EnqueueChangeRecord(changeRecord, observers) {
assertThrows(function() { Object.observe("non-object", observer.callback); }, TypeError);
assertThrows(function() { Object.observe(obj, nonFunction); }, TypeError);
assertThrows(function() { Object.observe(obj, frozenFunction); }, TypeError);
+assertEquals(obj, Object.observe(obj, observer.callback));
// Object.unobserve
assertThrows(function() { Object.unobserve(4, observer.callback); }, TypeError);
assertThrows(function() { Object.unobserve(obj, nonFunction); }, TypeError);
+assertEquals(obj, Object.unobserve(obj, observer.callback));
// Object.getNotifier
var notifier = Object.getNotifier(obj);