@@ -885,3 +885,39 @@ TEST(UseCountObjectGetNotifier) {
885885 CompileRun (" Object.getNotifier(obj)" );
886886 CHECK_EQ (1 , use_counts[v8::Isolate::kObjectObserve ]);
887887}
888+
889+
890+ static bool NamedAccessCheckAlwaysAllow (Local<v8::Object> global,
891+ Local<v8::Value> name,
892+ v8::AccessType type,
893+ Local<Value> data) {
894+ return true ;
895+ }
896+
897+
898+ TEST (DisallowObserveAccessCheckedObject) {
899+ v8::Isolate* isolate = CcTest::isolate ();
900+ v8::HandleScope scope (isolate);
901+ LocalContext env;
902+ v8::Local<v8::ObjectTemplate> object_template =
903+ v8::ObjectTemplate::New (isolate);
904+ object_template->SetAccessCheckCallbacks (NamedAccessCheckAlwaysAllow, NULL );
905+ env->Global ()->Set (v8_str (" obj" ), object_template->NewInstance ());
906+ v8::TryCatch try_catch (isolate);
907+ CompileRun (" Object.observe(obj, function(){})" );
908+ CHECK (try_catch.HasCaught ());
909+ }
910+
911+
912+ TEST (DisallowGetNotifierAccessCheckedObject) {
913+ v8::Isolate* isolate = CcTest::isolate ();
914+ v8::HandleScope scope (isolate);
915+ LocalContext env;
916+ v8::Local<v8::ObjectTemplate> object_template =
917+ v8::ObjectTemplate::New (isolate);
918+ object_template->SetAccessCheckCallbacks (NamedAccessCheckAlwaysAllow, NULL );
919+ env->Global ()->Set (v8_str (" obj" ), object_template->NewInstance ());
920+ v8::TryCatch try_catch (isolate);
921+ CompileRun (" Object.getNotifier(obj)" );
922+ CHECK (try_catch.HasCaught ());
923+ }
0 commit comments