Index: include/v8.h |
diff --git a/include/v8.h b/include/v8.h |
index e6c97cc82699be5cad201b237c5c24f0f7b13303..03fd536262880b14589d5cb1c7f403ade12080de 100644 |
--- a/include/v8.h |
+++ b/include/v8.h |
@@ -3545,6 +3545,51 @@ typedef void (*NamedPropertyEnumeratorCallback)( |
const PropertyCallbackInfo<Array>& info); |
+// TODO(dcarney): Deprecate and remove previous typedefs, and replace |
+// GenericNamedPropertyFooCallback with just NamedPropertyFooCallback. |
+/** |
+ * GenericNamedProperty[Getter|Setter] are used as interceptors on object. |
+ * See ObjectTemplate::SetNamedPropertyHandler. |
+ */ |
+typedef void (*GenericNamedPropertyGetterCallback)( |
+ Local<Name> property, const PropertyCallbackInfo<Value>& info); |
+ |
+ |
+/** |
+ * Returns the value if the setter intercepts the request. |
+ * Otherwise, returns an empty handle. |
+ */ |
+typedef void (*GenericNamedPropertySetterCallback)( |
+ Local<Name> property, Local<Value> value, |
+ const PropertyCallbackInfo<Value>& info); |
+ |
+ |
+/** |
+ * Returns a non-empty handle if the interceptor intercepts the request. |
+ * The result is an integer encoding property attributes (like v8::None, |
+ * v8::DontEnum, etc.) |
+ */ |
+typedef void (*GenericNamedPropertyQueryCallback)( |
+ Local<Name> property, const PropertyCallbackInfo<Integer>& info); |
+ |
+ |
+/** |
+ * Returns a non-empty handle if the deleter intercepts the request. |
+ * The return value is true if the property could be deleted and false |
+ * otherwise. |
+ */ |
+typedef void (*GenericNamedPropertyDeleterCallback)( |
+ Local<Name> property, const PropertyCallbackInfo<Boolean>& info); |
+ |
+ |
+/** |
+ * Returns an array containing the names of the properties the named |
+ * property getter intercepts. |
+ */ |
+typedef void (*GenericNamedPropertyEnumeratorCallback)( |
+ const PropertyCallbackInfo<Array>& info); |
+ |
+ |
/** |
* Returns the value of the property if the getter intercepts the |
* request. Otherwise, returns an empty handle. |
@@ -3797,6 +3842,31 @@ class V8_EXPORT FunctionTemplate : public Template { |
}; |
+struct NamedPropertyHandlerConfiguration { |
+ NamedPropertyHandlerConfiguration( |
+ /** Note: getter is required **/ |
+ GenericNamedPropertyGetterCallback getter = 0, |
+ GenericNamedPropertySetterCallback setter = 0, |
+ GenericNamedPropertyQueryCallback query = 0, |
+ GenericNamedPropertyDeleterCallback deleter = 0, |
+ GenericNamedPropertyEnumeratorCallback enumerator = 0, |
+ Handle<Value> data = Handle<Value>()) |
+ : getter(getter), |
+ setter(setter), |
+ query(query), |
+ deleter(deleter), |
+ enumerator(enumerator), |
+ data(data) {} |
+ |
+ GenericNamedPropertyGetterCallback getter; |
+ GenericNamedPropertySetterCallback setter; |
+ GenericNamedPropertyQueryCallback query; |
+ GenericNamedPropertyDeleterCallback deleter; |
+ GenericNamedPropertyEnumeratorCallback enumerator; |
+ Handle<Value> data; |
+}; |
+ |
+ |
/** |
* An ObjectTemplate is used to create objects at runtime. |
* |
@@ -3866,6 +3936,9 @@ class V8_EXPORT ObjectTemplate : public Template { |
* from this object template, the provided callback is invoked instead of |
* accessing the property directly on the JavaScript object. |
* |
+ * Note that new code should use the second version that can intercept |
+ * symbol-named properties as well as string-named properties. |
+ * |
* \param getter The callback to invoke when getting a property. |
* \param setter The callback to invoke when setting a property. |
* \param query The callback to invoke to check if a property is present, |
@@ -3883,6 +3956,7 @@ class V8_EXPORT ObjectTemplate : public Template { |
NamedPropertyDeleterCallback deleter = 0, |
NamedPropertyEnumeratorCallback enumerator = 0, |
Handle<Value> data = Handle<Value>()); |
+ void SetHandler(const NamedPropertyHandlerConfiguration& configuration); |
/** |
* Sets an indexed property handler on the object template. |