diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-11 19:41:01 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-11 19:41:01 +0000 |
commit | 695af7f53d8e321200c3370934b5a1b29a051df9 (patch) | |
tree | fbbb4d70d274b4e4474e55fd89ef7d856db8e838 /gin/wrappable.h | |
parent | 2a77ba21711ec61237868404810ac665e6da52c7 (diff) | |
download | chromium_src-695af7f53d8e321200c3370934b5a1b29a051df9.zip chromium_src-695af7f53d8e321200c3370934b5a1b29a051df9.tar.gz chromium_src-695af7f53d8e321200c3370934b5a1b29a051df9.tar.bz2 |
[gin] WrappableBase's dtor needs to be virtual
Otherwise, the weak callback won't run the dtor of derived classes.
Also clarify that the INIT_WRAPPABLE() macro needs to be called in
namespace gin.
BUG=none
R=aa@chromium.org
Review URL: https://codereview.chromium.org/93903003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240154 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gin/wrappable.h')
-rw-r--r-- | gin/wrappable.h | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/gin/wrappable.h b/gin/wrappable.h index 3f9ebe3..5644591 100644 --- a/gin/wrappable.h +++ b/gin/wrappable.h @@ -45,7 +45,7 @@ class Wrappable; class WrappableBase { protected: WrappableBase(); - ~WrappableBase(); + virtual ~WrappableBase(); v8::Handle<v8::Object> GetWrapperImpl(v8::Isolate* isolate, WrapperInfo* wrapper_info); v8::Handle<v8::Object> CreateWrapper(v8::Isolate* isolate, @@ -74,17 +74,20 @@ class Wrappable : public WrappableBase { protected: Wrappable() {} - ~Wrappable() {} + virtual ~Wrappable() {} + + private: DISALLOW_COPY_AND_ASSIGN(Wrappable); }; // Subclasses of Wrappable must call this within a cc file to initialize their -// WrapperInfo. -#define INIT_WRAPPABLE(TYPE) \ -template<> \ -gin::WrapperInfo gin::Wrappable<TYPE>::kWrapperInfo = { kEmbedderNativeGin }; - +// WrapperInfo. This template must be used inside namespace gin. +#define INIT_WRAPPABLE(TYPE) \ + template <> \ + gin::WrapperInfo gin::Wrappable<TYPE>::kWrapperInfo = { \ + gin::kEmbedderNativeGin \ + } // This converter handles any subclass of Wrappable. template<typename T> |