Changeset 120313 in webkit
- Timestamp:
- Jun 14, 2012 4:53:43 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 24 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r120311 r120313 1 2012-06-14 Yoshifumi Inoue <yosin@chromium.org> 2 3 [Form] Replace InputNumber type to Decimal type and drop InputNumber 4 https://bugs.webkit.org/show_bug.cgi?id=88746 5 6 Reviewed by Kent Tamura. 7 8 This patch removes InputNumber introduced by r119540 by replacing 9 InputNumber type to Decimal type and changing convertDoubleToDecimal 10 and convertDecimalToDouble to Decimal::fromDouble and 11 Decimal::toDouble, respectively. 12 13 No new tests. This patch doesn't change behavior. 14 15 * html/BaseDateAndTimeInputType.cpp: 16 (WebCore::BaseDateAndTimeInputType::setValueAsDecimal): 17 (WebCore::BaseDateAndTimeInputType::defaultValueForStepUp): 18 (WebCore::BaseDateAndTimeInputType::parseToNumber): 19 (WebCore::BaseDateAndTimeInputType::serialize): 20 (WebCore::BaseDateAndTimeInputType::serializeWithComponents): 21 (WebCore::BaseDateAndTimeInputType::serializeWithMilliseconds): 22 * html/BaseDateAndTimeInputType.h: 23 (BaseDateAndTimeInputType): 24 * html/DateInputType.cpp: 25 (WebCore::DateInputType::createStepRange): 26 * html/DateTimeInputType.cpp: 27 (WebCore::DateTimeInputType::defaultValueForStepUp): 28 (WebCore::DateTimeInputType::createStepRange): 29 * html/DateTimeInputType.h: 30 (DateTimeInputType): 31 * html/DateTimeLocalInputType.cpp: 32 (WebCore::DateTimeLocalInputType::createStepRange): 33 * html/HTMLInputElement.cpp: 34 (WebCore::HTMLInputElement::getAllowedValueStep): 35 * html/HTMLInputElement.h: 36 (HTMLInputElement): 37 * html/InputType.cpp: 38 (WebCore::InputType::setValueAsDouble): 39 (WebCore::InputType::setValueAsDecimal): 40 (WebCore::InputType::rangeUnderflow): 41 (WebCore::InputType::rangeOverflow): 42 (WebCore::InputType::defaultValueForStepUp): 43 (WebCore::InputType::minimum): 44 (WebCore::InputType::maximum): 45 (WebCore::InputType::isInRange): 46 (WebCore::InputType::isOutOfRange): 47 (WebCore::InputType::stepMismatch): 48 (WebCore::InputType::validationMessage): 49 (WebCore::InputType::parseToNumber): 50 (WebCore::InputType::parseToNumberOrNaN): 51 (WebCore::InputType::serialize): 52 (WebCore::InputType::applyStep): 53 (WebCore::InputType::getAllowedValueStep): 54 (WebCore::InputType::stepUpFromRenderer): 55 * html/InputType.h: 56 (InputType): 57 * html/MonthInputType.cpp: 58 (WebCore::MonthInputType::defaultValueForStepUp): 59 (WebCore::MonthInputType::createStepRange): 60 (WebCore::MonthInputType::parseToNumber): 61 * html/MonthInputType.h: 62 (MonthInputType): 63 * html/NumberInputType.cpp: 64 (WebCore::NumberInputType::setValueAsDecimal): 65 (WebCore::NumberInputType::createStepRange): 66 (WebCore::NumberInputType::parseToNumber): 67 (WebCore::NumberInputType::serialize): 68 * html/NumberInputType.h: 69 (NumberInputType): 70 * html/RangeInputType.cpp: 71 (WebCore::ensureMaximum): 72 (WebCore::RangeInputType::setValueAsDecimal): 73 (WebCore::RangeInputType::createStepRange): 74 (WebCore::RangeInputType::handleKeydownEvent): 75 (WebCore::RangeInputType::parseToNumber): 76 (WebCore::RangeInputType::serialize): 77 (WebCore::RangeInputType::sanitizeValue): 78 * html/RangeInputType.h: 79 (RangeInputType): 80 * html/StepRange.cpp: 81 (WebCore::StepRange::StepRange): 82 (WebCore::StepRange::acceptableError): 83 (WebCore::StepRange::alignValueForStep): 84 (WebCore::StepRange::clampValue): 85 (WebCore::StepRange::parseStep): 86 (WebCore::StepRange::roundByStep): 87 (WebCore::StepRange::stepMismatch): 88 * html/StepRange.h: 89 (WebCore::StepRange::StepDescription::defaultValue): 90 (StepRange): 91 (WebCore::StepRange::maximum): 92 (WebCore::StepRange::minimum): 93 (WebCore::StepRange::step): 94 (WebCore::StepRange::stepBase): 95 (WebCore::StepRange::defaultValue): 96 (WebCore::StepRange::proportionFromValue): 97 (WebCore::StepRange::valueFromProportion): 98 * html/TimeInputType.cpp: 99 (WebCore::TimeInputType::defaultValueForStepUp): 100 (WebCore::TimeInputType::createStepRange): 101 * html/TimeInputType.h: 102 (TimeInputType): 103 * html/WeekInputType.cpp: 104 (WebCore::WeekInputType::createStepRange): 105 * html/shadow/CalendarPickerElement.cpp: 106 (WebCore::CalendarPickerElement::writeDocument): 107 * html/shadow/SliderThumbElement.cpp: 108 (WebCore::sliderPosition): 109 (WebCore::RenderSliderThumb::layout): 110 (WebCore::SliderThumbElement::setPositionFromPoint): 111 1 112 2012-06-14 Jan Keromnes <janx@linux.com> 2 113 -
trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp
r119948 r120313 66 66 } 67 67 68 void BaseDateAndTimeInputType::setValueAs InputNumber(const InputNumber& newValue, TextFieldEventBehavior eventBehavior, ExceptionCode&) const68 void BaseDateAndTimeInputType::setValueAsDecimal(const Decimal& newValue, TextFieldEventBehavior eventBehavior, ExceptionCode&) const 69 69 { 70 70 element()->setValue(serialize(newValue), eventBehavior); … … 81 81 } 82 82 83 InputNumberBaseDateAndTimeInputType::defaultValueForStepUp() const83 Decimal BaseDateAndTimeInputType::defaultValueForStepUp() const 84 84 { 85 85 double ms = currentTimeMS(); … … 87 87 double dstOffset = calculateDSTOffset(ms, utcOffset); 88 88 int offset = static_cast<int>((utcOffset + dstOffset) / msPerMinute); 89 return convertDoubleToInputNumber(ms + (offset * msPerMinute));89 return Decimal::fromDouble(ms + (offset * msPerMinute)); 90 90 } 91 91 … … 119 119 } 120 120 121 InputNumber BaseDateAndTimeInputType::parseToNumber(const String& source, const InputNumber& defaultValue) const121 Decimal BaseDateAndTimeInputType::parseToNumber(const String& source, const Decimal& defaultValue) const 122 122 { 123 123 const double doubleValue = parseToDouble(source); 124 return isfinite(doubleValue) ? convertDoubleToInputNumber(doubleValue) : defaultValue;124 return isfinite(doubleValue) ? Decimal::fromDouble(doubleValue) : defaultValue; 125 125 } 126 126 … … 135 135 } 136 136 137 String BaseDateAndTimeInputType::serialize(const InputNumber& value) const137 String BaseDateAndTimeInputType::serialize(const Decimal& value) const 138 138 { 139 139 if (!value.isFinite()) 140 140 return String(); 141 141 DateComponents date; 142 if (!setMillisecondToDateComponents( convertInputNumberToDouble(value), &date))142 if (!setMillisecondToDateComponents(value.toDouble(), &date)) 143 143 return String(); 144 144 return serializeWithComponents(date); … … 147 147 String BaseDateAndTimeInputType::serializeWithComponents(const DateComponents& date) const 148 148 { 149 InputNumberstep;149 Decimal step; 150 150 if (!element()->getAllowedValueStep(&step)) 151 151 return date.toString(); … … 159 159 String BaseDateAndTimeInputType::serializeWithMilliseconds(double value) const 160 160 { 161 return serialize( convertDoubleToInputNumber(value));161 return serialize(Decimal::fromDouble(value)); 162 162 } 163 163 -
trunk/Source/WebCore/html/BaseDateAndTimeInputType.h
r119540 r120313 43 43 BaseDateAndTimeInputType(HTMLInputElement* element) : TextFieldInputType(element) { } 44 44 virtual void handleKeydownEvent(KeyboardEvent*) OVERRIDE; 45 virtual InputNumber parseToNumber(const String&, const InputNumber&) const OVERRIDE;45 virtual Decimal parseToNumber(const String&, const Decimal&) const OVERRIDE; 46 46 virtual bool parseToDateComponents(const String&, DateComponents*) const OVERRIDE; 47 47 String serializeWithComponents(const DateComponents&) const; … … 54 54 virtual void setValueAsDate(double, ExceptionCode&) const OVERRIDE; 55 55 virtual double valueAsDouble() const OVERRIDE; 56 virtual void setValueAs InputNumber(const InputNumber&, TextFieldEventBehavior, ExceptionCode&) const OVERRIDE;56 virtual void setValueAsDecimal(const Decimal&, TextFieldEventBehavior, ExceptionCode&) const OVERRIDE; 57 57 virtual bool typeMismatchFor(const String&) const OVERRIDE; 58 58 virtual bool typeMismatch() const OVERRIDE; 59 virtual InputNumberdefaultValueForStepUp() const OVERRIDE;59 virtual Decimal defaultValueForStepUp() const OVERRIDE; 60 60 virtual bool isSteppable() const OVERRIDE; 61 61 virtual void handleWheelEvent(WheelEvent*) OVERRIDE; 62 virtual String serialize(const InputNumber&) const OVERRIDE;62 virtual String serialize(const Decimal&) const OVERRIDE; 63 63 virtual String serializeWithMilliseconds(double) const; 64 64 virtual String localizeValue(const String&) const OVERRIDE; -
trunk/Source/WebCore/html/DateInputType.cpp
r119948 r120313 74 74 DEFINE_STATIC_LOCAL(const StepRange::StepDescription, stepDescription, (dateDefaultStep, dateDefaultStepBase, dateStepScaleFactor, StepRange::ParsedStepValueShouldBeInteger)); 75 75 76 const InputNumberstepBase = parseToNumber(element()->fastGetAttribute(minAttr), 0);77 const InputNumber minimum = parseToNumber(element()->fastGetAttribute(minAttr), convertDoubleToInputNumber(DateComponents::minimumDate()));78 const InputNumber maximum = parseToNumber(element()->fastGetAttribute(maxAttr), convertDoubleToInputNumber(DateComponents::maximumDate()));79 const InputNumberstep = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr));76 const Decimal stepBase = parseToNumber(element()->fastGetAttribute(minAttr), 0); 77 const Decimal minimum = parseToNumber(element()->fastGetAttribute(minAttr), Decimal::fromDouble(DateComponents::minimumDate())); 78 const Decimal maximum = parseToNumber(element()->fastGetAttribute(maxAttr), Decimal::fromDouble(DateComponents::maximumDate())); 79 const Decimal step = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr)); 80 80 return StepRange(stepBase, minimum, maximum, step, stepDescription); 81 81 } -
trunk/Source/WebCore/html/DateTimeInputType.cpp
r119948 r120313 63 63 } 64 64 65 InputNumberDateTimeInputType::defaultValueForStepUp() const65 Decimal DateTimeInputType::defaultValueForStepUp() const 66 66 { 67 return convertDoubleToInputNumber(currentTimeMS());67 return Decimal::fromDouble(currentTimeMS()); 68 68 } 69 69 … … 72 72 DEFINE_STATIC_LOCAL(const StepRange::StepDescription, stepDescription, (dateTimeDefaultStep, dateTimeDefaultStepBase, dateTimeStepScaleFactor, StepRange::ScaledStepValueShouldBeInteger)); 73 73 74 const InputNumberstepBase = parseToNumber(element()->fastGetAttribute(minAttr), 0);75 const InputNumber minimum = parseToNumber(element()->fastGetAttribute(minAttr), convertDoubleToInputNumber(DateComponents::minimumDateTime()));76 const InputNumber maximum = parseToNumber(element()->fastGetAttribute(maxAttr), convertDoubleToInputNumber(DateComponents::maximumDateTime()));77 const InputNumberstep = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr));74 const Decimal stepBase = parseToNumber(element()->fastGetAttribute(minAttr), 0); 75 const Decimal minimum = parseToNumber(element()->fastGetAttribute(minAttr), Decimal::fromDouble(DateComponents::minimumDateTime())); 76 const Decimal maximum = parseToNumber(element()->fastGetAttribute(maxAttr), Decimal::fromDouble(DateComponents::maximumDateTime())); 77 const Decimal step = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr)); 78 78 return StepRange(stepBase, minimum, maximum, step, stepDescription); 79 79 } -
trunk/Source/WebCore/html/DateTimeInputType.h
r119540 r120313 47 47 virtual DateComponents::Type dateType() const OVERRIDE; 48 48 virtual StepRange createStepRange(AnyStepHandling) const OVERRIDE; 49 virtual InputNumberdefaultValueForStepUp() const OVERRIDE;49 virtual Decimal defaultValueForStepUp() const OVERRIDE; 50 50 virtual bool parseToDateComponentsInternal(const UChar*, unsigned length, DateComponents*) const OVERRIDE; 51 51 virtual bool setMillisecondToDateComponents(double, DateComponents*) const OVERRIDE; -
trunk/Source/WebCore/html/DateTimeLocalInputType.cpp
r119948 r120313 78 78 DEFINE_STATIC_LOCAL(const StepRange::StepDescription, stepDescription, (dateTimeLocalDefaultStep, dateTimeLocalDefaultStepBase, dateTimeLocalStepScaleFactor, StepRange::ScaledStepValueShouldBeInteger)); 79 79 80 const InputNumberstepBase = parseToNumber(element()->fastGetAttribute(minAttr), 0);81 const InputNumber minimum = parseToNumber(element()->fastGetAttribute(minAttr), convertDoubleToInputNumber(DateComponents::minimumDateTime()));82 const InputNumber maximum = parseToNumber(element()->fastGetAttribute(maxAttr), convertDoubleToInputNumber(DateComponents::maximumDateTime()));83 const InputNumberstep = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr));80 const Decimal stepBase = parseToNumber(element()->fastGetAttribute(minAttr), 0); 81 const Decimal minimum = parseToNumber(element()->fastGetAttribute(minAttr), Decimal::fromDouble(DateComponents::minimumDateTime())); 82 const Decimal maximum = parseToNumber(element()->fastGetAttribute(maxAttr), Decimal::fromDouble(DateComponents::maximumDateTime())); 83 const Decimal step = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr)); 84 84 return StepRange(stepBase, minimum, maximum, step, stepDescription); 85 85 } -
trunk/Source/WebCore/html/HTMLInputElement.cpp
r120251 r120313 275 275 } 276 276 277 bool HTMLInputElement::getAllowedValueStep( InputNumber* step) const277 bool HTMLInputElement::getAllowedValueStep(Decimal* step) const 278 278 { 279 279 return m_inputType->getAllowedValueStep(step); -
trunk/Source/WebCore/html/HTMLInputElement.h
r120081 r120313 68 68 // Sets the "allowed value step" defined in the HTML spec to the specified double pointer. 69 69 // Returns false if there is no "allowed value step." 70 bool getAllowedValueStep( InputNumber*) const;70 bool getAllowedValueStep(Decimal*) const; 71 71 StepRange createStepRange(AnyStepHandling) const; 72 72 -
trunk/Source/WebCore/html/InputType.cpp
r120081 r120313 213 213 void InputType::setValueAsDouble(double doubleValue, TextFieldEventBehavior eventBehavior, ExceptionCode& ec) const 214 214 { 215 setValueAs InputNumber(convertDoubleToInputNumber(doubleValue), eventBehavior, ec);216 } 217 218 void InputType::setValueAs InputNumber(const InputNumber&, TextFieldEventBehavior, ExceptionCode& ec) const215 setValueAsDecimal(Decimal::fromDouble(doubleValue), eventBehavior, ec); 216 } 217 218 void InputType::setValueAsDecimal(const Decimal&, TextFieldEventBehavior, ExceptionCode& ec) const 219 219 { 220 220 ec = INVALID_STATE_ERR; … … 257 257 return false; 258 258 259 const InputNumbernumericValue = parseToNumberOrNaN(value);259 const Decimal numericValue = parseToNumberOrNaN(value); 260 260 if (!numericValue.isFinite()) 261 261 return false; … … 269 269 return false; 270 270 271 const InputNumbernumericValue = parseToNumberOrNaN(value);271 const Decimal numericValue = parseToNumberOrNaN(value); 272 272 if (!numericValue.isFinite()) 273 273 return false; … … 276 276 } 277 277 278 InputNumberInputType::defaultValueForStepUp() const278 Decimal InputType::defaultValueForStepUp() const 279 279 { 280 280 return 0; … … 283 283 double InputType::minimum() const 284 284 { 285 return c onvertInputNumberToDouble(createStepRange(RejectAny).minimum());285 return createStepRange(RejectAny).minimum().toDouble(); 286 286 } 287 287 288 288 double InputType::maximum() const 289 289 { 290 return c onvertInputNumberToDouble(createStepRange(RejectAny).maximum());290 return createStepRange(RejectAny).maximum().toDouble(); 291 291 } 292 292 … … 302 302 return false; 303 303 304 const InputNumbernumericValue = parseToNumberOrNaN(value);304 const Decimal numericValue = parseToNumberOrNaN(value); 305 305 if (!numericValue.isFinite()) 306 306 return true; … … 315 315 return false; 316 316 317 const InputNumbernumericValue = parseToNumberOrNaN(value);317 const Decimal numericValue = parseToNumberOrNaN(value); 318 318 if (!numericValue.isFinite()) 319 319 return true; … … 328 328 return false; 329 329 330 const InputNumbernumericValue = parseToNumberOrNaN(value);330 const Decimal numericValue = parseToNumberOrNaN(value); 331 331 if (!numericValue.isFinite()) 332 332 return false; … … 366 366 return emptyString(); 367 367 368 const InputNumbernumericValue = parseToNumberOrNaN(value);368 const Decimal numericValue = parseToNumberOrNaN(value); 369 369 if (!numericValue.isFinite()) 370 370 return emptyString(); … … 459 459 } 460 460 461 InputNumber InputType::parseToNumber(const String&, const InputNumber& defaultValue) const461 Decimal InputType::parseToNumber(const String&, const Decimal& defaultValue) const 462 462 { 463 463 ASSERT_NOT_REACHED(); … … 465 465 } 466 466 467 InputNumberInputType::parseToNumberOrNaN(const String& string) const467 Decimal InputType::parseToNumberOrNaN(const String& string) const 468 468 { 469 469 return parseToNumber(string, Decimal::nan()); … … 476 476 } 477 477 478 String InputType::serialize(const InputNumber&) const478 String InputType::serialize(const Decimal&) const 479 479 { 480 480 ASSERT_NOT_REACHED(); … … 881 881 } 882 882 883 const InputNumbercurrent = parseToNumberOrNaN(element()->value());883 const Decimal current = parseToNumberOrNaN(element()->value()); 884 884 if (!current.isFinite()) { 885 885 ec = INVALID_STATE_ERR; 886 886 return; 887 887 } 888 InputNumbernewValue = current + stepRange.step() * count;888 Decimal newValue = current + stepRange.step() * count; 889 889 if (!newValue.isFinite()) { 890 890 ec = INVALID_STATE_ERR; … … 892 892 } 893 893 894 const InputNumberacceptableErrorValue = stepRange.acceptableError();894 const Decimal acceptableErrorValue = stepRange.acceptableError(); 895 895 if (newValue - stepRange.minimum() < -acceptableErrorValue) { 896 896 ec = INVALID_STATE_ERR; … … 911 911 newValue = stepRange.maximum(); 912 912 913 setValueAs InputNumber(newValue, eventBehavior, ec);913 setValueAsDecimal(newValue, eventBehavior, ec); 914 914 915 915 if (AXObjectCache::accessibilityEnabled()) … … 917 917 } 918 918 919 bool InputType::getAllowedValueStep( InputNumber* step) const919 bool InputType::getAllowedValueStep(Decimal* step) const 920 920 { 921 921 StepRange stepRange(createStepRange(RejectAny)); … … 990 990 return; 991 991 992 const InputNumberstep = stepRange.step();992 const Decimal step = stepRange.step(); 993 993 994 994 int sign; … … 1001 1001 1002 1002 String currentStringValue = element()->value(); 1003 InputNumbercurrent = parseToNumberOrNaN(currentStringValue);1003 Decimal current = parseToNumberOrNaN(currentStringValue); 1004 1004 if (!current.isFinite()) { 1005 1005 ExceptionCode ec; 1006 1006 current = defaultValueForStepUp(); 1007 const InputNumbernextDiff = step * n;1007 const Decimal nextDiff = step * n; 1008 1008 if (current < stepRange.minimum() - nextDiff) 1009 1009 current = stepRange.minimum() - nextDiff; 1010 1010 if (current > stepRange.maximum() - nextDiff) 1011 1011 current = stepRange.maximum() - nextDiff; 1012 setValueAs InputNumber(current, DispatchInputAndChangeEvent, ec);1012 setValueAsDecimal(current, DispatchInputAndChangeEvent, ec); 1013 1013 } 1014 1014 if ((sign > 0 && current < stepRange.minimum()) || (sign < 0 && current > stepRange.maximum())) { 1015 1015 ExceptionCode ec; 1016 setValueAs InputNumber(sign > 0 ? stepRange.minimum() : stepRange.maximum(), DispatchInputAndChangeEvent, ec);1016 setValueAsDecimal(sign > 0 ? stepRange.minimum() : stepRange.maximum(), DispatchInputAndChangeEvent, ec); 1017 1017 } else { 1018 1018 ExceptionCode ec; … … 1033 1033 newValue = stepRange.maximum(); 1034 1034 1035 setValueAs InputNumber(newValue, n == 1 || n == -1 ? DispatchInputAndChangeEvent : DispatchNoEvent, ec);1035 setValueAsDecimal(newValue, n == 1 || n == -1 ? DispatchInputAndChangeEvent : DispatchNoEvent, ec); 1036 1036 if (n > 1) 1037 1037 applyStep(n - 1, AnyIsDefaultStep, DispatchInputAndChangeEvent, ec); -
trunk/Source/WebCore/html/InputType.h
r120081 r120313 141 141 virtual double valueAsDouble() const; 142 142 virtual void setValueAsDouble(double, TextFieldEventBehavior, ExceptionCode&) const; 143 virtual void setValueAs InputNumber(const InputNumber&, TextFieldEventBehavior, ExceptionCode&) const;143 virtual void setValueAsDecimal(const Decimal&, TextFieldEventBehavior, ExceptionCode&) const; 144 144 145 145 // Validation functions … … 158 158 bool isInRange(const String&) const; 159 159 bool isOutOfRange(const String&) const; 160 virtual InputNumberdefaultValueForStepUp() const;160 virtual Decimal defaultValueForStepUp() const; 161 161 double minimum() const; 162 162 double maximum() const; 163 163 virtual bool sizeShouldIncludeDecoration(int defaultSize, int& preferredSize) const; 164 164 bool stepMismatch(const String&) const; 165 virtual bool getAllowedValueStep( InputNumber*) const;165 virtual bool getAllowedValueStep(Decimal*) const; 166 166 virtual StepRange createStepRange(AnyStepHandling) const; 167 167 virtual void stepUp(int, ExceptionCode&); … … 264 264 265 265 // Parses the specified string for the type, and return 266 // the InputNumbervalue for the parsing result if the parsing266 // the Decimal value for the parsing result if the parsing 267 267 // succeeds; Returns defaultValue otherwise. This function can 268 268 // return NaN or Infinity only if defaultValue is NaN or Infinity. 269 virtual InputNumber parseToNumber(const String&, const InputNumber& defaultValue) const;269 virtual Decimal parseToNumber(const String&, const Decimal& defaultValue) const; 270 270 271 271 // Parses the specified string for this InputType, and returns true if it … … 275 275 virtual bool parseToDateComponents(const String&, DateComponents*) const; 276 276 277 // Create a string representation of the specified InputNumbervalue for the277 // Create a string representation of the specified Decimal value for the 278 278 // input type. If NaN or Infinity is specified, this returns an empty 279 279 // string. This should not be called for types without valueAsNumber. 280 virtual String serialize(const InputNumber&) const;280 virtual String serialize(const Decimal&) const; 281 281 282 282 virtual bool supportsIndeterminateAppearance() const; … … 292 292 void dispatchSimulatedClickIfActive(KeyboardEvent*) const; 293 293 Chrome* chrome() const; 294 InputNumberparseToNumberOrNaN(const String&) const;294 Decimal parseToNumberOrNaN(const String&) const; 295 295 296 296 private: -
trunk/Source/WebCore/html/MonthInputType.cpp
r119948 r120313 83 83 } 84 84 85 InputNumberMonthInputType::defaultValueForStepUp() const85 Decimal MonthInputType::defaultValueForStepUp() const 86 86 { 87 87 double current = currentTimeMS(); … … 95 95 double months = date.monthsSinceEpoch(); 96 96 ASSERT(isfinite(months)); 97 return convertDoubleToInputNumber(months);97 return Decimal::fromDouble(months); 98 98 } 99 99 … … 102 102 DEFINE_STATIC_LOCAL(const StepRange::StepDescription, stepDescription, (monthDefaultStep, monthDefaultStepBase, monthStepScaleFactor, StepRange::ParsedStepValueShouldBeInteger)); 103 103 104 const InputNumber stepBase = parseToNumber(element()->fastGetAttribute(minAttr), convertDoubleToInputNumber(DateComponents::minimumMonth()));105 const InputNumber minimum = parseToNumber(element()->fastGetAttribute(minAttr), convertDoubleToInputNumber(DateComponents::minimumMonth()));106 const InputNumber maximum = parseToNumber(element()->fastGetAttribute(maxAttr), convertDoubleToInputNumber(DateComponents::maximumMonth()));107 const InputNumberstep = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr));104 const Decimal stepBase = parseToNumber(element()->fastGetAttribute(minAttr), Decimal::fromDouble(DateComponents::minimumMonth())); 105 const Decimal minimum = parseToNumber(element()->fastGetAttribute(minAttr), Decimal::fromDouble(DateComponents::minimumMonth())); 106 const Decimal maximum = parseToNumber(element()->fastGetAttribute(maxAttr), Decimal::fromDouble(DateComponents::maximumMonth())); 107 const Decimal step = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr)); 108 108 return StepRange(stepBase, minimum, maximum, step, stepDescription); 109 109 } 110 110 111 InputNumber MonthInputType::parseToNumber(const String& src, const InputNumber& defaultValue) const111 Decimal MonthInputType::parseToNumber(const String& src, const Decimal& defaultValue) const 112 112 { 113 113 DateComponents date; … … 116 116 double months = date.monthsSinceEpoch(); 117 117 ASSERT(isfinite(months)); 118 return convertDoubleToInputNumber(months);118 return Decimal::fromDouble(months); 119 119 } 120 120 -
trunk/Source/WebCore/html/MonthInputType.h
r119540 r120313 48 48 virtual double valueAsDate() const OVERRIDE; 49 49 virtual String serializeWithMilliseconds(double) const OVERRIDE; 50 virtual InputNumber parseToNumber(const String&, const InputNumber&) const OVERRIDE;51 virtual InputNumberdefaultValueForStepUp() const OVERRIDE;50 virtual Decimal parseToNumber(const String&, const Decimal&) const OVERRIDE; 51 virtual Decimal defaultValueForStepUp() const OVERRIDE; 52 52 virtual StepRange createStepRange(AnyStepHandling) const OVERRIDE; 53 53 virtual bool parseToDateComponentsInternal(const UChar*, unsigned length, DateComponents*) const OVERRIDE; -
trunk/Source/WebCore/html/NumberInputType.cpp
r119948 r120313 125 125 } 126 126 127 void NumberInputType::setValueAs InputNumber(const InputNumber& newValue, TextFieldEventBehavior eventBehavior, ExceptionCode& ec) const127 void NumberInputType::setValueAsDecimal(const Decimal& newValue, TextFieldEventBehavior eventBehavior, ExceptionCode& ec) const 128 128 { 129 129 // FIXME: We should use numeric_limits<double>::max for number input type. 130 const InputNumber floatMax = convertDoubleToInputNumber(numeric_limits<float>::max());130 const Decimal floatMax = Decimal::fromDouble(numeric_limits<float>::max()); 131 131 if (newValue < -floatMax) { 132 132 ec = INVALID_STATE_ERR; … … 154 154 { 155 155 DEFINE_STATIC_LOCAL(const StepRange::StepDescription, stepDescription, (numberDefaultStep, numberDefaultStepBase, numberStepScaleFactor)); 156 const InputNumberstepBase = parseToDecimalForNumberType(element()->fastGetAttribute(minAttr), numberDefaultStepBase);156 const Decimal stepBase = parseToDecimalForNumberType(element()->fastGetAttribute(minAttr), numberDefaultStepBase); 157 157 // FIXME: We should use numeric_limits<double>::max for number input type. 158 const InputNumber floatMax = convertDoubleToInputNumber(numeric_limits<float>::max());159 const InputNumberminimum = parseToNumber(element()->fastGetAttribute(minAttr), -floatMax);160 const InputNumbermaximum = parseToNumber(element()->fastGetAttribute(maxAttr), floatMax);161 const InputNumberstep = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr));158 const Decimal floatMax = Decimal::fromDouble(numeric_limits<float>::max()); 159 const Decimal minimum = parseToNumber(element()->fastGetAttribute(minAttr), -floatMax); 160 const Decimal maximum = parseToNumber(element()->fastGetAttribute(maxAttr), floatMax); 161 const Decimal step = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr)); 162 162 return StepRange(stepBase, minimum, maximum, step, stepDescription); 163 163 } … … 206 206 } 207 207 208 InputNumber NumberInputType::parseToNumber(const String& src, const InputNumber& defaultValue) const208 Decimal NumberInputType::parseToNumber(const String& src, const Decimal& defaultValue) const 209 209 { 210 210 return parseToDecimalForNumberType(src, defaultValue); 211 211 } 212 212 213 String NumberInputType::serialize(const InputNumber& value) const213 String NumberInputType::serialize(const Decimal& value) const 214 214 { 215 215 if (!value.isFinite()) -
trunk/Source/WebCore/html/NumberInputType.h
r119948 r120313 45 45 virtual double valueAsDouble() const OVERRIDE; 46 46 virtual void setValueAsDouble(double, TextFieldEventBehavior, ExceptionCode&) const OVERRIDE; 47 virtual void setValueAs InputNumber(const InputNumber&, TextFieldEventBehavior, ExceptionCode&) const OVERRIDE;47 virtual void setValueAsDecimal(const Decimal&, TextFieldEventBehavior, ExceptionCode&) const OVERRIDE; 48 48 virtual bool typeMismatchFor(const String&) const OVERRIDE; 49 49 virtual bool typeMismatch() const OVERRIDE; … … 53 53 virtual void handleKeydownEvent(KeyboardEvent*) OVERRIDE; 54 54 virtual void handleWheelEvent(WheelEvent*) OVERRIDE; 55 virtual InputNumber parseToNumber(const String&, const InputNumber&) const OVERRIDE;56 virtual String serialize(const InputNumber&) const OVERRIDE;55 virtual Decimal parseToNumber(const String&, const Decimal&) const OVERRIDE; 56 virtual String serialize(const Decimal&) const OVERRIDE; 57 57 virtual void handleBlurEvent() OVERRIDE; 58 58 virtual String localizeValue(const String&) const OVERRIDE; -
trunk/Source/WebCore/html/RangeInputType.cpp
r119948 r120313 61 61 static const int rangeStepScaleFactor = 1; 62 62 63 static InputNumber ensureMaximum(const InputNumber& proposedValue, const InputNumber& minimum, const InputNumber& fallbackValue)63 static Decimal ensureMaximum(const Decimal& proposedValue, const Decimal& minimum, const Decimal& fallbackValue) 64 64 { 65 65 return proposedValue >= minimum ? proposedValue : std::max(minimum, fallbackValue); … … 86 86 } 87 87 88 void RangeInputType::setValueAs InputNumber(const InputNumber& newValue, TextFieldEventBehavior eventBehavior, ExceptionCode&) const88 void RangeInputType::setValueAsDecimal(const Decimal& newValue, TextFieldEventBehavior eventBehavior, ExceptionCode&) const 89 89 { 90 90 element()->setValue(serialize(newValue), eventBehavior); … … 100 100 DEFINE_STATIC_LOCAL(const StepRange::StepDescription, stepDescription, (rangeDefaultStep, rangeDefaultStepBase, rangeStepScaleFactor)); 101 101 102 const InputNumberminimum = parseToNumber(element()->fastGetAttribute(minAttr), rangeDefaultMinimum);103 const InputNumbermaximum = ensureMaximum(parseToNumber(element()->fastGetAttribute(maxAttr), rangeDefaultMaximum), minimum, rangeDefaultMaximum);102 const Decimal minimum = parseToNumber(element()->fastGetAttribute(minAttr), rangeDefaultMinimum); 103 const Decimal maximum = ensureMaximum(parseToNumber(element()->fastGetAttribute(maxAttr), rangeDefaultMaximum), minimum, rangeDefaultMaximum); 104 104 105 105 const AtomicString& precisionValue = element()->fastGetAttribute(precisionAttr); 106 106 if (!precisionValue.isNull()) { 107 const InputNumberstep = equalIgnoringCase(precisionValue, "float") ? Decimal::nan() : 1;107 const Decimal step = equalIgnoringCase(precisionValue, "float") ? Decimal::nan() : 1; 108 108 return StepRange(minimum, minimum, maximum, step, stepDescription); 109 109 } 110 110 111 const InputNumberstep = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr));111 const Decimal step = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr)); 112 112 return StepRange(minimum, minimum, maximum, step, stepDescription); 113 113 } … … 142 142 const String& key = event->keyIdentifier(); 143 143 144 const InputNumbercurrent = parseToNumberOrNaN(element()->value());144 const Decimal current = parseToNumberOrNaN(element()->value()); 145 145 ASSERT(current.isFinite()); 146 146 … … 150 150 // FIXME: We can't use stepUp() for the step value "any". So, we increase 151 151 // or decrease the value by 1/100 of the value range. Is it reasonable? 152 const InputNumberstep = equalIgnoringCase(element()->fastGetAttribute(stepAttr), "any") ? (stepRange.maximum() - stepRange.minimum()) / 100 : stepRange.step();153 const InputNumberbigStep = max((stepRange.maximum() - stepRange.minimum()) / 10, step);152 const Decimal step = equalIgnoringCase(element()->fastGetAttribute(stepAttr), "any") ? (stepRange.maximum() - stepRange.minimum()) / 100 : stepRange.step(); 153 const Decimal bigStep = max((stepRange.maximum() - stepRange.minimum()) / 10, step); 154 154 155 155 bool isVertical = false; … … 159 159 } 160 160 161 InputNumbernewValue;161 Decimal newValue; 162 162 if (key == "Up") 163 163 newValue = current + step; … … 184 184 ExceptionCode ec; 185 185 TextFieldEventBehavior eventBehavior = DispatchChangeEvent; 186 setValueAs InputNumber(newValue, eventBehavior, ec);186 setValueAsDecimal(newValue, eventBehavior, ec); 187 187 188 188 if (AXObjectCache::accessibilityEnabled()) … … 214 214 } 215 215 216 InputNumber RangeInputType::parseToNumber(const String& src, const InputNumber& defaultValue) const216 Decimal RangeInputType::parseToNumber(const String& src, const Decimal& defaultValue) const 217 217 { 218 218 return parseToDecimalForNumberType(src, defaultValue); 219 219 } 220 220 221 String RangeInputType::serialize(const InputNumber& value) const221 String RangeInputType::serialize(const Decimal& value) const 222 222 { 223 223 if (!value.isFinite()) … … 264 264 { 265 265 StepRange stepRange(createStepRange(RejectAny)); 266 const InputNumberproposedNumericValue = parseToNumber(proposedValue, stepRange.defaultValue());266 const Decimal proposedNumericValue = parseToNumber(proposedValue, stepRange.defaultValue()); 267 267 return serializeForNumberType(stepRange.clampValue(proposedNumericValue)); 268 268 } -
trunk/Source/WebCore/html/RangeInputType.h
r119540 r120313 47 47 virtual const AtomicString& formControlType() const OVERRIDE; 48 48 virtual double valueAsDouble() const OVERRIDE; 49 virtual void setValueAs InputNumber(const InputNumber&, TextFieldEventBehavior, ExceptionCode&) const OVERRIDE;49 virtual void setValueAsDecimal(const Decimal&, TextFieldEventBehavior, ExceptionCode&) const OVERRIDE; 50 50 virtual bool supportsRequired() const OVERRIDE; 51 51 virtual StepRange createStepRange(AnyStepHandling) const OVERRIDE; … … 55 55 virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) const OVERRIDE; 56 56 virtual void createShadowSubtree() OVERRIDE; 57 virtual InputNumber parseToNumber(const String&, const InputNumber&) const OVERRIDE;58 virtual String serialize(const InputNumber&) const OVERRIDE;57 virtual Decimal parseToNumber(const String&, const Decimal&) const OVERRIDE; 58 virtual String serialize(const Decimal&) const OVERRIDE; 59 59 virtual void accessKeyAction(bool sendMouseEvents) OVERRIDE; 60 60 virtual void minOrMaxAttributeChanged() OVERRIDE; -
trunk/Source/WebCore/html/StepRange.cpp
r119948 r120313 52 52 } 53 53 54 StepRange::StepRange(const InputNumber& stepBase, const InputNumber& minimum, const InputNumber& maximum, const InputNumber& step, const StepDescription& stepDescription)54 StepRange::StepRange(const Decimal& stepBase, const Decimal& minimum, const Decimal& maximum, const Decimal& step, const StepDescription& stepDescription) 55 55 : m_maximum(maximum) 56 56 , m_minimum(minimum) … … 66 66 } 67 67 68 InputNumberStepRange::acceptableError() const68 Decimal StepRange::acceptableError() const 69 69 { 70 70 // FIXME: We should use DBL_MANT_DIG instead of FLT_MANT_DIG regarding to HTML5 specification. … … 73 73 } 74 74 75 InputNumber StepRange::alignValueForStep(const InputNumber& currentValue, const InputNumber& newValue) const75 Decimal StepRange::alignValueForStep(const Decimal& currentValue, const Decimal& newValue) const 76 76 { 77 77 DEFINE_STATIC_LOCAL(const Decimal, tenPowerOf21, (Decimal::Positive, 21, 1)); … … 82 82 } 83 83 84 InputNumber StepRange::clampValue(const InputNumber& value) const84 Decimal StepRange::clampValue(const Decimal& value) const 85 85 { 86 const InputNumberinRangeValue = max(m_minimum, min(value, m_maximum));86 const Decimal inRangeValue = max(m_minimum, min(value, m_maximum)); 87 87 if (!m_hasStep) 88 88 return inRangeValue; 89 89 // Rounds inRangeValue to minimum + N * step. 90 const InputNumberroundedValue = roundByStep(inRangeValue, m_minimum);91 const InputNumberclampedValue = roundedValue > m_maximum ? roundedValue - m_step : roundedValue;90 const Decimal roundedValue = roundByStep(inRangeValue, m_minimum); 91 const Decimal clampedValue = roundedValue > m_maximum ? roundedValue - m_step : roundedValue; 92 92 ASSERT(clampedValue >= m_minimum); 93 93 ASSERT(clampedValue <= m_maximum); … … 95 95 } 96 96 97 InputNumberStepRange::parseStep(AnyStepHandling anyStepHandling, const StepDescription& stepDescription, const String& stepString)97 Decimal StepRange::parseStep(AnyStepHandling anyStepHandling, const StepDescription& stepDescription, const String& stepString) 98 98 { 99 99 if (stepString.isEmpty()) … … 137 137 } 138 138 139 InputNumber StepRange::roundByStep(const InputNumber& value, const InputNumber& base) const139 Decimal StepRange::roundByStep(const Decimal& value, const Decimal& base) const 140 140 { 141 141 return base + ((value - base) / m_step).round() * m_step; 142 142 } 143 143 144 bool StepRange::stepMismatch(const InputNumber& valueForCheck) const144 bool StepRange::stepMismatch(const Decimal& valueForCheck) const 145 145 { 146 146 if (!m_hasStep) … … 148 148 if (!valueForCheck.isFinite()) 149 149 return false; 150 const InputNumbervalue = (valueForCheck - m_stepBase).abs();150 const Decimal value = (valueForCheck - m_stepBase).abs(); 151 151 if (!value.isFinite()) 152 152 return false; 153 // InputNumber's fractional part size is DBL_MAN_DIG-bit. If the current value153 // Decimal's fractional part size is DBL_MAN_DIG-bit. If the current value 154 154 // is greater than step*2^DBL_MANT_DIG, the following computation for 155 155 // remainder makes no sense. … … 160 160 // ... that number subtracted from the step base is not an integral multiple 161 161 // of the allowed value step, the element is suffering from a step mismatch. 162 const InputNumberremainder = (value - m_step * (value / m_step).round()).abs();162 const Decimal remainder = (value - m_step * (value / m_step).round()).abs(); 163 163 // Accepts erros in lower fractional part which IEEE 754 single-precision 164 164 // can't represent. 165 const InputNumbercomputedAcceptableError = acceptableError();165 const Decimal computedAcceptableError = acceptableError(); 166 166 return computedAcceptableError < remainder && remainder < (m_step - computedAcceptableError); 167 167 } -
trunk/Source/WebCore/html/StepRange.h
r119948 r120313 32 32 enum AnyStepHandling { RejectAny, AnyIsDefaultStep }; 33 33 34 // FIXME: We should rename InputNumber to Decimal in all places.35 typedef Decimal InputNumber;36 37 inline InputNumber convertDoubleToInputNumber(double doubleValue)38 {39 return Decimal::fromDouble(doubleValue);40 }41 42 inline double convertInputNumberToDouble(const InputNumber& numericValue)43 {44 return numericValue.toDouble();45 }46 47 34 class StepRange { 48 35 public: … … 75 62 } 76 63 77 InputNumberdefaultValue() const64 Decimal defaultValue() const 78 65 { 79 66 return defaultStep * stepScaleFactor; … … 83 70 StepRange(); 84 71 StepRange(const StepRange&); 85 StepRange(const InputNumber& stepBase, const InputNumber& minimum, const InputNumber& maximum, const InputNumber& step, const StepDescription&);86 InputNumberacceptableError() const;87 InputNumber alignValueForStep(const InputNumber& currentValue, const InputNumber& newValue) const;88 InputNumber clampValue(const InputNumber& value) const;72 StepRange(const Decimal& stepBase, const Decimal& minimum, const Decimal& maximum, const Decimal& step, const StepDescription&); 73 Decimal acceptableError() const; 74 Decimal alignValueForStep(const Decimal& currentValue, const Decimal& newValue) const; 75 Decimal clampValue(const Decimal& value) const; 89 76 bool hasStep() const { return m_hasStep; } 90 InputNumbermaximum() const { return m_maximum; }91 InputNumberminimum() const { return m_minimum; }92 static InputNumberparseStep(AnyStepHandling, const StepDescription&, const String&);93 InputNumberstep() const { return m_step; }94 InputNumberstepBase() const { return m_stepBase; }77 Decimal maximum() const { return m_maximum; } 78 Decimal minimum() const { return m_minimum; } 79 static Decimal parseStep(AnyStepHandling, const StepDescription&, const String&); 80 Decimal step() const { return m_step; } 81 Decimal stepBase() const { return m_stepBase; } 95 82 int stepScaleFactor() const { return m_stepDescription.stepScaleFactor; } 96 bool stepMismatch(const InputNumber&) const;83 bool stepMismatch(const Decimal&) const; 97 84 98 85 // Clamp the middle value according to the step 99 InputNumberdefaultValue() const86 Decimal defaultValue() const 100 87 { 101 88 return clampValue((m_minimum + m_maximum) / 2); … … 103 90 104 91 // Map value into 0-1 range 105 InputNumber proportionFromValue(const InputNumber& value) const92 Decimal proportionFromValue(const Decimal& value) const 106 93 { 107 94 if (m_minimum == m_maximum) … … 112 99 113 100 // Map from 0-1 range to value 114 InputNumber valueFromProportion(const InputNumber& proportion) const101 Decimal valueFromProportion(const Decimal& proportion) const 115 102 { 116 103 return m_minimum + proportion * (m_maximum - m_minimum); … … 119 106 private: 120 107 StepRange& operator =(const StepRange&); 121 InputNumber roundByStep(const InputNumber& value, const InputNumber& base) const;108 Decimal roundByStep(const Decimal& value, const Decimal& base) const; 122 109 123 const InputNumberm_maximum; // maximum must be >= minimum.124 const InputNumberm_minimum;125 const InputNumberm_step;126 const InputNumberm_stepBase;110 const Decimal m_maximum; // maximum must be >= minimum. 111 const Decimal m_minimum; 112 const Decimal m_step; 113 const Decimal m_stepBase; 127 114 const StepDescription m_stepDescription; 128 115 const bool m_hasStep; -
trunk/Source/WebCore/html/TimeInputType.cpp
r119948 r120313 65 65 } 66 66 67 InputNumberTimeInputType::defaultValueForStepUp() const67 Decimal TimeInputType::defaultValueForStepUp() const 68 68 { 69 69 double current = currentTimeMS(); … … 77 77 double milliseconds = date.millisecondsSinceEpoch(); 78 78 ASSERT(isfinite(milliseconds)); 79 return convertDoubleToInputNumber(milliseconds);79 return Decimal::fromDouble(milliseconds); 80 80 } 81 81 … … 84 84 DEFINE_STATIC_LOCAL(const StepRange::StepDescription, stepDescription, (timeDefaultStep, timeDefaultStepBase, timeStepScaleFactor, StepRange::ScaledStepValueShouldBeInteger)); 85 85 86 const InputNumberstepBase = parseToNumber(element()->fastGetAttribute(minAttr), 0);87 const InputNumber minimum = parseToNumber(element()->fastGetAttribute(minAttr), convertDoubleToInputNumber(DateComponents::minimumTime()));88 const InputNumber maximum = parseToNumber(element()->fastGetAttribute(maxAttr), convertDoubleToInputNumber(DateComponents::maximumTime()));89 const InputNumberstep = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr));86 const Decimal stepBase = parseToNumber(element()->fastGetAttribute(minAttr), 0); 87 const Decimal minimum = parseToNumber(element()->fastGetAttribute(minAttr), Decimal::fromDouble(DateComponents::minimumTime())); 88 const Decimal maximum = parseToNumber(element()->fastGetAttribute(maxAttr), Decimal::fromDouble(DateComponents::maximumTime())); 89 const Decimal step = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr)); 90 90 return StepRange(stepBase, minimum, maximum, step, stepDescription); 91 91 } -
trunk/Source/WebCore/html/TimeInputType.h
r119540 r120313 46 46 virtual const AtomicString& formControlType() const OVERRIDE; 47 47 virtual DateComponents::Type dateType() const OVERRIDE; 48 virtual InputNumberdefaultValueForStepUp() const OVERRIDE;48 virtual Decimal defaultValueForStepUp() const OVERRIDE; 49 49 virtual StepRange createStepRange(AnyStepHandling) const OVERRIDE; 50 50 virtual bool parseToDateComponentsInternal(const UChar*, unsigned length, DateComponents*) const OVERRIDE; -
trunk/Source/WebCore/html/WeekInputType.cpp
r119948 r120313 66 66 DEFINE_STATIC_LOCAL(const StepRange::StepDescription, stepDescription, (weekDefaultStep, weekDefaultStepBase, weekStepScaleFactor, StepRange::ParsedStepValueShouldBeInteger)); 67 67 68 const InputNumberstepBase = parseToNumber(element()->fastGetAttribute(minAttr), weekDefaultStepBase);69 const InputNumber minimum = parseToNumber(element()->fastGetAttribute(minAttr), convertDoubleToInputNumber(DateComponents::minimumWeek()));70 const InputNumber maximum = parseToNumber(element()->fastGetAttribute(maxAttr), convertDoubleToInputNumber(DateComponents::maximumWeek()));71 const InputNumberstep = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr));68 const Decimal stepBase = parseToNumber(element()->fastGetAttribute(minAttr), weekDefaultStepBase); 69 const Decimal minimum = parseToNumber(element()->fastGetAttribute(minAttr), Decimal::fromDouble(DateComponents::minimumWeek())); 70 const Decimal maximum = parseToNumber(element()->fastGetAttribute(maxAttr), Decimal::fromDouble(DateComponents::maximumWeek())); 71 const Decimal step = StepRange::parseStep(anyStepHandling, stepDescription, element()->fastGetAttribute(stepAttr)); 72 72 return StepRange(stepBase, minimum, maximum, step, stepDescription); 73 73 } -
trunk/Source/WebCore/html/shadow/CalendarPickerElement.cpp
r119540 r120313 209 209 date.setMillisecondsSinceEpochForDate(input->maximum()); 210 210 String maxString = date.toString(); 211 InputNumberstep;211 Decimal step; 212 212 String stepString = input->fastGetAttribute(stepAttr); 213 213 if (stepString.isEmpty() || !input->getAllowedValueStep(&step)) -
trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp
r120246 r120313 52 52 namespace WebCore { 53 53 54 inline static InputNumbersliderPosition(HTMLInputElement* element)54 inline static Decimal sliderPosition(HTMLInputElement* element) 55 55 { 56 56 const StepRange stepRange(element->createStepRange(RejectAny)); 57 const InputNumberoldValue = parseToDecimalForNumberType(element->value(), stepRange.defaultValue());57 const Decimal oldValue = parseToDecimalForNumberType(element->value(), stepRange.defaultValue()); 58 58 return stepRange.proportionFromValue(stepRange.clampValue(oldValue)); 59 59 } … … 117 117 bool isVertical = hasVerticalAppearance(input); 118 118 119 double fraction = convertInputNumberToDouble(sliderPosition(input) * 100);119 double fraction = (sliderPosition(input) * 100).toDouble(); 120 120 if (isVertical) 121 121 style()->setTop(Length(100 - fraction, Percent)); … … 243 243 return; 244 244 245 const InputNumber ratio = convertDoubleToInputNumber(static_cast<double>(position) / trackSize);246 const InputNumber fraction = isVertical || !renderBox()->style()->isLeftToRightDirection() ? InputNumber(1) - ratio : ratio;245 const Decimal ratio = Decimal::fromDouble(static_cast<double>(position) / trackSize); 246 const Decimal fraction = isVertical || !renderBox()->style()->isLeftToRightDirection() ? Decimal(1) - ratio : ratio; 247 247 StepRange stepRange(input->createStepRange(RejectAny)); 248 const InputNumbervalue = stepRange.clampValue(stepRange.valueFromProportion(fraction));248 const Decimal value = stepRange.clampValue(stepRange.valueFromProportion(fraction)); 249 249 250 250 // FIXME: This is no longer being set from renderer. Consider updating the method name.
Note: See TracChangeset
for help on using the changeset viewer.