summaryrefslogtreecommitdiffstats
path: root/gin/wrappable.h
diff options
context:
space:
mode:
authorjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-11 19:41:01 +0000
committerjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-11 19:41:01 +0000
commit695af7f53d8e321200c3370934b5a1b29a051df9 (patch)
treefbbb4d70d274b4e4474e55fd89ef7d856db8e838 /gin/wrappable.h
parent2a77ba21711ec61237868404810ac665e6da52c7 (diff)
downloadchromium_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.h17
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>