Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(160)

Unified Diff: Source/bindings/core/v8/ScriptWrappable.h

Issue 721383003: bindings: Retires ScriptWrappableBase mostly. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/bindings/core/v8/DOMDataStore.h ('k') | Source/bindings/core/v8/ScriptWrappable.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/bindings/core/v8/ScriptWrappable.h
diff --git a/Source/bindings/core/v8/ScriptWrappable.h b/Source/bindings/core/v8/ScriptWrappable.h
index 0ef8e1c73bf7490f80211d4af68eb801cdc873ca..e055dbe6ebb94a63a91aedf9ce702ed4a1ba7f12 100644
--- a/Source/bindings/core/v8/ScriptWrappable.h
+++ b/Source/bindings/core/v8/ScriptWrappable.h
@@ -33,6 +33,7 @@
#include "bindings/core/v8/WrapperTypeInfo.h"
#include "platform/heap/Handle.h"
+#include "wtf/Noncopyable.h"
#include <v8.h>
namespace blink {
@@ -68,6 +69,8 @@ namespace blink {
__declspec(align(4))
#endif
class ScriptWrappableBase {
+ WTF_MAKE_NONCOPYABLE(ScriptWrappableBase);
+ friend class ScriptWrappable;
public:
template<typename T>
T* toImpl()
@@ -89,19 +92,16 @@ public:
return this;
}
- // Creates and returns a new wrapper object.
- // Do not call this method for a ScriptWrappable or its subclasses. This
- // non-virtual version of "wrap" is meant only for non-ScriptWrappable
- // objects. This wrap takes an extra third argument of type WrapperTypeInfo
- // because ScriptWrappableBase doesn't have wrapperTypeInfo() method unlike
- // ScriptWrappable.
- v8::Handle<v8::Object> wrap(v8::Handle<v8::Object> creationContext, v8::Isolate*, const WrapperTypeInfo*);
-
void assertWrapperSanity(v8::Local<v8::Object> object)
{
RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(object.IsEmpty()
|| object->GetAlignedPointerFromInternalField(v8DOMWrapperObjectIndex) == toScriptWrappableBase());
}
+
+private:
+ // Do not allow DOM classes to inherit directly from ScriptWrappableBase.
+ // DOM classes must inherit from ScriptWrappable instead.
+ ScriptWrappableBase() { }
};
/**
@@ -236,17 +236,9 @@ private:
// the instance. Also declares a static member of type WrapperTypeInfo, of which
// the definition is given by the IDL code generator.
//
-// Every DOM Class T must meet either of the following conditions:
-// - T.idl inherits from [NotScriptWrappable].
-// - T inherits from ScriptWrappable and has DEFINE_WRAPPERTYPEINFO().
-//
-// If a DOM class T does not inherit from ScriptWrappable, you have to write
-// [NotScriptWrappable] in the IDL file as an extended attribute in order to let
-// IDL code generator know that T does not inherit from ScriptWrappable. Note
-// that [NotScriptWrappable] is inheritable.
-//
// All the derived classes of ScriptWrappable, regardless of directly or
-// indirectly, must write this macro in the class definition.
+// indirectly, must write this macro in the class definition as long as the
+// class has a corresponding .idl file.
#define DEFINE_WRAPPERTYPEINFO() \
public: \
virtual const WrapperTypeInfo* wrapperTypeInfo() const override \
« no previous file with comments | « Source/bindings/core/v8/DOMDataStore.h ('k') | Source/bindings/core/v8/ScriptWrappable.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698