[Webkit-unassigned] [Bug 60673] <input type=number> doesn't ignore size="" attribute
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Mon Aug 1 22:15:57 PDT 2011
https://bugs.webkit.org/show_bug.cgi?id=60673
Kent Tamura <tkent at chromium.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #102525|review? |review-
Flag| |
--- Comment #10 from Kent Tamura <tkent at chromium.org> 2011-08-01 22:15:57 PST ---
(From update of attachment 102525)
View in context: https://bugs.webkit.org/attachment.cgi?id=102525&action=review
> LayoutTests/fast/forms/input-number-size.html:60
> +number.size = 10;
> +shouldBe('number.offsetWidth', 'text.offsetWidth');
These lines should be:
shouldBe('number.size = 10; number.offsetWidth', 'text.offsetWidth');
to show what is tested.
> LayoutTests/fast/forms/input-number-size.html:63
> +number.size = 100;
> +shouldBe('number.offsetWidth', 'text.offsetWidth');
ditto.
> LayoutTests/fast/forms/input-number-size.html:81
> +shouldBe('numberWidth(0, 10, 1, "style1")', 'textWidth(2) + 20');
Why +20?
- You should define variable for the style1 border width. e.g. var style1Borders = 20;, and use it
- This test case means the text edit area of the number field doesn't have enough width for two letters because of the width of the spin button, right?
> Source/WebCore/ChangeLog:9
> + The size of input[type=number] is calculated from min/max/step attributes to show the widest possible value.
> + If min or max attribute is absent, the default size is used.
You had better explain the behavior of setting min/max/step attributes while the field is shown.
> Source/WebCore/html/HTMLInputElement.cpp:1004
> +int HTMLInputElement::preferredSize() const
> +{
> + if (m_inputType->shouldRespectSizeAttribute())
> + return size();
> +
> + return m_inputType->maxNumberOfCharacters(defaultSize);
> +}
It seems we don't need to introduce two new functions for InputType. We can remove shouldRespectSizeAttribute() and maxNumberOfCharacters(), and add InputType::preferredSize().
> Source/WebCore/html/NumberInputType.cpp:149
> + if (minValueDouble < -limit || limit < minValueDouble)
> + return defaultSize;
This limit check is already done in parseToDoubleForNumberType*().
> Source/WebCore/html/NumberInputType.cpp:157
> + if (maxValueDouble < -limit || limit < maxValueDouble)
> + return defaultSize;
ditto.
> Source/WebCore/html/NumberInputType.cpp:172
> + if (stepValue.isEmpty()) {
> + stepValueDouble = 1;
> + stepValueDecimalPlaces = 0;
> + } else {
> + if (!parseToDoubleForNumberTypeWithDecimalPlaces(stepValue, &stepValueDouble, &stepValueDecimalPlaces))
> + return defaultSize;
if the step attribute value is an invalid string, the effective step value is "1". Returning defaultSize looks wrong.
> Source/WebCore/rendering/RenderTextControlSingleLine.cpp:430
> + HTMLElement* spinButton = innerSpinButtonElement();
> + if (RenderBox* spinRenderer = spinButton ? spinButton->renderBox() : 0) {
> + result += spinRenderer->borderLeft() + spinRenderer->borderRight() +
> + spinRenderer->paddingLeft() + spinRenderer->paddingRight();
> + }
Why you add only borders and paddings, and not the content of the spin button?
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list