Chromium Code Reviews| 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( |