| Index: third_party/WebKit/Source/core/html/forms/InputType.cpp
|
| diff --git a/third_party/WebKit/Source/core/html/forms/InputType.cpp b/third_party/WebKit/Source/core/html/forms/InputType.cpp
|
| index 6bd906c44da9206a8fccdf1e212155671a42649e..5e88d20f06163d16beb9455f7b7881d317176e4a 100644
|
| --- a/third_party/WebKit/Source/core/html/forms/InputType.cpp
|
| +++ b/third_party/WebKit/Source/core/html/forms/InputType.cpp
|
| @@ -292,7 +292,7 @@ bool InputType::isInRange(const String& value) const
|
| return true;
|
|
|
| StepRange stepRange(createStepRange(RejectAny));
|
| - return numericValue >= stepRange.minimum() && numericValue <= stepRange.maximum();
|
| + return stepRange.hasRangeLimitations() && numericValue >= stepRange.minimum() && numericValue <= stepRange.maximum();
|
| }
|
|
|
| bool InputType::isOutOfRange(const String& value) const
|
| @@ -308,7 +308,7 @@ bool InputType::isOutOfRange(const String& value) const
|
| return false;
|
|
|
| StepRange stepRange(createStepRange(RejectAny));
|
| - return numericValue < stepRange.minimum() || numericValue > stepRange.maximum();
|
| + return stepRange.hasRangeLimitations() && (numericValue < stepRange.minimum() || numericValue > stepRange.maximum());
|
| }
|
|
|
| bool InputType::stepMismatch(const String& value) const
|
| @@ -921,11 +921,20 @@ Decimal InputType::findStepBase(const Decimal& defaultValue) const
|
|
|
| StepRange InputType::createStepRange(AnyStepHandling anyStepHandling, const Decimal& stepBaseDefault, const Decimal& minimumDefault, const Decimal& maximumDefault, const StepRange::StepDescription& stepDescription) const
|
| {
|
| + bool hasRangeLimitations = false;
|
| const Decimal stepBase = findStepBase(stepBaseDefault);
|
| - const Decimal minimum = parseToNumber(element().fastGetAttribute(minAttr), minimumDefault);
|
| - const Decimal maximum = parseToNumber(element().fastGetAttribute(maxAttr), maximumDefault);
|
| + Decimal minimum = parseToNumberOrNaN(element().fastGetAttribute(minAttr));
|
| + if (minimum.isFinite())
|
| + hasRangeLimitations = true;
|
| + else
|
| + minimum = minimumDefault;
|
| + Decimal maximum = parseToNumberOrNaN(element().fastGetAttribute(maxAttr));
|
| + if (maximum.isFinite())
|
| + hasRangeLimitations = true;
|
| + else
|
| + maximum = maximumDefault;
|
| const Decimal step = StepRange::parseStep(anyStepHandling, stepDescription, element().fastGetAttribute(stepAttr));
|
| - return StepRange(stepBase, minimum, maximum, step, stepDescription);
|
| + return StepRange(stepBase, minimum, maximum, hasRangeLimitations, step, stepDescription);
|
| }
|
|
|
| void InputType::addWarningToConsole(const char* messageFormat, const String& value) const
|
|
|