diff options
Diffstat (limited to 'WebCore/bindings/scripts/test/V8/V8TestInterface.h')
-rw-r--r-- | WebCore/bindings/scripts/test/V8/V8TestInterface.h | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/WebCore/bindings/scripts/test/V8/V8TestInterface.h b/WebCore/bindings/scripts/test/V8/V8TestInterface.h index afdf381..c1e319b 100644 --- a/WebCore/bindings/scripts/test/V8/V8TestInterface.h +++ b/WebCore/bindings/scripts/test/V8/V8TestInterface.h @@ -24,6 +24,7 @@ #define V8TestInterface_h #include "TestInterface.h" +#include "V8DOMWrapper.h" #include "WrapperTypeInfo.h" #include "wtf/text/StringHash.h" #include <v8.h> @@ -37,16 +38,38 @@ public: static bool HasInstance(v8::Handle<v8::Value> value); static v8::Persistent<v8::FunctionTemplate> GetRawTemplate(); static v8::Persistent<v8::FunctionTemplate> GetTemplate(); - static TestInterface* toNative(v8::Handle<v8::Object>); - static v8::Handle<v8::Object> wrap(TestInterface*); + static TestInterface* toNative(v8::Handle<v8::Object> object) + { + return reinterpret_cast<TestInterface*>(object->GetPointerFromInternalField(v8DOMWrapperObjectIndex)); + } + inline static v8::Handle<v8::Object> wrap(TestInterface*); static void derefObject(void*); static WrapperTypeInfo info; static v8::Handle<v8::Value> constructorCallback(const v8::Arguments& args); static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0; +private: + static v8::Handle<v8::Object> wrapSlow(TestInterface*); }; -v8::Handle<v8::Value> toV8(TestInterface*); -v8::Handle<v8::Value> toV8(PassRefPtr<TestInterface >); + +v8::Handle<v8::Object> V8TestInterface::wrap(TestInterface* impl) +{ + v8::Handle<v8::Object> wrapper = getDOMObjectMap().get(impl); + if (!wrapper.IsEmpty()) + return wrapper; + return V8TestInterface::wrapSlow(impl); +} + +inline v8::Handle<v8::Value> toV8(TestInterface* impl) +{ + if (!impl) + return v8::Null(); + return V8TestInterface::wrap(impl); +} +inline v8::Handle<v8::Value> toV8(PassRefPtr< TestInterface > impl) +{ + return toV8(impl.get()); +} } #endif // V8TestInterface_h |