diff options
author | keishi@webkit.org <keishi@webkit.org@bbb929c8-8fbe-4397-9dbb-9b2b20218538> | 2012-12-21 12:42:20 +0000 |
---|---|---|
committer | keishi@webkit.org <keishi@webkit.org@bbb929c8-8fbe-4397-9dbb-9b2b20218538> | 2012-12-21 12:42:20 +0000 |
commit | c1cdaec5af4162dd3672db0caf3d54aca5278da7 (patch) | |
tree | d442ead25759d9f63bf29c208eec1932c6e607f8 /third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields | |
parent | 719c7e82cfc487d7a97549a78385d529172f8c4f (diff) | |
download | chromium_src-c1cdaec5af4162dd3672db0caf3d54aca5278da7.zip chromium_src-c1cdaec5af4162dd3672db0caf3d54aca5278da7.tar.gz chromium_src-c1cdaec5af4162dd3672db0caf3d54aca5278da7.tar.bz2 |
Fix typing zero into multiple field input
https://bugs.webkit.org/show_bug.cgi?id=105501
Reviewed by Kent Tamura.
Source/WebCore:
We have a couple of problems when handling zero in a multiple fields
element.
1. Typing '02' into a month field will set '12'.
2. Typing '0' into 12 hour hour field will set '12' and move to the
focus to the next field.
This change adds a type ahead buffer so we can handle these cases
properly. If the value in the type ahead buffer is valid we set it so a
change event will fire.
Added tests to *-multiple-fields-keyboard-events.html.
* html/shadow/DateTimeNumericFieldElement.cpp:
(WebCore::DateTimeNumericFieldElement::didBlur): Clear the type ahead
buffer. handleKeyboardEvent() won't set the type ahead value if it is
not in range, so we set the value here.
(WebCore::DateTimeNumericFieldElement::handleKeyboardEvent):
(WebCore::DateTimeNumericFieldElement::setEmptyValue): Clear type ahead buffer.
(WebCore::DateTimeNumericFieldElement::setValueAsInteger):
(WebCore::DateTimeNumericFieldElement::stepDown): Clear type ahead buffer.
(WebCore::DateTimeNumericFieldElement::stepUp): Clear type ahead buffer.
(WebCore::DateTimeNumericFieldElement::typeAheadValue): Returns integer
value for the type ahead characters.
(WebCore):
(WebCore::DateTimeNumericFieldElement::visibleValue): If we have type
ahead characters, show that.
* html/shadow/DateTimeNumericFieldElement.h:
(DateTimeNumericFieldElement):
LayoutTests:
* fast/forms/date-multiple-fields/date-multiple-fields-keyboard-events-expected.txt:
* fast/forms/date-multiple-fields/date-multiple-fields-keyboard-events.html:
* fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-keyboard-events-expected.txt:
* fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-keyboard-events.html:
* fast/forms/month-multiple-fields/month-multiple-fields-keyboard-events-expected.txt:
* fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events-expected.txt:
* fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events.html:
* fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events-expected.txt:
* fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events.html:
git-svn-id: svn://svn.chromium.org/blink/trunk@138365 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Diffstat (limited to 'third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields')
2 files changed, 22 insertions, 0 deletions
diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events-expected.txt index 733cb39..8287cb5 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events-expected.txt @@ -14,6 +14,10 @@ Backspace - Make value empty == Digit keys == PASS input.value is "0012-W09" +== Digit keys starting with zero == +PASS input.value is "0300-W02" +== Digit keys and backspace key == +PASS input.value is "0006-W01" == Left/Right keys == PASS input.value is "0005-W06" PASS document.activeElement.id is "input" diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events.html b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events.html index 2565e8b..5bbc983 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events.html +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events.html @@ -52,6 +52,24 @@ keyDown('2'); // -> Week 09, [0012] keyDown('A'); // Ignored. shouldBeEqualToString('input.value', '0012-W09'); +beginTest('Digit keys starting with zero'); +keyDown('0'); // -> Week [00], yyyy +keyDown('2'); // -> Week 02, [yyyy] +keyDown('0'); // -> Week 02, [0000] +keyDown('3'); // -> Week 02, [0003] +keyDown('0'); // -> Week 02, [0030] +keyDown('0'); // -> Week 02, [0300] +shouldBeEqualToString('input.value', '0300-W02'); + +beginTest('Digit keys and backspace key'); +keyDown('0'); // -> Week [00], yyyy +keyDown('\b'); // -> Week [ww], yyyy +keyDown('0'); // -> Week [00], yyyy +keyDown('0'); // -> Week 01, [yyyy] +keyDown('0'); // -> Week 01, [0000] +keyDown('6'); // -> Week 05, [0006] +shouldBeEqualToString('input.value', '0006-W01'); + // FIXME: We should test type ahead time out. When event.leapForward() affects // keyboard event time stamp, we can uncomment this fragment. /* |