Do not localize numbers in scientific notation
[WebKit-https.git] / Source / WebCore / html / NumberInputType.cpp
index 44fb35a..3a4d420 100644 (file)
@@ -283,11 +283,19 @@ void NumberInputType::handleBlurEvent()
     element()->updateInnerTextValue();
 }
 
+static bool isE(UChar ch)
+{
+    return ch == 'e' || ch == 'E';
+}
+
 String NumberInputType::visibleValue() const
 {
     String currentValue = element()->value();
     if (currentValue.isEmpty())
         return currentValue;
+    // We don't localize scientific notations.
+    if (currentValue.find(isE) != notFound)
+        return currentValue;
     // FIXME: The following three lines should be removed when we
     // remove the second argument of convertToLocalizedNumber().
     double doubleValue = numeric_limits<double>::quiet_NaN();
@@ -300,12 +308,16 @@ String NumberInputType::convertFromVisibleValue(const String& visibleValue) cons
 {
     if (visibleValue.isEmpty())
         return visibleValue;
+    // We don't localize scientific notations.
+    if (visibleValue.find(isE) != notFound)
+        return visibleValue;
     return convertFromLocalizedNumber(visibleValue);
 }
 
 bool NumberInputType::isAcceptableValue(const String& proposedValue)
 {
-    return proposedValue.isEmpty() || parseToDoubleForNumberType(convertFromLocalizedNumber(proposedValue), 0) || parseToDoubleForNumberType(proposedValue, 0);
+    String standardValue = convertFromVisibleValue(proposedValue);
+    return standardValue.isEmpty() || parseToDoubleForNumberType(standardValue, 0);
 }
 
 String NumberInputType::sanitizeValue(const String& proposedValue) const