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) {
}
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) {
......@@ -102,14 +102,14 @@ 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) {
......
......@@ -98,10 +98,12 @@ Object.defineProperty(changeRecordWithAccessor, 'name', {
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);
......
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