Index: test/cctest/test-api-interceptors.cc |
diff --git a/test/cctest/test-api-interceptors.cc b/test/cctest/test-api-interceptors.cc |
index 9680b4241b85213bc6e4f2a36b8580fc43c6c1bd..723b02fe61948a1ea3c80f9dec15e411aa823156 100644 |
--- a/test/cctest/test-api-interceptors.cc |
+++ b/test/cctest/test-api-interceptors.cc |
@@ -1816,6 +1816,43 @@ THREADED_TEST(PropertyDefinerCallbackForFreeze) { |
.FromJust()); |
} |
+// Check that the descriptor callback is not triggered for DefineProperty |
Franzi
2017/05/10 09:17:52
Is this description correct?
I thought we're skip
|
+// when bypass_interceptor = true |
+THREADED_TEST(DefinerCallbackWithoutDescriptorInterceptor) { |
+ v8::Isolate* isolate = CcTest::isolate(); |
+ v8::HandleScope scope(isolate); |
+ v8::Local<v8::ObjectTemplate> templ = ObjectTemplate::New(isolate); |
+ |
+ templ->SetHandler(v8::NamedPropertyHandlerConfiguration( |
+ nullptr, nullptr, PropertyDescriptorCallback, nullptr, nullptr, |
+ NotInterceptingPropertyDefineCallback)); |
Franzi
2017/05/10 09:17:52
This tests seems to make more sense if you set an
|
+ |
+ LocalContext context; |
+ v8::Local<v8::Name> p; |
+ |
+ v8::Local<v8::Object> obj = |
+ templ->NewInstance(context.local()).ToLocalChecked(); |
+ |
+ descriptor_was_called = 0; |
+ |
+ // bypass_interceptor = false (default) triggers the descriptor callback |
+ // Use a generic descriptor. |
+ v8::PropertyDescriptor desc_generic; |
+ |
+ p = v8_str("v1"); |
+ |
+ CHECK(obj->DefineProperty(context.local(), p, desc_generic).FromJust()); |
+ CHECK_EQ(1, descriptor_was_called); |
+ |
+ descriptor_was_called = 0; |
+ |
+ // bypass_interceptor = true does not trigger the descriptor callback |
+ p = v8_str("v2"); |
Franzi
2017/05/10 09:17:52
Why are you using a different p here?
|
+ |
+ CHECK(obj->DefineProperty(context.local(), p, desc_generic, true).FromJust()); |
+ CHECK_EQ(0, descriptor_was_called); |
+} |
+ |
// Check that the descriptor passed to the callback is enumerable. |
namespace { |
void CheckEnumerablePropertyDefineCallback( |