Index: include/v8.h |
diff --git a/include/v8.h b/include/v8.h |
index e6c14d5a903eafaf2e9f29463e3a24651ea13d45..9c45c1099185f8952851bd2031a2a9da076670ca 100644 |
--- a/include/v8.h |
+++ b/include/v8.h |
@@ -4687,6 +4687,29 @@ typedef void (*GenericNamedPropertyDeleterCallback)( |
typedef void (*GenericNamedPropertyEnumeratorCallback)( |
const PropertyCallbackInfo<Array>& info); |
+/** |
+ * Interceptor for defineProperty requests on an object. |
+ * |
+ * Use `info.GetReturnValue()` to indicate whether the request was intercepted |
+ * or not. If the definer successfully intercepts the request, i.e., if the |
+ * request should not be further executed, call |
+ * `info.GetReturnValue().Set(value)`. If the definer |
+ * did not intercept the request, i.e., if the request should be handled as |
+ * if no interceptor is present, do not not call `Set()`. |
+ * |
+ * \param property The name of the property for which the request was |
+ * intercepted. |
+ * \param desc The property descriptor which is used to define the |
+ * property if the request is not intercepted. |
+ * \param info Information about the intercepted request, such as |
+ * isolate, receiver, return value, or whether running in `'use strict'` mode. |
+ * See `PropertyCallbackInfo`. |
+ * |
+ * See also `ObjectTemplate::SetNamedPropertyHandler`. |
+ */ |
+typedef void (*GenericNamedPropertyDefinerCallback)( |
+ Local<Name> key, const PropertyDescriptor& desc, |
+ const PropertyCallbackInfo<Value>& info); |
/** |
* Returns the value of the property if the getter intercepts the |
@@ -4733,6 +4756,9 @@ typedef void (*IndexedPropertyDeleterCallback)( |
typedef void (*IndexedPropertyEnumeratorCallback)( |
const PropertyCallbackInfo<Array>& info); |
+typedef void (*IndexedPropertyDefinerCallback)( |
+ uint32_t index, const PropertyDescriptor& desc, |
+ const PropertyCallbackInfo<Value>& info); |
/** |
* Access type specification. |
@@ -4995,6 +5021,25 @@ struct NamedPropertyHandlerConfiguration { |
query(query), |
deleter(deleter), |
enumerator(enumerator), |
+ definer(0), |
+ data(data), |
+ flags(flags) {} |
+ |
+ NamedPropertyHandlerConfiguration( |
+ GenericNamedPropertyGetterCallback getter, |
+ GenericNamedPropertySetterCallback setter, |
+ GenericNamedPropertyQueryCallback query, |
+ GenericNamedPropertyDeleterCallback deleter, |
+ GenericNamedPropertyEnumeratorCallback enumerator, |
+ GenericNamedPropertyDefinerCallback definer, |
+ Local<Value> data = Local<Value>(), |
+ PropertyHandlerFlags flags = PropertyHandlerFlags::kNone) |
+ : getter(getter), |
+ setter(setter), |
+ query(query), |
+ deleter(deleter), |
+ enumerator(enumerator), |
+ definer(definer), |
data(data), |
flags(flags) {} |
@@ -5003,6 +5048,7 @@ struct NamedPropertyHandlerConfiguration { |
GenericNamedPropertyQueryCallback query; |
GenericNamedPropertyDeleterCallback deleter; |
GenericNamedPropertyEnumeratorCallback enumerator; |
+ GenericNamedPropertyDefinerCallback definer; |
Local<Value> data; |
PropertyHandlerFlags flags; |
}; |
@@ -5023,6 +5069,24 @@ struct IndexedPropertyHandlerConfiguration { |
query(query), |
deleter(deleter), |
enumerator(enumerator), |
+ definer(0), |
+ data(data), |
+ flags(flags) {} |
+ |
+ IndexedPropertyHandlerConfiguration( |
+ IndexedPropertyGetterCallback getter, |
+ IndexedPropertySetterCallback setter, IndexedPropertyQueryCallback query, |
+ IndexedPropertyDeleterCallback deleter, |
+ IndexedPropertyEnumeratorCallback enumerator, |
+ IndexedPropertyDefinerCallback definer, |
+ Local<Value> data = Local<Value>(), |
+ PropertyHandlerFlags flags = PropertyHandlerFlags::kNone) |
+ : getter(getter), |
+ setter(setter), |
+ query(query), |
+ deleter(deleter), |
+ enumerator(enumerator), |
+ definer(definer), |
data(data), |
flags(flags) {} |
@@ -5031,6 +5095,7 @@ struct IndexedPropertyHandlerConfiguration { |
IndexedPropertyQueryCallback query; |
IndexedPropertyDeleterCallback deleter; |
IndexedPropertyEnumeratorCallback enumerator; |
+ IndexedPropertyDefinerCallback definer; |
Local<Value> data; |
PropertyHandlerFlags flags; |
}; |