- Revision
- 119580
- Author
- [email protected]
- Date
- 2012-06-06 03:26:18 -0700 (Wed, 06 Jun 2012)
Log Message
[Form] Changes for InputNumber type
https://bugs.webkit.org/show_bug.cgi?id=88394
Reviewed by Kent Tamura.
This patch changes codes for consitency of InputNumber usage for
reducing size of patch when we change InputNumber type alias from
double to Decimal.
No new tests. This patch doesn't change behavior.
* html/BaseDateAndTimeInputType.cpp:
(WebCore::BaseDateAndTimeInputType::serializeWithComponents): Fixed parameter type for getAllowedValueStep.
* html/InputType.cpp:
(WebCore::InputType::minimum): Fixed return value type to InputNumber.
(WebCore::InputType::maximum): ditto.
* html/MonthInputType.cpp:
(WebCore::MonthInputType::defaultValueForStepUp): Fix return value type to InputNumber.
(WebCore::MonthInputType::parseToNumber): ditto.
* html/NumberInputType.cpp:
(WebCore::NumberInputType::setValueAsDouble): Removed extra convertDoubleToInputNumber.
* html/StepRange.cpp:
(WebCore::StepRange::alignValueForStep): Use roundByStep for code sharing.
(WebCore::StepRange::clampValue): ditto.
(WebCore::StepRange::roundByStep): Added.
* html/StepRange.h:
(StepRange): Added a declaration of roundByStep.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (119579 => 119580)
--- trunk/Source/WebCore/ChangeLog 2012-06-06 10:24:47 UTC (rev 119579)
+++ trunk/Source/WebCore/ChangeLog 2012-06-06 10:26:18 UTC (rev 119580)
@@ -1,3 +1,33 @@
+2012-06-06 Yoshifumi Inoue <[email protected]>
+
+ [Form] Changes for InputNumber type
+ https://bugs.webkit.org/show_bug.cgi?id=88394
+
+ Reviewed by Kent Tamura.
+
+ This patch changes codes for consitency of InputNumber usage for
+ reducing size of patch when we change InputNumber type alias from
+ double to Decimal.
+
+ No new tests. This patch doesn't change behavior.
+
+ * html/BaseDateAndTimeInputType.cpp:
+ (WebCore::BaseDateAndTimeInputType::serializeWithComponents): Fixed parameter type for getAllowedValueStep.
+ * html/InputType.cpp:
+ (WebCore::InputType::minimum): Fixed return value type to InputNumber.
+ (WebCore::InputType::maximum): ditto.
+ * html/MonthInputType.cpp:
+ (WebCore::MonthInputType::defaultValueForStepUp): Fix return value type to InputNumber.
+ (WebCore::MonthInputType::parseToNumber): ditto.
+ * html/NumberInputType.cpp:
+ (WebCore::NumberInputType::setValueAsDouble): Removed extra convertDoubleToInputNumber.
+ * html/StepRange.cpp:
+ (WebCore::StepRange::alignValueForStep): Use roundByStep for code sharing.
+ (WebCore::StepRange::clampValue): ditto.
+ (WebCore::StepRange::roundByStep): Added.
+ * html/StepRange.h:
+ (StepRange): Added a declaration of roundByStep.
+
2012-06-06 Michael BrĂ¼ning <[email protected]>
[Qt] Fix harmattan builds broken by r119247.
Modified: trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp (119579 => 119580)
--- trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp 2012-06-06 10:24:47 UTC (rev 119579)
+++ trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp 2012-06-06 10:26:18 UTC (rev 119580)
@@ -146,7 +146,7 @@
String BaseDateAndTimeInputType::serializeWithComponents(const DateComponents& date) const
{
- double step;
+ InputNumber step;
if (!element()->getAllowedValueStep(&step))
return date.toString();
if (!fmod(step, msecPerMinute))
Modified: trunk/Source/WebCore/html/InputType.cpp (119579 => 119580)
--- trunk/Source/WebCore/html/InputType.cpp 2012-06-06 10:24:47 UTC (rev 119579)
+++ trunk/Source/WebCore/html/InputType.cpp 2012-06-06 10:26:18 UTC (rev 119580)
@@ -282,12 +282,12 @@
double InputType::minimum() const
{
- return createStepRange(RejectAny).minimum();
+ return convertInputNumberToDouble(createStepRange(RejectAny).minimum());
}
double InputType::maximum() const
{
- return createStepRange(RejectAny).maximum();
+ return convertInputNumberToDouble(createStepRange(RejectAny).maximum());
}
bool InputType::sizeShouldIncludeDecoration(int, int& preferredSize) const
Modified: trunk/Source/WebCore/html/MonthInputType.cpp (119579 => 119580)
--- trunk/Source/WebCore/html/MonthInputType.cpp 2012-06-06 10:24:47 UTC (rev 119579)
+++ trunk/Source/WebCore/html/MonthInputType.cpp 2012-06-06 10:26:18 UTC (rev 119580)
@@ -94,7 +94,7 @@
date.setMillisecondsSinceEpochForMonth(current);
double months = date.monthsSinceEpoch();
ASSERT(isfinite(months));
- return months;
+ return convertDoubleToInputNumber(months);
}
StepRange MonthInputType::createStepRange(AnyStepHandling anyStepHandling) const
@@ -115,7 +115,7 @@
return defaultValue;
double months = date.monthsSinceEpoch();
ASSERT(isfinite(months));
- return months;
+ return convertDoubleToInputNumber(months);
}
bool MonthInputType::parseToDateComponentsInternal(const UChar* characters, unsigned length, DateComponents* out) const
Modified: trunk/Source/WebCore/html/NumberInputType.cpp (119579 => 119580)
--- trunk/Source/WebCore/html/NumberInputType.cpp 2012-06-06 10:24:47 UTC (rev 119579)
+++ trunk/Source/WebCore/html/NumberInputType.cpp 2012-06-06 10:26:18 UTC (rev 119580)
@@ -87,7 +87,7 @@
void NumberInputType::setValueAsDouble(double newValue, TextFieldEventBehavior eventBehavior, ExceptionCode& ec) const
{
// FIXME: We should use numeric_limits<double>::max for number input type.
- const double floatMax = convertDoubleToInputNumber(numeric_limits<float>::max());
+ const double floatMax = numeric_limits<float>::max();
if (newValue < -floatMax) {
ec = INVALID_STATE_ERR;
return;
Modified: trunk/Source/WebCore/html/StepRange.cpp (119579 => 119580)
--- trunk/Source/WebCore/html/StepRange.cpp 2012-06-06 10:24:47 UTC (rev 119579)
+++ trunk/Source/WebCore/html/StepRange.cpp 2012-06-06 10:26:18 UTC (rev 119580)
@@ -87,7 +87,7 @@
newValue = round(newValue * scale) / scale;
} else {
const InputNumber scale = pow(10.0, static_cast<InputNumber>(max(m_stepDecimalPlaces, m_stepBaseDecimalPlaces)));
- newValue = round((m_stepBase + round((newValue - m_stepBase) / m_step) * m_step) * scale) / scale;
+ newValue = round(roundByStep(newValue, m_stepBase) * scale) / scale;
}
return newValue;
@@ -99,7 +99,7 @@
if (!m_hasStep)
return inRangeValue;
// Rounds inRangeValue to minimum + N * step.
- const InputNumber roundedValue = m_minimum + round((inRangeValue - m_minimum) / m_step) * m_step;
+ const InputNumber roundedValue = roundByStep(inRangeValue, m_minimum);
const InputNumber clampedValue = roundedValue > m_maximum ? roundedValue - m_step : roundedValue;
ASSERT(clampedValue >= m_minimum);
ASSERT(clampedValue <= m_maximum);
@@ -149,6 +149,11 @@
return step;
}
+InputNumber StepRange::roundByStep(const InputNumber& value, const InputNumber& base) const
+{
+ return base + round((value - base) / m_step) * m_step;
+}
+
bool StepRange::stepMismatch(const InputNumber& valueForCheck) const
{
if (!m_hasStep)
Modified: trunk/Source/WebCore/html/StepRange.h (119579 => 119580)
--- trunk/Source/WebCore/html/StepRange.h 2012-06-06 10:24:47 UTC (rev 119579)
+++ trunk/Source/WebCore/html/StepRange.h 2012-06-06 10:26:18 UTC (rev 119580)
@@ -141,6 +141,7 @@
private:
StepRange& operator =(const StepRange&);
+ InputNumber roundByStep(const InputNumber& value, const InputNumber& base) const;
const InputNumber m_maximum; // maximum must be >= minimum.
const InputNumber m_minimum;