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

Unified Diff: Source/bindings/v8/custom/V8GeolocationCustom.cpp

Issue 285673002: Change value type of timeout and maximumAge in PositionOptions (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 7 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/v8/custom/V8GeolocationCustom.cpp
diff --git a/Source/bindings/v8/custom/V8GeolocationCustom.cpp b/Source/bindings/v8/custom/V8GeolocationCustom.cpp
index 33a433b398e51df60f07af8d5ccc34e754116e13..d1105e791c5045a467c0ec45cced7431b3bdf3e1 100644
--- a/Source/bindings/v8/custom/V8GeolocationCustom.cpp
+++ b/Source/bindings/v8/custom/V8GeolocationCustom.cpp
@@ -85,13 +85,21 @@ 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;
+ unsigned timeout;
Inactive 2014/05/22 13:21:07 Could we use toUInt32(timeoutValue, Clamp, es) fro
kihong 2014/05/23 05:03:11 Done, that's much simpler than now. Thanks chris :
+ // If the value is over max of unsigned, timeout is max of unsigned.
+ if (timeoutDouble >= std::numeric_limits<unsigned>::max()) {
+ timeout = std::numeric_limits<unsigned>::max();
+ } else if (timeoutDouble <= 0) {
+ timeout = 0;
+ } else {
+ v8::Local<v8::Uint32> timeoutUint32 = timeoutValue->ToUint32();
+ if (timeoutUint32.IsEmpty()) {
+ succeeded = false;
+ return nullptr;
+ }
+ timeout = timeoutUint32->Value();
}
- // Wrap to int32 and force non-negative to match behavior of window.setTimeout.
- options->setTimeout(max(0, timeoutInt32->Value()));
+ options->setTimeout(timeout);
}
}
@@ -111,13 +119,21 @@ 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;
+ unsigned maximumAge;
Inactive 2014/05/22 13:21:07 Ditto.
+ // If the value is over max of unsigned, maximunAge is max of unsigned.
+ if (maximumAgeDouble >= std::numeric_limits<unsigned>::max()) {
+ maximumAge = std::numeric_limits<unsigned>::max();
+ } else if (maximumAgeDouble <= 0) {
+ maximumAge = 0;
+ } else {
+ v8::Local<v8::Uint32> maximumAgeUint32 = maximumAgeValue->ToUint32();
+ if (maximumAgeUint32.IsEmpty()) {
+ succeeded = false;
+ return nullptr;
+ }
+ maximumAge = maximumAgeUint32->Value();
}
- // Wrap to int32 and force non-negative to match behavior of window.setTimeout.
- options->setMaximumAge(max(0, maximumAgeInt32->Value()));
+ options->setMaximumAge(maximumAge);
}
}

Powered by Google App Engine
This is Rietveld 408576698