| Index: Source/bindings/dart/DartDOMWrapper.h
|
| diff --git a/Source/bindings/dart/DartDOMWrapper.h b/Source/bindings/dart/DartDOMWrapper.h
|
| index aea7c6e8c97f775f658f8ef5d9d3d728629e1fc9..ab8ba74a5949599778dddeec62e922b1a7b4f3cf 100644
|
| --- a/Source/bindings/dart/DartDOMWrapper.h
|
| +++ b/Source/bindings/dart/DartDOMWrapper.h
|
| @@ -52,9 +52,12 @@ struct DartDOMWrapperTraits;
|
| class DartDOMWrapper {
|
| public:
|
| template <class WebKitClass>
|
| - static Dart_Handle newWrapper(const char* className, const char* libraryName, WebKitClass* domObject)
|
| + static Dart_Handle newWrapper(const char* className, const char* libraryName, intptr_t cid, WebKitClass* domObject)
|
| {
|
| - Dart_Handle wrapper = instantiateWrapper(className, libraryName);
|
| +
|
| + Dart_Handle type = dartClass(className, libraryName, cid);
|
| + ASSERT(!Dart_IsError(type));
|
| + Dart_Handle wrapper = Dart_Allocate(type);
|
| writeNativePointer(wrapper, kNativeImplementationIndex, domObject);
|
| return wrapper;
|
| }
|
| @@ -62,12 +65,16 @@ public:
|
| template <class BindingsClass>
|
| static Dart_Handle toDart(typename BindingsClass::NativeType* domObject)
|
| {
|
| - return toDartWithClassName<BindingsClass>(domObject, BindingsClass::dartImplementationClassName, BindingsClass::dartImplementationLibraryName);
|
| + return toDartWithClassName<BindingsClass>(
|
| + domObject,
|
| + BindingsClass::dartImplementationClassName,
|
| + BindingsClass::dartImplementationLibraryName,
|
| + BindingsClass::dartClassId);
|
| }
|
|
|
| template <class BindingsClass>
|
| static Dart_Handle toDartWithClassName(typename BindingsClass::NativeType* domObject,
|
| - const char* className, const char* libraryName)
|
| + const char* className, const char* libraryName, intptr_t cid)
|
| {
|
| typedef DartDOMWrapperTraits<BindingsClass> Traits;
|
|
|
| @@ -78,7 +85,7 @@ public:
|
| if (oldInstance)
|
| return oldInstance;
|
|
|
| - Dart_Handle newInstance = newWrapper(className, libraryName, domObject);
|
| + Dart_Handle newInstance = newWrapper(className, libraryName, cid, domObject);
|
| return associateWrapper<BindingsClass>(domObject, newInstance);
|
| }
|
|
|
| @@ -179,7 +186,13 @@ public:
|
| template <class BindingsClass>
|
| static bool instanceOf(Dart_Handle wrapper)
|
| {
|
| - return instanceOf(BindingsClass::dartImplementationClassName, BindingsClass::dartImplementationLibraryName, wrapper);
|
| + Dart_Handle type = dartClass<BindingsClass>();
|
| +
|
| + bool isInstanceOf = false;
|
| + Dart_Handle result = Dart_ObjectIsType(wrapper, type, &isInstanceOf);
|
| + if (Dart_IsError(result))
|
| + return false;
|
| + return isInstanceOf;
|
| }
|
|
|
| template <class WebKitClass>
|
| @@ -220,9 +233,14 @@ private:
|
| kNativeFieldCount
|
| };
|
|
|
| - static Dart_Handle instantiateWrapper(const char* className, const char* libraryName);
|
| - static bool instanceOf(const char* dartImplementationClassName,
|
| - const char* dartImplementationLibraryName, Dart_Handle wrapper);
|
| + static Dart_Handle dartClass(const char* dartImplementationClassName,
|
| + const char* dartImplementationLibraryName, intptr_t classIndex);
|
| +
|
| + template <class BindingsClass>
|
| + static Dart_Handle dartClass()
|
| + {
|
| + return dartClass(BindingsClass::dartImplementationClassName, BindingsClass::dartImplementationLibraryName, BindingsClass::dartClassId);
|
| + }
|
|
|
| static void writeNativePointer(Dart_Handle wrapper, int index, void* pointer)
|
| {
|
|
|