summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields
diff options
context:
space:
mode:
authorkeishi@webkit.org <keishi@webkit.org@bbb929c8-8fbe-4397-9dbb-9b2b20218538>2012-12-21 12:42:20 +0000
committerkeishi@webkit.org <keishi@webkit.org@bbb929c8-8fbe-4397-9dbb-9b2b20218538>2012-12-21 12:42:20 +0000
commitc1cdaec5af4162dd3672db0caf3d54aca5278da7 (patch)
treed442ead25759d9f63bf29c208eec1932c6e607f8 /third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields
parent719c7e82cfc487d7a97549a78385d529172f8c4f (diff)
downloadchromium_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')
-rw-r--r--third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events-expected.txt4
-rw-r--r--third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events.html18
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.
/*