| Index: test/cctest/test-object-observe.cc
|
| diff --git a/test/cctest/test-object-observe.cc b/test/cctest/test-object-observe.cc
|
| index 37dde078fe97762bb0d720da3522d1f3194de330..07cc772df0eba845e7f489dbdcb7bf1960490f80 100644
|
| --- a/test/cctest/test-object-observe.cc
|
| +++ b/test/cctest/test-object-observe.cc
|
| @@ -885,3 +885,39 @@ TEST(UseCountObjectGetNotifier) {
|
| CompileRun("Object.getNotifier(obj)");
|
| CHECK_EQ(1, use_counts[v8::Isolate::kObjectObserve]);
|
| }
|
| +
|
| +
|
| +static bool NamedAccessCheckAlwaysAllow(Local<v8::Object> global,
|
| + Local<v8::Value> name,
|
| + v8::AccessType type,
|
| + Local<Value> data) {
|
| + return true;
|
| +}
|
| +
|
| +
|
| +TEST(DisallowObserveAccessCheckedObject) {
|
| + v8::Isolate* isolate = CcTest::isolate();
|
| + v8::HandleScope scope(isolate);
|
| + LocalContext env;
|
| + v8::Local<v8::ObjectTemplate> object_template =
|
| + v8::ObjectTemplate::New(isolate);
|
| + object_template->SetAccessCheckCallbacks(NamedAccessCheckAlwaysAllow, NULL);
|
| + env->Global()->Set(v8_str("obj"), object_template->NewInstance());
|
| + v8::TryCatch try_catch(isolate);
|
| + CompileRun("Object.observe(obj, function(){})");
|
| + CHECK(try_catch.HasCaught());
|
| +}
|
| +
|
| +
|
| +TEST(DisallowGetNotifierAccessCheckedObject) {
|
| + v8::Isolate* isolate = CcTest::isolate();
|
| + v8::HandleScope scope(isolate);
|
| + LocalContext env;
|
| + v8::Local<v8::ObjectTemplate> object_template =
|
| + v8::ObjectTemplate::New(isolate);
|
| + object_template->SetAccessCheckCallbacks(NamedAccessCheckAlwaysAllow, NULL);
|
| + env->Global()->Set(v8_str("obj"), object_template->NewInstance());
|
| + v8::TryCatch try_catch(isolate);
|
| + CompileRun("Object.getNotifier(obj)");
|
| + CHECK(try_catch.HasCaught());
|
| +}
|
|
|