| Index: gin/wrappable.h
|
| diff --git a/gin/wrappable.h b/gin/wrappable.h
|
| index fccca1ac4aa46d03a228fac26d05ce2da116209e..e20c7f1e82b115f95d8670ee56d47df4b63e085e 100644
|
| --- a/gin/wrappable.h
|
| +++ b/gin/wrappable.h
|
| @@ -53,32 +53,23 @@ GIN_EXPORT void* FromV8Impl(v8::Isolate* isolate,
|
| template<typename T>
|
| class Wrappable;
|
|
|
| +class ObjectTemplateBuilder;
|
|
|
| // Non-template base class to share code between templates instances.
|
| class GIN_EXPORT WrappableBase {
|
| protected:
|
| - typedef v8::Local<v8::ObjectTemplate>(*GetObjectTemplateFunction)(
|
| - v8::Isolate*);
|
| -
|
| WrappableBase();
|
| virtual ~WrappableBase();
|
|
|
| - v8::Handle<v8::Object> GetWrapperImpl(
|
| - v8::Isolate* isolate,
|
| - WrapperInfo* wrapper_info,
|
| - GetObjectTemplateFunction template_getter);
|
| + virtual ObjectTemplateBuilder GetObjectTemplateBuilder(v8::Isolate* isolate);
|
|
|
| - static v8::Local<v8::ObjectTemplate> GetObjectTemplate(v8::Isolate* isolate);
|
| + v8::Handle<v8::Object> GetWrapperImpl(v8::Isolate* isolate,
|
| + WrapperInfo* wrapper_info);
|
|
|
| private:
|
| static void WeakCallback(
|
| const v8::WeakCallbackData<v8::Object, WrappableBase>& data);
|
|
|
| - v8::Handle<v8::Object> CreateWrapper(
|
| - v8::Isolate* isolate,
|
| - WrapperInfo* wrapper_info,
|
| - GetObjectTemplateFunction template_getter);
|
| -
|
| v8::Persistent<v8::Object> wrapper_; // Weak
|
|
|
| DISALLOW_COPY_AND_ASSIGN(WrappableBase);
|
| @@ -92,7 +83,7 @@ class Wrappable : public WrappableBase {
|
| // To customize the wrapper created for a subclass, override GetWrapperInfo()
|
| // instead of overriding this function.
|
| v8::Handle<v8::Object> GetWrapper(v8::Isolate* isolate) {
|
| - return GetWrapperImpl(isolate, &T::kWrapperInfo, &T::GetObjectTemplate);
|
| + return GetWrapperImpl(isolate, &T::kWrapperInfo);
|
| }
|
|
|
| protected:
|
| @@ -107,7 +98,7 @@ class Wrappable : public WrappableBase {
|
| // This converter handles any subclass of Wrappable.
|
| template<typename T>
|
| struct Converter<T*, typename base::enable_if<
|
| - base::is_convertible<T*, Wrappable<T>*>::value>::type> {
|
| + base::is_convertible<T*, WrappableBase*>::value>::type> {
|
| static v8::Handle<v8::Value> ToV8(v8::Isolate* isolate, T* val) {
|
| return val->GetWrapper(isolate);
|
| }
|
|
|