| Index: Source/core/html/forms/RangeInputType.cpp
|
| diff --git a/Source/core/html/forms/RangeInputType.cpp b/Source/core/html/forms/RangeInputType.cpp
|
| index b688e7462adfdf214b4134c490b632d94883bf93..5177ab18bd9700c4ce5cff745f88b68bdd32085b 100644
|
| --- a/Source/core/html/forms/RangeInputType.cpp
|
| +++ b/Source/core/html/forms/RangeInputType.cpp
|
| @@ -124,8 +124,8 @@ StepRange RangeInputType::createStepRange(AnyStepHandling anyStepHandling) const
|
| {
|
| DEFINE_STATIC_LOCAL(const StepRange::StepDescription, stepDescription, (rangeDefaultStep, rangeDefaultStepBase, rangeStepScaleFactor));
|
|
|
| - const Decimal minimum = parseToNumber(element().fastGetAttribute(minAttr), rangeDefaultMinimum);
|
| - const Decimal maximum = ensureMaximum(parseToNumber(element().fastGetAttribute(maxAttr), rangeDefaultMaximum), minimum, rangeDefaultMaximum);
|
| + const Decimal minimum = parseToNumber(element().fastGetAttribute(minAttr), String(), rangeDefaultMinimum);
|
| + const Decimal maximum = ensureMaximum(parseToNumber(element().fastGetAttribute(maxAttr), String(), rangeDefaultMaximum), minimum, rangeDefaultMaximum);
|
|
|
| const AtomicString& precisionValue = element().fastGetAttribute(precisionAttr);
|
| if (!precisionValue.isNull()) {
|
| @@ -259,8 +259,15 @@ RenderObject* RangeInputType::createRenderer(RenderStyle*) const
|
| return new RenderSlider(&element());
|
| }
|
|
|
| -Decimal RangeInputType::parseToNumber(const String& src, const Decimal& defaultValue) const
|
| +Decimal RangeInputType::parseToNumber(const String& src, const String& alternative, const Decimal& defaultValue) const
|
| {
|
| + if (!alternative.isEmpty()) {
|
| + Decimal result = parseToDecimalForNumberType(src, Decimal::nan());
|
| + if (!result.isFinite())
|
| + result = parseToDecimalForNumberType(alternative, defaultValue);
|
| +
|
| + return result;
|
| + }
|
| return parseToDecimalForNumberType(src, defaultValue);
|
| }
|
|
|
| @@ -305,7 +312,7 @@ String RangeInputType::fallbackValue() const
|
| String RangeInputType::sanitizeValue(const String& proposedValue) const
|
| {
|
| StepRange stepRange(createStepRange(RejectAny));
|
| - const Decimal proposedNumericValue = parseToNumber(proposedValue, stepRange.defaultValue());
|
| + const Decimal proposedNumericValue = parseToNumber(proposedValue, String(), stepRange.defaultValue());
|
| return serializeForNumberType(stepRange.clampValue(proposedNumericValue));
|
| }
|
|
|
| @@ -354,7 +361,7 @@ void RangeInputType::updateTickMarkValues()
|
| String optionValue = optionElement->value();
|
| if (!element().isValidValue(optionValue))
|
| continue;
|
| - m_tickMarkValues.append(parseToNumber(optionValue, Decimal::nan()));
|
| + m_tickMarkValues.append(parseToNumber(optionValue, String(), Decimal::nan()));
|
| }
|
| m_tickMarkValues.shrinkToFit();
|
| nonCopyingSort(m_tickMarkValues.begin(), m_tickMarkValues.end(), decimalCompare);
|
|
|