| Index: gin/object_template_builder.h
|
| diff --git a/gin/object_template_builder.h b/gin/object_template_builder.h
|
| index 6367b71245c81dbb70b12c926811d3a63e6d0ed8..768f4c8551c4f16b5b003ed119d83322ee36fe00 100644
|
| --- a/gin/object_template_builder.h
|
| +++ b/gin/object_template_builder.h
|
| @@ -27,6 +27,11 @@ struct CallbackTraits {
|
| T callback) {
|
| return CreateFunctionTemplate(isolate, base::Bind(callback));
|
| }
|
| + static void SetAsFunctionHandler(v8::Isolate* isolate,
|
| + v8::Local<v8::ObjectTemplate> tmpl,
|
| + T callback) {
|
| + CreateFunctionHandler(isolate, tmpl, base::Bind(callback));
|
| + }
|
| };
|
|
|
| // Specialization for base::Callback.
|
| @@ -36,6 +41,11 @@ struct CallbackTraits<base::Callback<T> > {
|
| v8::Isolate* isolate, const base::Callback<T>& callback) {
|
| return CreateFunctionTemplate(isolate, callback);
|
| }
|
| + static void SetAsFunctionHandler(v8::Isolate* isolate,
|
| + v8::Local<v8::ObjectTemplate> tmpl,
|
| + const base::Callback<T>& callback) {
|
| + CreateFunctionHandler(isolate, tmpl, callback);
|
| + }
|
| };
|
|
|
| // Specialization for member function pointers. We need to handle this case
|
| @@ -50,6 +60,12 @@ struct CallbackTraits<T, typename base::enable_if<
|
| return CreateFunctionTemplate(isolate, base::Bind(callback),
|
| HolderIsFirstArgument);
|
| }
|
| + static void SetAsFunctionHandler(v8::Isolate* isolate,
|
| + v8::Local<v8::ObjectTemplate> tmpl,
|
| + T callback) {
|
| + CreateFunctionHandler(
|
| + isolate, tmpl, base::Bind(callback), HolderIsFirstArgument);
|
| + }
|
| };
|
|
|
| // This specialization allows people to construct function templates directly if
|
| @@ -103,6 +119,11 @@ class GIN_EXPORT ObjectTemplateBuilder {
|
| CallbackTraits<T>::CreateTemplate(isolate_, getter),
|
| CallbackTraits<U>::CreateTemplate(isolate_, setter));
|
| }
|
| + template<typename T>
|
| + ObjectTemplateBuilder& SetCallAsFunctionHandler(const T& callback) {
|
| + CallbackTraits<T>::SetAsFunctionHandler(isolate_, template_, callback);
|
| + return *this;
|
| + }
|
|
|
| v8::Local<v8::ObjectTemplate> Build();
|
|
|
|
|