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

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

Issue 993333002: bindings: Use Maybe APIs in toXXX() functions (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 9 months 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
Index: Source/bindings/core/v8/V8Binding.h
diff --git a/Source/bindings/core/v8/V8Binding.h b/Source/bindings/core/v8/V8Binding.h
index 170c48bf19c394b3b7d9881dae81306670ba41cf..e07d5d9d6ed050f542f51f9e5b293df64a7b75cf 100644
--- a/Source/bindings/core/v8/V8Binding.h
+++ b/Source/bindings/core/v8/V8Binding.h
@@ -436,12 +436,24 @@ uint32_t toUInt32Slow(v8::Handle<v8::Value>, IntegerConversionConfiguration, Exc
inline uint32_t toUInt32(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState)
{
// Fast case. The value is already a 32-bit unsigned integer.
- if (value->IsUint32())
- return value->Uint32Value();
+ if (value->IsUint32()) {
bashi 2015/03/11 10:30:37 Now this doesn't look 'fast case'. Should we remov
Jens Widell 2015/03/11 10:56:37 We might want to investigate the performance impac
Yuki 2015/03/11 13:11:53 This reminds me of the following comment on an iss
+ uint32_t result;
+ if (!getValueFromMaybe(value->Uint32Value(exceptionState.isolate()->GetCurrentContext()), result)) {
+ exceptionState.throwTypeError("Cannot convert to a 32 bit unsigned integer.");
+ return 0;
+ }
+ return result;
+ }
// Fast case. The value is a 32-bit signed integer with NormalConversion configuration.
- if (value->IsInt32() && configuration == NormalConversion)
- return value->Int32Value();
+ if (value->IsInt32() && configuration == NormalConversion) {
+ int32_t result;
+ if (!getValueFromMaybe(value->Int32Value(exceptionState.isolate()->GetCurrentContext()), result)) {
+ exceptionState.throwTypeError("Cannot convert to a 32 bit integer.");
+ return 0;
+ }
+ return result;
+ }
return toUInt32Slow(value, configuration, exceptionState);
}
@@ -484,7 +496,7 @@ double toDoubleSlow(v8::Handle<v8::Value>, ExceptionState&);
inline double toDouble(v8::Handle<v8::Value> value, ExceptionState& exceptionState)
{
if (value->IsNumber())
- return value->NumberValue();
+ return value.As<v8::Number>()->Value();
return toDoubleSlow(value, exceptionState);
}
@@ -514,9 +526,9 @@ inline v8::Handle<v8::Boolean> v8Boolean(bool value, v8::Isolate* isolate)
inline double toCoreDate(v8::Handle<v8::Value> object)
{
if (object->IsDate())
- return v8::Handle<v8::Date>::Cast(object)->ValueOf();
+ return object.As<v8::Date>()->ValueOf();
if (object->IsNumber())
- return object->NumberValue();
+ return object.As<v8::Number>()->Value();
return std::numeric_limits<double>::quiet_NaN();
}

Powered by Google App Engine
This is Rietveld 408576698