Chromium Code Reviews| Index: Source/WebCore/bindings/dart/DartUtilities.cpp |
| diff --git a/Source/WebCore/bindings/dart/DartUtilities.cpp b/Source/WebCore/bindings/dart/DartUtilities.cpp |
| index 11f674e7facf3743e084478934eec29dab147eb9..48328f6f3896b0d85cecd643642a0ad818678d03 100644 |
| --- a/Source/WebCore/bindings/dart/DartUtilities.cpp |
| +++ b/Source/WebCore/bindings/dart/DartUtilities.cpp |
| @@ -126,17 +126,63 @@ struct IntegerTrait { |
| } |
| }; |
| -int64_t DartUtilities::toInteger(Dart_Handle object, Dart_Handle& exception) |
| +template <> |
| +double DartUtilities::toNative<double>(Dart_Handle object, Dart_Handle& exception) |
|
antonm
2012/01/19 15:33:13
why not ParameterAdapter?
Nikolay
2012/01/20 11:38:37
Because it's not a parameter, and I wanted more ex
|
| { |
| - return convert<IntegerTrait>(object, exception); |
| + return DartUtilities::toDouble(object, exception); |
| } |
| -int64_t DartUtilities::toInteger(Dart_Handle object) |
| +template <> |
| +float DartUtilities::toNative<float>(Dart_Handle object, Dart_Handle& exception) |
| { |
| - Dart_Handle exception = 0; |
| - int64_t value = DartUtilities::toInteger(object, exception); |
| - ASSERT(!exception); |
| - return value; |
| + return DartUtilities::toDouble(object, exception); |
| +} |
| + |
| +template <> |
| +int8_t DartUtilities::toNative<int8_t>(Dart_Handle object, Dart_Handle& exception) |
| +{ |
| + return DartUtilities::toInteger(object, exception); |
| +} |
| + |
| +template <> |
| +int16_t DartUtilities::toNative<int16_t>(Dart_Handle object, Dart_Handle& exception) |
| +{ |
| + return DartUtilities::toInteger(object, exception); |
| +} |
| + |
| +template <> |
| +int32_t DartUtilities::toNative<int32_t>(Dart_Handle object, Dart_Handle& exception) |
| +{ |
| + return DartUtilities::toInteger(object, exception); |
| +} |
| + |
| +template <> |
| +int64_t DartUtilities::toNative<int64_t>(Dart_Handle object, Dart_Handle& exception) |
| +{ |
| + return DartUtilities::toInteger(object, exception); |
| +} |
| + |
| +template <> |
| +uint8_t DartUtilities::toNative<uint8_t>(Dart_Handle object, Dart_Handle& exception) |
| +{ |
| + return DartUtilities::toInteger(object, exception); |
| +} |
| + |
| +template <> |
| +uint16_t DartUtilities::toNative<uint16_t>(Dart_Handle object, Dart_Handle& exception) |
| +{ |
| + return DartUtilities::toInteger(object, exception); |
| +} |
| + |
| +template <> |
| +uint32_t DartUtilities::toNative<uint32_t>(Dart_Handle object, Dart_Handle& exception) |
| +{ |
| + return DartUtilities::toInteger(object, exception); |
| +} |
| + |
| +int64_t DartUtilities::toInteger(Dart_Handle object, Dart_Handle& exception) |
| +{ |
| + return convert<IntegerTrait>(object, exception); |
| } |
| struct DoubleTrait { |
| @@ -146,9 +192,11 @@ struct DoubleTrait { |
| if (!Dart_IsNumber(object)) |
| return Dart_Error("the object !is Number"); |
| - object = Dart_InvokeDynamic(object, Dart_NewString("toDouble"), 0, 0); |
| - if (Dart_IsError(object)) |
| - return object; |
| + if (!Dart_IsDouble(object)) { |
| + object = Dart_InvokeDynamic(object, Dart_NewString("toDouble"), 0, 0); |
| + if (Dart_IsError(object)) |
| + return object; |
| + } |
| return Dart_DoubleValue(object, value); |
| } |
| @@ -159,14 +207,6 @@ double DartUtilities::toDouble(Dart_Handle object, Dart_Handle& exception) |
| return convert<DoubleTrait>(object, exception); |
| } |
| -double DartUtilities::toDouble(Dart_Handle object) |
| -{ |
| - Dart_Handle exception = 0; |
| - double value = DartUtilities::toDouble(object, exception); |
| - ASSERT(!exception); |
| - return value; |
| -} |
| - |
| struct BoolTrait { |
| typedef bool nativeType; |
| static Dart_Handle convert(Dart_Handle object, bool* value) { return Dart_BooleanValue(object, value); } |
| @@ -177,14 +217,6 @@ bool DartUtilities::toBool(Dart_Handle object, Dart_Handle& exception) |
| return convert<BoolTrait>(object, exception); |
| } |
| -bool DartUtilities::toBool(Dart_Handle object) |
| -{ |
| - Dart_Handle exception = 0; |
| - bool value = DartUtilities::toBool(object, exception); |
| - ASSERT(!exception); |
| - return value; |
| -} |
| - |
| PassRefPtr<EventListener> DartUtilities::toEventListener(Dart_Handle object, Dart_Handle& exception) |
| { |
| if (Dart_IsNull(object)) { |
| @@ -246,11 +278,8 @@ void DartUtilities::toMessagePortArray(Dart_Handle value, MessagePortArray& port |
| ASSERT(!Dart_IsError(dom)); |
| Dart_Handle asList = Dart_InvokeStatic(dom, Dart_NewString("Utils"), Dart_NewString("convertToList"), 1, &value); |
| - if (Dart_IsError(asList)) { |
| - DartUtilities::reportProblem(DartUtilities::scriptExecutionContext(), asList); |
| - exception = DartDOMWrapper::exceptionCodeToDartException(INVALID_STATE_ERR); |
| + if (!checkResult(asList, exception)) |
| return; |
| - } |
| ASSERT(Dart_IsList(asList)); |
| intptr_t length = 0; |
| @@ -258,16 +287,12 @@ void DartUtilities::toMessagePortArray(Dart_Handle value, MessagePortArray& port |
| portArray.resize(length); |
| for (int i = 0; i < length; i++) { |
| Dart_Handle element = Dart_ListGetAt(asList, i); |
| - if (Dart_IsError(element)) { |
| - exception = DartDOMWrapper::exceptionCodeToDartException(INVALID_STATE_ERR); |
| + if (!checkResult(element, exception)) |
| return; |
| - } |
| MessagePort* messagePort = DartMessagePort::toNative(element, exception).get(); |
| - if (exception) { |
| - exception = DartDOMWrapper::exceptionCodeToDartException(INVALID_STATE_ERR); |
| + if (exception) |
| return; |
| - } |
| ASSERT(messagePort); |
| portArray[i] = messagePort; |