| Index: Source/WebCore/bindings/dart/DartDOMWrapper.h
|
| diff --git a/Source/WebCore/bindings/dart/DartDOMWrapper.h b/Source/WebCore/bindings/dart/DartDOMWrapper.h
|
| deleted file mode 100644
|
| index 162b0f2cb34dce646b998d820a8f04d0611ec0f3..0000000000000000000000000000000000000000
|
| --- a/Source/WebCore/bindings/dart/DartDOMWrapper.h
|
| +++ /dev/null
|
| @@ -1,611 +0,0 @@
|
| -// Copyright 2011, Google Inc.
|
| -// All rights reserved.
|
| -//
|
| -// Redistribution and use in source and binary forms, with or without
|
| -// modification, are permitted provided that the following conditions are
|
| -// met:
|
| -//
|
| -// * Redistributions of source code must retain the above copyright
|
| -// notice, this list of conditions and the following disclaimer.
|
| -// * Redistributions in binary form must reproduce the above
|
| -// copyright notice, this list of conditions and the following disclaimer
|
| -// in the documentation and/or other materials provided with the
|
| -// distribution.
|
| -// * Neither the name of Google Inc. nor the names of its
|
| -// contributors may be used to endorse or promote products derived from
|
| -// this software without specific prior written permission.
|
| -//
|
| -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| -
|
| -#ifndef DartDOMWrapper_h
|
| -#define DartDOMWrapper_h
|
| -
|
| -#include "DartUtilities.h"
|
| -#include "EventListener.h"
|
| -#include "EventTarget.h"
|
| -#include "ExceptionCode.h"
|
| -#include "MediaQueryListListener.h"
|
| -#include "OptionsObject.h"
|
| -#include "Range.h"
|
| -#include "ScriptValue.h"
|
| -#include "SerializedScriptValue.h"
|
| -#if ENABLE(SVG)
|
| -#include "SVGPropertyTearOff.h"
|
| -#endif
|
| -#include "VoidCallback.h"
|
| -#include "npruntime_impl.h"
|
| -
|
| -#include <bindings/npruntime.h>
|
| -#include <dart_api.h>
|
| -#include <wtf/PassRefPtr.h>
|
| -#include <wtf/RefPtr.h>
|
| -#include <wtf/text/AtomicString.h>
|
| -#include <wtf/text/WTFString.h>
|
| -
|
| -namespace WebCore {
|
| -
|
| -#if ENABLE(FILE_SYSTEM)
|
| -class Entry;
|
| -class EntrySync;
|
| -#endif
|
| -
|
| -#if ENABLE(INDEXED_DATABASE)
|
| -class IDBAny;
|
| -class IDBKey;
|
| -#endif
|
| -
|
| -#if ENABLE(SVG)
|
| -class SVGPathSeg;
|
| -#endif
|
| -
|
| -enum ConversionFlag {
|
| - ConvertNone = 0,
|
| - ConvertDefaultToNull = 1
|
| -};
|
| -
|
| -// The only purpose of this template declaration is to prohibit implicit
|
| -// conversions of toDartValue parameter.
|
| -template <typename Type>
|
| -Dart_Handle toDartValue(Type value);
|
| -
|
| -template <typename Type>
|
| -Dart_Handle toDartValue(Type value, ConversionFlag);
|
| -
|
| -inline Dart_Handle toDartValue(const AtomicString& value, ConversionFlag flag = ConvertNone)
|
| -{
|
| - if ((flag & ConvertDefaultToNull) && value.isNull())
|
| - return 0;
|
| - return DartUtilities::stringToDartString(value);
|
| -}
|
| -
|
| -inline Dart_Handle toDartValue(const String& value, ConversionFlag flag = ConvertNone)
|
| -{
|
| - if ((flag & ConvertDefaultToNull) && value.isNull())
|
| - return 0;
|
| - return DartUtilities::stringToDartString(value);
|
| -}
|
| -
|
| -inline Dart_Handle toDartValue(bool value)
|
| -{
|
| - return Dart_NewBoolean(value);
|
| -}
|
| -
|
| -inline Dart_Handle toDartValue(unsigned long long value)
|
| -{
|
| - // FIXME: WebIDL unsigned long long is guaranteed to fit into 64-bit unsigned,
|
| - // so we need a dart API for constructing an integer from uint64_t.
|
| - ASSERT(value <= 0x7fffffffffffffffLL);
|
| - return Dart_NewInteger(static_cast<int64_t>(value));
|
| -}
|
| -
|
| -inline Dart_Handle toDartValue(int64_t value)
|
| -{
|
| - return Dart_NewInteger(value);
|
| -}
|
| -
|
| -inline Dart_Handle toDartValue(intptr_t value)
|
| -{
|
| - return Dart_NewInteger(value);
|
| -}
|
| -
|
| -inline Dart_Handle toDartValue(float value)
|
| -{
|
| - return Dart_NewDouble(value);
|
| -}
|
| -
|
| -inline Dart_Handle toDartValue(double value)
|
| -{
|
| - return Dart_NewDouble(value);
|
| -}
|
| -
|
| -inline Dart_Handle toDartValue(const KURL& value, ConversionFlag flag = ConvertNone)
|
| -{
|
| - return toDartValue(value.string(), flag);
|
| -}
|
| -
|
| -inline Dart_Handle toDartValue(const ScriptValue& value)
|
| -{
|
| - // FIXME: dart specific implementation of ScriptValue and
|
| - // proper conversion.
|
| - DART_UNIMPLEMENTED();
|
| - return 0;
|
| -}
|
| -
|
| -inline Dart_Handle toDartValue(SerializedScriptValue* value)
|
| -{
|
| - return DartUtilities::fromSerializedScriptValue(value);
|
| -}
|
| -
|
| -Dart_Handle toDartValue(NPObject* object);
|
| -
|
| -class ContainerNode;
|
| -Dart_Handle toDartValue(ContainerNode*);
|
| -
|
| -class CSSMutableStyleDeclaration;
|
| -Dart_Handle toDartValue(CSSMutableStyleDeclaration*);
|
| -
|
| -class HTMLFormControlElement;
|
| -Dart_Handle toDartValue(HTMLFormControlElement*);
|
| -
|
| -class DartDOMWrapper {
|
| -public:
|
| - template <class WebkitClass>
|
| - static Dart_Handle newWrapper(const char* className, WebkitClass* domObject)
|
| - {
|
| - Dart_Handle wrapper = instantiateWrapper(className);
|
| - installNativePointers(domObject, wrapper);
|
| - return wrapper;
|
| - }
|
| -
|
| - template <class BindingsClass>
|
| - static Dart_Handle toDart(typename BindingsClass::NativeType* instance)
|
| - {
|
| - return toDart(instance, BindingsClass::dartImplementationClassName);
|
| - }
|
| -
|
| - template <class WebkitClass>
|
| - static Dart_Handle toDart(WebkitClass* instance, const char* className)
|
| - {
|
| - if (!instance)
|
| - return 0;
|
| -
|
| - // FIXME: custom toDartValue implementations should check the cache first.
|
| - // FIXME: separate maps for nodes, dom objects and active dom objects.
|
| - DartDOMMap* domMap = DartUtilities::domMapForCurrentIsolate();
|
| - Dart_Handle wrapper = domMap->get(instance);
|
| - if (wrapper)
|
| - return wrapper;
|
| -
|
| - wrapper = instantiateWrapper(className);
|
| - bindDOMObjectToDartWrapper(instance, wrapper);
|
| - return wrapper;
|
| - }
|
| -
|
| - template <class WebkitClass>
|
| - static void bindDOMObjectToDartWrapper(WebkitClass* domObject, Dart_Handle wrapper)
|
| - {
|
| - ASSERT(domObject);
|
| - domObject->ref();
|
| - installNativePointers(domObject, wrapper);
|
| -
|
| - // FIXME: make persistent handle weak and deref domObject in weak callback.
|
| - Dart_Handle persistentWrapperHandle = Dart_NewPersistentHandle(wrapper);
|
| -
|
| - DartDOMMap* domMap = DartUtilities::domMapForCurrentIsolate();
|
| - ASSERT(!domMap->contains(domObject));
|
| - domMap->set(domObject, persistentWrapperHandle);
|
| - }
|
| -
|
| - template <class BindingsClass>
|
| - static typename BindingsClass::NativeType* unwrapDartWrapper(Dart_Handle wrapper, Dart_Handle& exception)
|
| - {
|
| - // FIXME: support cross-domain wrappers.
|
| - if (!instanceOf(BindingsClass::dartImplementationClassName, wrapper, exception))
|
| - return 0;
|
| - ASSERT(!exception);
|
| - void* nativePointer = readNativePointer(wrapper, kNativeImplementationIndex);
|
| - return reinterpret_cast<typename BindingsClass::NativeType*>(nativePointer);
|
| - }
|
| -
|
| - static void derefDOMObject(Dart_Handle wrapper, void* domObject);
|
| -
|
| - template <class WebkitClass>
|
| - static WebkitClass* receiver(Dart_NativeArguments args)
|
| - {
|
| - // Type of receiver is ensured by Dart VM runtime, so bypass additional checks.
|
| - void* nativePointer = readNativePointer(Dart_GetNativeArgument(args, 0), kNativeImplementationIndex);
|
| - WebkitClass* const recv = static_cast<WebkitClass*>(nativePointer);
|
| - ASSERT(recv); // Never should return 0.
|
| - return recv;
|
| - }
|
| -
|
| - template <typename Type>
|
| - static void returnValue(Dart_NativeArguments args, const Type& value)
|
| - {
|
| - Dart_Handle result = toDartValue(value);
|
| - if (result)
|
| - Dart_SetReturnValue(args, result);
|
| - }
|
| -
|
| - static int wrapperNativeFieldCount() { return kNativeFieldCount; }
|
| -
|
| - template <typename Type>
|
| - static void returnValue(Dart_NativeArguments args, const Type& value, ConversionFlag flag)
|
| - {
|
| - Dart_Handle result = toDartValue(value, flag);
|
| - if (result)
|
| - Dart_SetReturnValue(args, result);
|
| - }
|
| -
|
| - static Dart_Handle exceptionCodeToDartException(ExceptionCode);
|
| -
|
| -private:
|
| - enum NativeFieldIndices {
|
| - kNativeImplementationIndex = 0,
|
| - kDerefObjectFunctionIndex,
|
| - kNativeFieldCount
|
| - };
|
| -
|
| - static Dart_Handle instantiateWrapper(const char* className);
|
| - static bool instanceOf(const char* dartImplementationClassName, Dart_Handle wrapper, Dart_Handle& exception);
|
| -
|
| - static void writeNativePointer(Dart_Handle wrapper, int index, void* pointer)
|
| - {
|
| - DartApiScope scope;
|
| - Dart_Handle result = Dart_SetNativeInstanceField(wrapper, index, reinterpret_cast<intptr_t>(pointer));
|
| - UNUSED_PARAM(result);
|
| - ASSERT(!Dart_IsError(result));
|
| - }
|
| -
|
| - static void* readNativePointer(Dart_Handle wrapper, int index)
|
| - {
|
| - // FIXME: Try to remove this scope from the hot path.
|
| - DartApiScope scope;
|
| - intptr_t value;
|
| - Dart_Handle result = Dart_GetNativeInstanceField(wrapper, index, &value);
|
| - ASSERT(!Dart_IsError(result));
|
| - UNUSED_PARAM(result);
|
| - return reinterpret_cast<void*>(value);
|
| - }
|
| -
|
| - template <class WebkitClass>
|
| - static void installNativePointers(WebkitClass* domObject, Dart_Handle wrapper)
|
| - {
|
| - ASSERT(domObject);
|
| - DerefObjectFunction derefObjectFunction = &DartDOMWrapper::derefObject<WebkitClass>;
|
| - writeNativePointer(wrapper, kNativeImplementationIndex, domObject);
|
| - writeNativePointer(wrapper, kDerefObjectFunctionIndex, reinterpret_cast<void*>(derefObjectFunction));
|
| - }
|
| -
|
| - typedef void (*DerefObjectFunction)(void*);
|
| -
|
| - template<typename T>
|
| - static void derefObject(void* pointer)
|
| - {
|
| - static_cast<T*>(pointer)->deref();
|
| - }
|
| -};
|
| -
|
| -template<>
|
| -inline void DartDOMWrapper::derefObject<NPObject>(void*)
|
| -{
|
| - // FIXME: proper deref.
|
| -}
|
| -
|
| -// ParameterAdapter.
|
| -
|
| -template <typename Value>
|
| -class ParameterAdapterBase {
|
| -public:
|
| - bool conversionSuccessful() const { return !m_exception; }
|
| -
|
| - Dart_Handle exception() const
|
| - {
|
| - ASSERT(!conversionSuccessful());
|
| - return m_exception;
|
| - }
|
| -
|
| -protected:
|
| -
|
| - ParameterAdapterBase()
|
| - : m_value()
|
| - , m_exception(0) { }
|
| -
|
| - void setException(Dart_Handle exception)
|
| - {
|
| - ASSERT(exception);
|
| - m_exception = exception;
|
| - ASSERT(!conversionSuccessful());
|
| - }
|
| -
|
| - const Value& value() const
|
| - {
|
| - ASSERT(conversionSuccessful());
|
| - return m_value;
|
| - }
|
| -
|
| - void setValue(Value value)
|
| - {
|
| - m_value = value;
|
| - }
|
| -
|
| -protected:
|
| - Value m_value;
|
| -
|
| -private:
|
| - Dart_Handle m_exception;
|
| -};
|
| -
|
| -
|
| -template <class NativeValue, class DartBindingsClass = void>
|
| -class ParameterAdapter : public ParameterAdapterBase<NativeValue*> {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - {
|
| - Dart_Handle exception = 0;
|
| - this->setValue(DartBindingsClass::toNative(handle, exception).get());
|
| - if (exception)
|
| - this->setException(exception);
|
| - }
|
| -
|
| - operator PassRefPtr<NativeValue>() const { return this->value(); }
|
| - operator NativeValue*() const { return this->value(); }
|
| -};
|
| -
|
| -template <>
|
| -class ParameterAdapter< RefPtr<EventListener> > : public ParameterAdapterBase< RefPtr<EventListener> > {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - {
|
| - // FIXME: abstract away this common pattern of exception management in conversion.
|
| - Dart_Handle exception = 0;
|
| - this->setValue(DartUtilities::toEventListener(handle, exception));
|
| - if (exception)
|
| - this->setException(exception);
|
| - }
|
| - operator EventListener*() const { return this->value().get(); }
|
| - operator PassRefPtr<EventListener>() const { return this->value(); }
|
| -};
|
| -
|
| -template <>
|
| -class ParameterAdapter< RefPtr<EventTarget> > : public ParameterAdapterBase< RefPtr<EventTarget> > {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - {
|
| - // FIXME: abstract away this common pattern of exception management in conversion.
|
| - Dart_Handle exception = 0;
|
| - this->setValue(DartUtilities::toEventTarget(handle, exception));
|
| - if (exception)
|
| - this->setException(exception);
|
| - }
|
| - operator EventTarget*() const { return this->value().get(); }
|
| - operator PassRefPtr<EventTarget>() const { return this->value(); }
|
| -};
|
| -
|
| -template <>
|
| -class ParameterAdapter< RefPtr<MediaQueryListListener> > : public ParameterAdapterBase<MediaQueryListListener*> {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - {
|
| - setException(Dart_NewString("Not supported yet"));
|
| - }
|
| - operator MediaQueryListListener*() const { return this->value(); }
|
| - operator PassRefPtr<MediaQueryListListener>() const { return this->value(); }
|
| -};
|
| -
|
| -template <>
|
| -class ParameterAdapter< RefPtr<SerializedScriptValue> > : public ParameterAdapterBase< RefPtr<SerializedScriptValue> > {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - {
|
| - // FIXME: abstract away this common pattern of exception management in conversion.
|
| - Dart_Handle exception = 0;
|
| - this->setValue(DartUtilities::toSerializedScriptValue(handle, exception));
|
| - if (exception)
|
| - this->setException(exception);
|
| - }
|
| - operator SerializedScriptValue*() const { return this->value().get(); }
|
| - operator PassRefPtr<SerializedScriptValue>() const { return this->value(); }
|
| - PassRefPtr<SerializedScriptValue> release() { return m_value->release(); }
|
| -};
|
| -
|
| -template <>
|
| -class ParameterAdapter< RefPtr<VoidCallback> > : public ParameterAdapterBase<VoidCallback*> {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - {
|
| - setException(Dart_NewString("Not supported yet"));
|
| - }
|
| - operator VoidCallback*() const { return this->value(); }
|
| - operator PassRefPtr<VoidCallback>() const { return this->value(); }
|
| -};
|
| -
|
| -#if ENABLE(SVG)
|
| -template <class NativeValue, class DartBindingsClass>
|
| -class ParameterAdapter< RefPtr<SVGPropertyTearOff<NativeValue> >, DartBindingsClass> : public ParameterAdapterBase< RefPtr<SVGPropertyTearOff<NativeValue> > > {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - {
|
| - Dart_Handle exception = 0;
|
| - this->setValue(DartBindingsClass::toNative(handle, exception).get());
|
| - if (exception)
|
| - this->setException(exception);
|
| - }
|
| - operator const NativeValue&() const { return this->value()->propertyReference(); }
|
| - operator NativeValue&() { return this->value()->propertyReference(); }
|
| - operator PassRefPtr<SVGPropertyTearOff<NativeValue> >() const { return this->value(); }
|
| - operator SVGPropertyTearOff<NativeValue>*() const { return this->value().get(); }
|
| -};
|
| -#endif // ENABLE(SVG)
|
| -
|
| -template <class NativeValue, class DartBindingsClass>
|
| -class ParameterAdapter< RefPtr<NativeValue>, DartBindingsClass > : public ParameterAdapterBase< RefPtr<NativeValue> > {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - {
|
| - Dart_Handle exception = 0;
|
| - this->setValue(DartBindingsClass::toNative(handle, exception));
|
| - if (exception)
|
| - this->setException(exception);
|
| - }
|
| -
|
| - operator PassRefPtr<NativeValue>() const { return this->value(); }
|
| - operator RefPtr<NativeValue>() const { return this->value(); }
|
| - operator NativeValue*() const { return this->value().get(); }
|
| -};
|
| -
|
| -class DoubleParameterAdapter : public ParameterAdapterBase<double> {
|
| -protected:
|
| - explicit DoubleParameterAdapter(Dart_Handle handle)
|
| - {
|
| - Dart_Handle exception = 0;
|
| - setValue(DartUtilities::toDouble(handle, exception));
|
| - if (exception)
|
| - setException(exception);
|
| - }
|
| -};
|
| -
|
| -template <>
|
| -class ParameterAdapter<double> : public DoubleParameterAdapter {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - : DoubleParameterAdapter(handle) { }
|
| - operator double() const { return this->value(); }
|
| -};
|
| -
|
| -template <>
|
| -class ParameterAdapter<float> : public DoubleParameterAdapter {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - : DoubleParameterAdapter(handle) { }
|
| - operator float() const { return this->value(); }
|
| -};
|
| -
|
| -class IntParameterAdapter : public ParameterAdapterBase<int64_t> {
|
| -protected:
|
| - explicit IntParameterAdapter(Dart_Handle handle)
|
| - {
|
| - Dart_Handle exception = 0;
|
| - setValue(DartUtilities::toInteger(handle, exception));
|
| - if (exception)
|
| - setException(exception);
|
| - }
|
| -};
|
| -
|
| -template <>
|
| -class ParameterAdapter<int> : public IntParameterAdapter {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - : IntParameterAdapter(handle)
|
| - {
|
| - if (conversionSuccessful() && (value() < INT_MIN || value() > INT_MAX))
|
| - setException(Dart_NewString("value out of range"));
|
| - }
|
| - operator int() const { return this->value(); }
|
| -};
|
| -
|
| -template <>
|
| -class ParameterAdapter<long long> : public IntParameterAdapter {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - : IntParameterAdapter(handle) { }
|
| - // FIXME: proper processing of longer integer values.
|
| - operator long long() const { return this->value(); }
|
| -};
|
| -
|
| -template <>
|
| -class ParameterAdapter<unsigned int> : public IntParameterAdapter {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - : IntParameterAdapter(handle)
|
| - {
|
| - if (conversionSuccessful() && (value() < 0 || value() > UINT_MAX))
|
| - setException(Dart_NewString("value out of range"));
|
| - }
|
| - operator unsigned int() const { return this->value(); }
|
| -};
|
| -
|
| -template <>
|
| -class ParameterAdapter<unsigned long long> : public IntParameterAdapter {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - : IntParameterAdapter(handle)
|
| - {
|
| - if (conversionSuccessful() && value() < 0)
|
| - setException(Dart_NewString("value out of range"));
|
| - }
|
| - // FIXME: proper processing of longer integer values.
|
| - operator unsigned long long() const { return this->value(); }
|
| -};
|
| -
|
| -// FIXME: [performance] need better treatment of String vs. AtomicString, cf. v8 implementation.
|
| -template <>
|
| -class ParameterAdapter<String> : public ParameterAdapterBase< RefPtr<StringImpl> > {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle, DartUtilities::ConversionFlag flag = DartUtilities::ConvertNone)
|
| - {
|
| - Dart_Handle exception = 0;
|
| - setValue(DartUtilities::toStringImpl(handle, flag, exception));
|
| - if (exception)
|
| - setException(exception);
|
| - }
|
| - operator String() const { return String(this->value()); }
|
| - operator AtomicString() const { return AtomicString(this->value()); }
|
| -};
|
| -
|
| -template <>
|
| -class ParameterAdapter<bool> : public ParameterAdapterBase<bool> {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - {
|
| - Dart_Handle exception = 0;
|
| - setValue(DartUtilities::toBool(handle, exception));
|
| - if (exception)
|
| - setException(exception);
|
| - }
|
| - operator bool() const { return this->value(); }
|
| -};
|
| -
|
| -template <>
|
| -class ParameterAdapter<ScriptValue> : public ParameterAdapterBase<ScriptValue> {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - {
|
| - setException(Dart_NewString("Not supported yet"));
|
| - }
|
| - operator ScriptValue() const { return this->value(); }
|
| -};
|
| -
|
| -template <>
|
| -class ParameterAdapter<OptionsObject> : public ParameterAdapterBase<OptionsObject> {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - {
|
| - setException(Dart_NewString("Not supported yet"));
|
| - }
|
| - operator OptionsObject() const { return this->value(); }
|
| -};
|
| -
|
| -template <>
|
| -class ParameterAdapter<Range::CompareHow> : public ParameterAdapterBase<Range::CompareHow> {
|
| -public:
|
| - explicit ParameterAdapter(Dart_Handle handle)
|
| - {
|
| - setException(Dart_NewString("Not supported yet"));
|
| - }
|
| - operator Range::CompareHow() const { return this->value(); }
|
| -};
|
| -
|
| -}
|
| -
|
| -#endif // DartDOMWrapper_h
|
|
|