Index: Source/bindings/v8/custom/V8GeolocationCustom.cpp |
diff --git a/Source/bindings/v8/custom/V8GeolocationCustom.cpp b/Source/bindings/v8/custom/V8GeolocationCustom.cpp |
index 33a433b398e51df60f07af8d5ccc34e754116e13..213fab7ee502c910f022a8721af11e1af59734f1 100644 |
--- a/Source/bindings/v8/custom/V8GeolocationCustom.cpp |
+++ b/Source/bindings/v8/custom/V8GeolocationCustom.cpp |
@@ -37,7 +37,7 @@ using namespace WTF; |
namespace WebCore { |
-static PassRefPtrWillBeRawPtr<PositionOptions> createPositionOptions(v8::Local<v8::Value> value, v8::Isolate* isolate, bool& succeeded) |
+static PassRefPtrWillBeRawPtr<PositionOptions> createPositionOptions(v8::Local<v8::Value> value, v8::Isolate* isolate, bool& succeeded, ExceptionState& exceptionState) |
{ |
succeeded = true; |
@@ -85,13 +85,11 @@ static PassRefPtrWillBeRawPtr<PositionOptions> createPositionOptions(v8::Local<v |
double timeoutDouble = timeoutNumber->Value(); |
// If the value is positive infinity, there's nothing to do. |
if (!(std::isinf(timeoutDouble) && timeoutDouble > 0)) { |
- v8::Local<v8::Int32> timeoutInt32 = timeoutValue->ToInt32(); |
- if (timeoutInt32.IsEmpty()) { |
- succeeded = false; |
- return nullptr; |
+ if (timeoutDouble <= 0) { |
+ options->setTimeout(0); |
+ } else { |
+ options->setTimeout(toUInt32(timeoutValue, Clamp, exceptionState)); |
} |
- // Wrap to int32 and force non-negative to match behavior of window.setTimeout. |
- options->setTimeout(max(0, timeoutInt32->Value())); |
} |
} |
@@ -111,13 +109,11 @@ static PassRefPtrWillBeRawPtr<PositionOptions> createPositionOptions(v8::Local<v |
// If the value is positive infinity, clear maximumAge. |
options->clearMaximumAge(); |
} else { |
- v8::Local<v8::Int32> maximumAgeInt32 = maximumAgeValue->ToInt32(); |
- if (maximumAgeInt32.IsEmpty()) { |
- succeeded = false; |
- return nullptr; |
+ if (maximumAgeDouble <= 0) { |
+ options->setMaximumAge(0); |
+ } else { |
+ options->setMaximumAge(toUInt32(maximumAgeValue, Clamp, exceptionState)); |
} |
- // Wrap to int32 and force non-negative to match behavior of window.setTimeout. |
- options->setMaximumAge(max(0, maximumAgeInt32->Value())); |
} |
} |
@@ -140,7 +136,7 @@ void V8Geolocation::getCurrentPositionMethodCustom(const v8::FunctionCallbackInf |
if (!succeeded) |
return; |
- RefPtrWillBeRawPtr<PositionOptions> positionOptions = createPositionOptions(info[2], info.GetIsolate(), succeeded); |
+ RefPtrWillBeRawPtr<PositionOptions> positionOptions = createPositionOptions(info[2], info.GetIsolate(), succeeded, exceptionState); |
if (!succeeded) |
return; |
ASSERT(positionOptions); |
@@ -165,7 +161,7 @@ void V8Geolocation::watchPositionMethodCustom(const v8::FunctionCallbackInfo<v8: |
if (!succeeded) |
return; |
- RefPtrWillBeRawPtr<PositionOptions> positionOptions = createPositionOptions(info[2], info.GetIsolate(), succeeded); |
+ RefPtrWillBeRawPtr<PositionOptions> positionOptions = createPositionOptions(info[2], info.GetIsolate(), succeeded, exceptionState); |
if (!succeeded) |
return; |
ASSERT(positionOptions); |