Re-enable Object.observe and add enforcement for security invariants.
authorrafaelw@chromium.org <rafaelw@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 2 May 2014 13:55:11 +0000 (13:55 +0000)
committerrafaelw@chromium.org <rafaelw@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 2 May 2014 13:55:11 +0000 (13:55 +0000)
commit1b270ef5ea3aeb76633fe52ab0ec6ae4d9d811f0
treecd9e56d4b16c385f89c1c58d7a91774b5ea32f60
parentd76ad1691c30514ff28717538290fa6e5f82c719
Re-enable Object.observe and add enforcement for security invariants.

This patch reverts r21062 which disabled Object.observe and the relevant tests.

It also adds enforcement for the following three invariants:

1) No observer may receive a change record describing changes to an object which is in different security origin (context have differing security tokens)

2) No observer may receive a change record whose context's security token is different from that of the object described by the change.

3) Object.getNotifier will return null if the caller and the provided object are in differing security origins

Further, it ensures that the global object can never be observed nor a notifier retrieved for it.

Tests are included.
R=verwaest@chromium.org, rossberg
LOG=Y

Review URL: https://codereview.chromium.org/265503002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21122 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
src/api.cc
src/messages.js
src/object-observe.js
src/objects.cc
src/objects.h
src/runtime.cc
src/runtime.h
test/cctest/cctest.status
test/cctest/test-object-observe.cc
test/mjsunit/es7/object-observe.js
test/mjsunit/mjsunit.status