diff options
author | keishi@webkit.org <keishi@webkit.org@bbb929c8-8fbe-4397-9dbb-9b2b20218538> | 2012-11-22 13:31:46 +0000 |
---|---|---|
committer | keishi@webkit.org <keishi@webkit.org@bbb929c8-8fbe-4397-9dbb-9b2b20218538> | 2012-11-22 13:31:46 +0000 |
commit | 5b16322dbb3fd87072a2a1105d02d451d8e6e338 (patch) | |
tree | e1a979a90e2ec47b2bb8d5894d7ba0eff52a1f41 | |
parent | 58ef6ac31b8d85fc2d11d59b5c83245a9f7a3ffd (diff) | |
download | chromium_src-5b16322dbb3fd87072a2a1105d02d451d8e6e338.zip chromium_src-5b16322dbb3fd87072a2a1105d02d451d8e6e338.tar.gz chromium_src-5b16322dbb3fd87072a2a1105d02d451d8e6e338.tar.bz2 |
Add week-multiple-fields tests
https://bugs.webkit.org/show_bug.cgi?id=102045
Reviewed by Kent Tamura.
Adding test cases for multiple field week input.
* fast/forms/resources/multiple-fields-blur-and-focus-events.js:
(startTestFor.beginTestCase):
(startTestFor):
* fast/forms/week-multiple-fields/week-multiple-fields-ax-aria-attributes-expected.txt: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-ax-aria-attributes.html: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-ax-value-changed-notification-expected.txt: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-ax-value-changed-notification.html: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-blur-and-focus-events-expected.txt: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-blur-and-focus-events.html: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-change-layout-by-value-expected.txt: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-change-layout-by-value.html: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events-expected.txt: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events.html: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-mouse-events-expected.txt: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-mouse-events.html: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-preserve-value-after-history-back-expected.txt: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-preserve-value-after-history-back.html: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-reset-value-after-reloads-expected.txt: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-reset-value-after-reloads.html: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-spinbutton-change-and-input-events-expected.txt: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-spinbutton-change-and-input-events.html: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-wheel-event-expected.txt: Added.
* fast/forms/week-multiple-fields/week-multiple-fields-wheel-event.html: Added.
git-svn-id: svn://svn.chromium.org/blink/trunk@135509 bbb929c8-8fbe-4397-9dbb-9b2b20218538
22 files changed, 870 insertions, 1 deletions
diff --git a/third_party/WebKit/LayoutTests/ChangeLog b/third_party/WebKit/LayoutTests/ChangeLog index 519dab22..e7cc1d1 100644 --- a/third_party/WebKit/LayoutTests/ChangeLog +++ b/third_party/WebKit/LayoutTests/ChangeLog @@ -1,3 +1,36 @@ +2012-11-22 Keishi Hattori <keishi@webkit.org> + + Add week-multiple-fields tests + https://bugs.webkit.org/show_bug.cgi?id=102045 + + Reviewed by Kent Tamura. + + Adding test cases for multiple field week input. + + * fast/forms/resources/multiple-fields-blur-and-focus-events.js: + (startTestFor.beginTestCase): + (startTestFor): + * fast/forms/week-multiple-fields/week-multiple-fields-ax-aria-attributes-expected.txt: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-ax-aria-attributes.html: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-ax-value-changed-notification-expected.txt: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-ax-value-changed-notification.html: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-blur-and-focus-events-expected.txt: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-blur-and-focus-events.html: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-change-layout-by-value-expected.txt: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-change-layout-by-value.html: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events-expected.txt: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events.html: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-mouse-events-expected.txt: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-mouse-events.html: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-preserve-value-after-history-back-expected.txt: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-preserve-value-after-history-back.html: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-reset-value-after-reloads-expected.txt: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-reset-value-after-reloads.html: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-spinbutton-change-and-input-events-expected.txt: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-spinbutton-change-and-input-events.html: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-wheel-event-expected.txt: Added. + * fast/forms/week-multiple-fields/week-multiple-fields-wheel-event.html: Added. + 2012-11-22 Christophe Dumez <christophe.dumez@intel.com> WebKitTestRunner needs layoutTestController.setCacheModel diff --git a/third_party/WebKit/LayoutTests/fast/forms/resources/multiple-fields-blur-and-focus-events.js b/third_party/WebKit/LayoutTests/fast/forms/resources/multiple-fields-blur-and-focus-events.js index 21a5ac9..99884ea 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/resources/multiple-fields-blur-and-focus-events.js +++ b/third_party/WebKit/LayoutTests/fast/forms/resources/multiple-fields-blur-and-focus-events.js @@ -39,7 +39,8 @@ function startTestFor(typeName) document.getElementById("before").focus(); shouldBeEqualToString('keyDown("\t"); state()', 'blur=0 focus=1'); shouldBeEqualToString('keyDown("\t"); state()', 'blur=0 focus=1'); - shouldBeEqualToString('keyDown("\t"); state()', 'blur=0 focus=1'); + if (typeName != 'week' && typeName != 'month') + shouldBeEqualToString('keyDown("\t"); state()', 'blur=0 focus=1'); shouldBeEqualToString('keyDown("\t"); state()', 'blur=1 focus=1'); } else { debug('Please run in DumpRenderTree for focus and Tab-key test case'); diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-ax-aria-attributes-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-ax-aria-attributes-expected.txt new file mode 100644 index 0000000..9d192c3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-ax-aria-attributes-expected.txt @@ -0,0 +1,16 @@ +This test checks aria-help attribute of fields in multiple fields week input UI. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +Non-empty value +PASS focusedFieldValueDescription() is "AXHelp: Week, AXValueDescription: 10, 1, 53" +PASS focusedFieldValueDescription() is "AXHelp: Year, AXValueDescription: 2012, 1, 275760" +Empty value +PASS focusedFieldValueDescription() is "AXHelp: Year, AXValueDescription: blank, 1, 275760" +PASS focusedFieldValueDescription() is "AXHelp: Week, AXValueDescription: blank, 1, 53" + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-ax-aria-attributes.html b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-ax-aria-attributes.html new file mode 100644 index 0000000..b250665 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-ax-aria-attributes.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<html> +<head> +<script src="../../../fast/js/resources/js-test-pre.js"></script> +</head> +<body> +<input id="test" type="week" value="2012-W10"> +<script> +description('This test checks aria-help attribute of fields in multiple fields week input UI.'); + +function focusedFieldValueDescription() +{ + var element = accessibilityController.focusedElement; + return element.helpText + ', ' + element.valueDescription + ', ' + element.minValue + ', ' + element.maxValue; +} + +var testInput = document.getElementById('test'); + +if (!window.accessibilityController || !window.eventSender) + debug('Please run inside DRT or WTR.'); +else { + debug('Non-empty value'); + testInput.focus(); + shouldBeEqualToString('focusedFieldValueDescription()', 'AXHelp: Week, AXValueDescription: 10, 1, 53'); + eventSender.keyDown('\t'); + shouldBeEqualToString('focusedFieldValueDescription()', 'AXHelp: Year, AXValueDescription: 2012, 1, 275760'); + + debug('Empty value'); + eventSender.keyDown('\b'); + shouldBeEqualToString('focusedFieldValueDescription()', 'AXHelp: Year, AXValueDescription: blank, 1, 275760'); + eventSender.keyDown('\t', ['shiftKey']); + eventSender.keyDown('\b'); + shouldBeEqualToString('focusedFieldValueDescription()', 'AXHelp: Week, AXValueDescription: blank, 1, 53'); + + debug(''); + testInput.remove(); +} +</script> +<script src="../../../fast/js/resources/js-test-post.js"></script> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-ax-value-changed-notification-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-ax-value-changed-notification-expected.txt new file mode 100644 index 0000000..3b7a8a9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-ax-value-changed-notification-expected.txt @@ -0,0 +1,16 @@ +This test checks value changed accessibility notifications. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +FocusedUIElementChanged AXHelp: Week=AXValueDescription: 10 +FocusedUIElementChanged AXHelp: Year=AXValueDescription: 2012 +ValueChanged AXHelp: Year=AXValueDescription: 0005 +ValueChanged AXHelp: Year=AXValueDescription: 0005 +ValueChanged AXHelp: Year=AXValueDescription: 0005 +ValueChanged AXHelp: Year=AXValueDescription: 0005 + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-ax-value-changed-notification.html b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-ax-value-changed-notification.html new file mode 100644 index 0000000..209c880 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-ax-value-changed-notification.html @@ -0,0 +1,38 @@ +<!DOCTYPE html> +<html> +<head> +<script src="../../../fast/js/resources/js-test-pre.js"></script> +</head> +<body> +<input id="test" type="week" value="2012-W10"> +<script> +description('This test checks value changed accessibility notifications.'); + +var testInput = document.getElementById("test"); + +if (!window.accessibilityController || !window.eventSender) + debug("Please run inside DRT or WRT."); +else { + accessibilityController.addNotificationListener(function (element, notification) { + if (notification == 'FocusedUIElementChanged' || notification == 'ValueChanged') { + debug(notification + ' ' + element.helpText + '=' + element.valueDescription); + } + }); + + testInput.focus(); + eventSender.keyDown('\t'); + eventSender.keyDown('4'); + eventSender.keyDown('upArrow'); + + window.jsTestIsAsync = true; + + window.setTimeout(function() { + debug(''); + testInput.remove(); + finishJSTest(); + }, 1); +} +</script> +<script src="../../../fast/js/resources/js-test-post.js"></script> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-blur-and-focus-events-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-blur-and-focus-events-expected.txt new file mode 100644 index 0000000..a68ca04 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-blur-and-focus-events-expected.txt @@ -0,0 +1,17 @@ +Check blur and focus events for multiple fields week input UI + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +focus() and blur() +PASS testInput.focus(); state() is "blur=0 focus=1" +PASS testInput.blur(); state() is "blur=1 focus=1" +focus and Tab key to blur +PASS keyDown(" "); state() is "blur=0 focus=1" +PASS keyDown(" "); state() is "blur=0 focus=1" +PASS keyDown(" "); state() is "blur=1 focus=1" + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-blur-and-focus-events.html b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-blur-and-focus-events.html new file mode 100644 index 0000000..d8c6dce --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-blur-and-focus-events.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<html> +<body> +<script src="../../js/resources/js-test-pre.js"></script> +<script src="../resources/multiple-fields-blur-and-focus-events.js"></script> +<div id="container"></div> +<script> +startTestFor('week'); +</script> +<script src="../../js/resources/js-test-post.js"></script> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-change-layout-by-value-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-change-layout-by-value-expected.txt new file mode 100644 index 0000000..f147068 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-change-layout-by-value-expected.txt @@ -0,0 +1,11 @@ +Change multiple fields week input UI layout by value + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS widthOfEmptyValue < widthOfOverflowValue is true +PASS widthOfEmptyValue is widthOfValidValue +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-change-layout-by-value.html b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-change-layout-by-value.html new file mode 100644 index 0000000..38d938c --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-change-layout-by-value.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html> +<body> +<script src="../../js/resources/js-test-pre.js"></script> +<script> +description('Change multiple fields week input UI layout by value'); +var testInput = document.createElement('input'); +testInput.type = 'week'; +testInput.max = '9999-W52'; +document.body.appendChild(testInput); +var widthOfEmptyValue = testInput.offsetWidth; + +testInput.value = '10000-W01'; +var widthOfOverflowValue = testInput.offsetWidth; +shouldBeTrue('widthOfEmptyValue < widthOfOverflowValue'); + +testInput.value = '2012-W10'; +var widthOfValidValue = testInput.offsetWidth; +shouldBe('widthOfEmptyValue', 'widthOfValidValue'); + +testInput.remove(); +</script> +<script src="../../js/resources/js-test-post.js"></script> +</body> +</html> 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 new file mode 100644 index 0000000..15a340d --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events-expected.txt @@ -0,0 +1,62 @@ +Multiple fields UI of week input type with keyboard events + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +Please run this with DumpRenderTree. + +Test following keys: +Digits +Left/Right - Move focus field inside element +Up/Down - Increment/decrement value of focus field +Tab - Move focus field +Backspace - Make value empty + +== Digit keys == +PASS input.value is "0012-W09" +== Left/Right keys == +PASS input.value is "0005-W06" +PASS document.activeElement.id is "input" +== Up/Down keys == +PASS input.value is "2012-W10" +PASS input.value is "2012-W08" +== Up/Down keys on empty value == +PASS input.value is "2012-W52" +== Up/Down keys on empty value 2 == +PASS input.value is "2012-W02" +== Tab key == +PASS input.value is "0005-W09" +PASS input.value is "0005-W07" +PASS document.activeElement.id is "after" +== Shfit+Tab key == +PASS input.value is "0003-W09" +PASS document.activeElement.id is "before" +== Up key on maximum value == +PASS input.value is "0001-W10" +== Up key with a maximum attribute == +PASS input.value is "1000-W13" +== Down key on minimum value == +PASS input.value is "" +== Down key with a minimum attribute == +PASS input.value is "" +== Inconsistent min-max attributes == +PASS input.value is "1000-W13" +PASS input.value is "1999-W13" +== Make an invalid date == +PASS input.value is "" +== Backspace key == +PASS input.value is "" +== Delete key == +PASS input.value is "" +== Typeahead == +PASS input.value is "0001-W12" +PASS input.value is "0002-W12" +== Disabled/readonly == +PASS input.value is "2012-W10" +PASS input.value is "2012-W11" +PASS input.value is "2012-W11" +PASS input.value is "2012-W12" +PASS successfullyParsed is true + +TEST COMPLETE + 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 new file mode 100644 index 0000000..43c60a8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-keyboard-events.html @@ -0,0 +1,192 @@ +<!DOCTYPE html> +<html> +<head> +<script src="../../js/resources/js-test-pre.js"></script> +</head> +<body> +<p id="description"></p> +<p> +Please run this with DumpRenderTree. +</p> +Test following keys: +<ul> + <li>Digits</li> + <li>Left/Right - Move focus field inside element</li> + <li>Up/Down - Increment/decrement value of focus field</li> + <li>Tab - Move focus field</li> + <li>Backspace - Make value empty</li> +</ul> +<input id="before"> +<input id="input" type="week"> +<input id="after"> +<div id="console"></div> +<script> +description('Multiple fields UI of week input type with keyboard events'); +if (window.internals) + internals.settings.setLangAttributeAwareFormControlUIEnabled(true); +var input = document.getElementById('input'); + +function keyDown(key, modifiers) +{ + if (!window.eventSender) + return; + eventSender.keyDown(key, modifiers); +} + +function beginTest(title, opt_value, opt_min, opt_max) +{ + debug('== ' + title + ' =='); + input.value = opt_value || ''; + input.min = opt_min ? opt_min : ''; + input.max = opt_max ? opt_max : ''; + input.blur(); + input.focus(); +} + +// We assume the date format is Week ww, yyyy. + +beginTest('Digit keys'); +keyDown('9'); // -> Week 09, yyyy +keyDown('1'); // -> Week 09, [0001] +keyDown('2'); // -> Week 09, [0012] +keyDown('A'); // Ignored. +shouldBeEqualToString('input.value', '0012-W09'); + +// FIXME: We should test type ahead time out. When event.leapForward() affects +// keyboard event time stamp, we can uncomment this fragment. +/* +beginTest('Digit keys with type ahead timeout'); +keyDown('1'); // -> Week [01], yyyy +eventSender.leapForward(1100); // -> Week 01, [yyyy] +keyDown('1'); // -> Week 01, [0001] +keyDown('5'); // -> Week 01, [0015] +keyDown('6'); // -> Week 01, [0156] +shouldBeEqualToString('input.value', '0156-W01'); +*/ + +beginTest('Left/Right keys', '2012-W09'); +keyDown('rightArrow'); // -> Week 09, [2012] +keyDown('5'); // -> Week 09, [0005] +keyDown('leftArrow'); // -> Week [09], 0005 +keyDown('6'); // -> Week [06], 0005 +shouldBeEqualToString('input.value', '0005-W06'); +keyDown('leftArrow'); // -> Week 06, [0005] +keyDown('leftArrow'); // -> Week [06], 0005 +keyDown('leftArrow'); // -> Week [06], 0005 +shouldBeEqualToString('document.activeElement.id', 'input'); + +beginTest('Up/Down keys', '2012-W09'); +keyDown('upArrow'); // -> Week [10], 2012 +shouldBeEqualToString('input.value', '2012-W10'); +keyDown('downArrow'); // -> Week [09], 2012 +keyDown('downArrow'); // -> Week [08], 2012 +shouldBeEqualToString('input.value', '2012-W08'); + +beginTest('Up/Down keys on empty value'); +keyDown('downArrow'); // -> Week [53], yyyy +keyDown('downArrow'); // -> Week [52], yyyy +keyDown('upArrow'); // -> Week [53], yyyy +keyDown('downArrow'); // -> Week [52], yyyy +keyDown('rightArrow'); // -> Week 52, [yyyy] +var currentYear = new Date().getFullYear(); +keyDown('upArrow'); // -> Week 52, [current year] +shouldBeEqualToString('input.value', currentYear + '-W52'); + +beginTest('Up/Down keys on empty value 2'); +keyDown('upArrow'); // -> Week [01], yyyy +keyDown('upArrow'); // -> Week [02], yyyy +keyDown('rightArrow'); // -> Week 02, [yyyy] +currentYear = new Date().getFullYear(); +keyDown('downArrow'); // -> Week 02, [current year] +shouldBeEqualToString('input.value', currentYear + '-W02'); + +beginTest('Tab key', '2012-W09'); +keyDown('\t'); // -> Week 09, [2012] +keyDown('5'); // -> Week 09, [0005] +shouldBeEqualToString('input.value', '0005-W09'); +keyDown('\t', ['shiftKey']); // -> Week [09], 0005 +keyDown('7'); // -> Week [07], 0005 +shouldBeEqualToString('input.value', '0005-W07'); +keyDown('\t'); // -> Focus out. +shouldBeEqualToString('document.activeElement.id', 'after'); + +beginTest('Shfit+Tab key', '2012-W09'); +after.focus(); +keyDown('\t', ['shiftKey']); // -> Week 09, [2012] +keyDown('3'); // -> Week 09, [0003] +shouldBeEqualToString('input.value', '0003-W09'); +keyDown('\t', ['shiftKey']); // -> Week [09], 0003 +keyDown('\t', ['shiftKey']); // -> Focus out. +shouldBeEqualToString('document.activeElement.id', 'before'); + +beginTest('Up key on maximum value', '275760-W09'); +keyDown('upArrow'); // -> Week [10], 275760 +keyDown('\t'); // -> Week 10, [275760] +keyDown('upArrow'); // -> Week 10, [0001] +shouldBeEqualToString('input.value', '0001-W10'); +beginTest('Up key with a maximum attribute', '1999-W12', '1000-W01', '1999-W12'); +keyDown('upArrow'); // -> Week [13], 1999 +keyDown('\t'); // -> Week 13, [1999] +keyDown('upArrow'); // -> Week 13, [1000] +shouldBeEqualToString('input.value', '1000-W13'); + +beginTest('Down key on minimum value', '0001-W01', 'bad min', 'wrong max'); +keyDown('downArrow'); // -> Week [53], 0001 +keyDown('\t'); // -> Week 01, [0001] +keyDown('downArrow'); // -> Week 53, [275760], which is greater than the hard limit. +shouldBeEqualToString('input.value', ''); +beginTest('Down key with a minimum attribute', '1000-W01', '1000-W01'); +keyDown('downArrow'); // -> Week [53], 1000 +keyDown('\t'); // -> Week 53, [1000] +keyDown('downArrow'); // -> Week 53, [275760], which is greater than the hard limit. +shouldBeEqualToString('input.value', ''); + +beginTest('Inconsistent min-max attributes', '1999-W12', '1999-W12', '1000-W01'); +keyDown('upArrow'); // -> Week [13], 1999. +keyDown('\t'); // -> Week 13, [1999] +keyDown('upArrow'); // -> Week 13, [1000]. 1000 is the swapped minimum year. +shouldBeEqualToString('input.value', '1000-W13'); +keyDown('downArrow'); // -> Week 01, [1999] +shouldBeEqualToString('input.value', '1999-W13'); + +beginTest('Make an invalid date', '2012-W01'); +keyDown('downArrow'); // -> Week [53], 2012 +shouldBeEqualToString('input.value', ''); // 2012-W53 is not a valid date. + +beginTest('Backspace key', '2012-W09'); +keyDown("\b"); // -> Week [ww], 2012 +shouldBeEqualToString('input.value', ''); + +beginTest('Delete key', '2012-W09'); +keyDown("delete"); // -> Week [ww], 2012 +shouldBeEqualToString('input.value', ''); + +beginTest('Typeahead', '2012-W12'); +keyDown('rightArrow'); // -> Week 12, [2012] +keyDown('1'); // -> Week 01, [0001] +shouldBeEqualToString('input.value', '0001-W12'); +keyDown('leftArrow'); // -> Week [12], 0001 +keyDown('rightArrow'); // -> Week 12, [0001] +keyDown('2'); // -> Week 12, [0002] +shouldBeEqualToString('input.value', '0002-W12'); + +beginTest('Disabled/readonly', '2012-W10'); +input.disabled = true; +keyDown('upArrow'); // Week 10, 2012 +shouldBeEqualToString('input.value', '2012-W10'); +input.disabled = false; +input.focus(); +keyDown('upArrow'); // Week [11], 2012 +shouldBeEqualToString('input.value', '2012-W11'); +input.readOnly = true; +keyDown('upArrow'); // Week [11], 2012 +shouldBeEqualToString('input.value', '2012-W11'); +input.readOnly = false; +input.focus(); +keyDown('upArrow'); // Week [12], 2012 +shouldBeEqualToString('input.value', '2012-W12'); + +</script> +<script src="../../js/resources/js-test-post.js"></script> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-mouse-events-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-mouse-events-expected.txt new file mode 100644 index 0000000..cd6fc24 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-mouse-events-expected.txt @@ -0,0 +1,33 @@ +Multiple fields UI of date input type with mouse events + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +Please run this with DRT or WTR. + +Test following mouse actions: +Mouse click to focus each of sub-fields +Mouse click on the spin button to update each of sub-fields + +==> Focus on the week field. +PASS input.value is "2345-W08" +PASS input.value is "2345-W09" +PASS input.value is "2345-W08" +PASS window.getSelection().rangeCount is 0 + +==> Focus on the year field. +PASS input.value is "2346-W08" +PASS input.value is "2347-W08" +PASS input.value is "2346-W08" +PASS window.getSelection().rangeCount is 0 + +==> Click on a disabled field. +PASS input.value is "2346-W08" + +==> Click on a read-only field. +PASS input.value is "2346-W08" + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-mouse-events.html b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-mouse-events.html new file mode 100644 index 0000000..f2b1221 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-mouse-events.html @@ -0,0 +1,83 @@ +<!DOCTYPE html> +<html> +<head> +<script src="../../js/resources/js-test-pre.js"></script> +</head> +<body> +<p id="description"></p> +<p> +Please run this with DRT or WTR. +</p> +Test following mouse actions: +<ul> + <li>Mouse click to focus each of sub-fields</li> + <li>Mouse click on the spin button to update each of sub-fields</li> +</ul> +<input id="input" type="week" style="font-family:ahem; font-size:16px;"> +<div id="console"></div> +<script> +description('Multiple fields UI of date input type with mouse events'); +var input = document.getElementById('input'); + +function keyDown(key, modifiers) +{ + if (!window.eventSender) + return; + eventSender.keyDown(key, modifiers); +} + +function mouseClickOn(x, y) +{ + if (!window.eventSender) + return; + eventSender.mouseMoveTo(x + input.offsetLeft, y + input.offsetTop); + eventSender.mouseDown(); + eventSender.mouseUp(); +} + +input.value = '2345-W07'; +var center = input.offsetHeight / 2; +var spinButtonOffset = 26; + +debug('==> Focus on the week field.'); +mouseClickOn(100, center); +keyDown('upArrow'); +shouldBeEqualToString('input.value', '2345-W08'); +mouseClickOn(input.offsetWidth - spinButtonOffset, center - 1); +shouldBeEqualToString('input.value', '2345-W09'); +mouseClickOn(input.offsetWidth - spinButtonOffset, center + 1); +shouldBeEqualToString('input.value', '2345-W08'); +shouldBeZero('window.getSelection().rangeCount'); // No text selection. + +debug(''); +debug('==> Focus on the year field.'); +mouseClickOn(200, center); +keyDown('upArrow'); +shouldBeEqualToString('input.value', '2346-W08'); +mouseClickOn(input.offsetWidth - spinButtonOffset, center - 1); +shouldBeEqualToString('input.value', '2347-W08'); +mouseClickOn(input.offsetWidth - spinButtonOffset, center + 1); +shouldBeEqualToString('input.value', '2346-W08'); +shouldBeZero('window.getSelection().rangeCount'); // No text selection. + +debug(''); +debug('==> Click on a disabled field.'); +input.disabled = true; +mouseClickOn(100, center); +keyDown('upArrow'); +shouldBeEqualToString('input.value', '2346-W08'); +input.disabled = false; + +debug(''); +debug('==> Click on a read-only field.'); +input.readOnly = true; +mouseClickOn(12, center); +keyDown('upArrow'); +shouldBeEqualToString('input.value', '2346-W08'); +input.readOnly = false; + +debug(''); +</script> +<script src="../../js/resources/js-test-post.js"></script> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-preserve-value-after-history-back-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-preserve-value-after-history-back-expected.txt new file mode 100644 index 0000000..ae5da34 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-preserve-value-after-history-back-expected.txt @@ -0,0 +1,18 @@ +Checks input value is preserved after backward and forward + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +Went back to a page. Checking a form control which had a full value: +PASS "12012-W10" is "12012-W10" +Went back to a page. Checking a form control which had a partial value: +PASS "Week 01, ----" is "Week 01, ----" +Went forward to a page. Checking a form control which had a full value: +PASS "0001-W11" is "0001-W11" +Went forward to a page. Checking a form control which had a partial value: +PASS "Week --, 1999" is "Week --, 1999" + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-preserve-value-after-history-back.html b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-preserve-value-after-history-back.html new file mode 100644 index 0000000..6b09d6f --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-preserve-value-after-history-back.html @@ -0,0 +1,141 @@ +<!DOCTYPE html> +<html> +<head> +<script src="../../../fast/js/resources/js-test-pre.js"></script> +</head> +<body> +<div id="container"> +<input type="week" id="test1"><br> +<input type="week" id="test2" min="1999-W01" max="1999-W12"><br> +<iframe id="iframe"></iframe> +</div> +<script> +description('Checks input value is preserved after backward and forward'); +if (!window.eventSender) + debug('Please run within DRT/WTR'); +window.jsTestIsAsync = true; + +var iframe = document.getElementById('iframe'); +var testInput1 = document.getElementById('test1'); +var testInput2 = document.getElementById('test2'); +var state = 'direct'; +var pageName = location.search || '?page0'; +var testCases = []; + +function back(newState) { + parent.state = newState; + history.back(); +} + +function failed(message) { + testFailed(message + ' in ' + state); + finishJSTest(); +} + +function fieldsText(input) { + if (!window.internals) + return ""; + var editElement = window.internals.oldestShadowRoot(input); + return editElement.textContent; +} + +function finishTest() { + runTestCases(); + document.body.removeChild(document.getElementById('container')); + finishJSTest(); +} + +function forward(newState) { + parent.state = newState; + history.forward(); +} + +function keyDown(key, modifiers) { + if (!window.eventSender) + return; + eventSender.keyDown(key, modifiers); +} + +function runTestCases() { + for (var index = 0; index < testCases.length; ++index) { + var testCase = testCases[index]; + debug(testCase['description'] + ':'); + shouldBeEqualToString('"' + testCase['actual'] + '"', testCase['expected']); + } + debug(''); +} + +switch (pageName) { +case '?page0': + iframe.src = location + '?page1'; + break; + +case '?page1': + switch (parent.state) { + case 'direct': { + testInput1.value = '12012-W10'; + testInput2.focus(); + keyDown('upArrow'); // -> Week [01], yyyy + var nextUri = location.toString().replace('?page1', '?page2'); + setTimeout(function () { window.location.href = nextUri; }, 0); + break; + } + case 'backTo1': + parent.testCases.push( + { + 'description' : 'Went back to a page. Checking a form control which had a full value', + 'actual' : testInput1.value, + 'expected' : '12012-W10' }, + { + 'description' : 'Went back to a page. Checking a form control which had a partial value', + 'actual' : fieldsText(testInput2), + 'expected' : 'Week 01, ----' + }); + forward('forwardTo2'); + break; + case 'backTo1Second': + parent.finishTest(); + break; + default: + failed('Unexpected state(' + parent.state + ')'); + break; + } + break; + +case '?page2': + switch (parent.state) { + case 'direct': + testInput1.value = '0001-W11'; + testInput2.focus(); + keyDown('\t'); // -> Week ww, [yyyy] + keyDown('downArrow'); // -> Week ww, [1999] + back('backTo1'); + break; + case 'forwardTo2': + parent.testCases.push( + { + 'description' : 'Went forward to a page. Checking a form control which had a full value', + 'actual' : testInput1.value, + 'expected' : '0001-W11' + }, + { + 'description' : 'Went forward to a page. Checking a form control which had a partial value', + 'actual' : fieldsText(testInput2), + 'expected' : 'Week --, 1999' + }); + back('backTo1Second'); + break; + default: + failed('Unexpected state(' + parent.state + ')'); + break; + } + break; + +default: + failed('Unexpected page(' + pageName + ')'); + break; +} +</script> +<script src="../../../fast/js/resources/js-test-post.js"></script> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-reset-value-after-reloads-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-reset-value-after-reloads-expected.txt new file mode 100644 index 0000000..59d0247 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-reset-value-after-reloads-expected.txt @@ -0,0 +1,15 @@ +Checks reloading page resets input values + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +Initial values: +PASS testInput1.value is "" +PASS testInput2.value is "1234-W05" +Reloaded values: +PASS testInput1.value is "" +PASS testInput2.value is "1234-W05" +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-reset-value-after-reloads.html b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-reset-value-after-reloads.html new file mode 100644 index 0000000..1c0162d --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-reset-value-after-reloads.html @@ -0,0 +1,42 @@ +<!DOCTYPE html> +<html> +<head> +<script src="../../../fast/js/resources/js-test-pre.js"></script> +</head> +<body onload="runBodyLoaded()"> +<iframe id=iframe srcdoc="<input type=week id='test1'><input type='week' id='test2' value='1234-W05'>"></iframe> +<script> +description('Checks reloading page resets input values'); +window.jsTestIsAsync = true; + +var iframe = document.getElementById('iframe'); +var testInput1; +var testInput2; + +function runBodyLoaded() +{ + testInput1 = iframe.contentDocument.getElementById('test1'); + testInput2 = iframe.contentDocument.getElementById('test2'); + debug('Initial values:'); + shouldBeEqualToString('testInput1.value', ''); + shouldBeEqualToString('testInput2.value', '1234-W05'); + testInput1.value = '2012-W10'; + testInput2.value = '2012-W11'; + iframe.addEventListener('load', parent.runOnIFrameLoad); + iframe.contentWindow.location.reload(); +} + +function runOnIFrameLoad() +{ + testInput1 = iframe.contentDocument.getElementById('test1'); + testInput2 = iframe.contentDocument.getElementById('test2'); + debug('Reloaded values:'); + shouldBeEqualToString('testInput1.value', ''); + shouldBeEqualToString('testInput2.value', '1234-W05'); + iframe.parentNode.removeChild(iframe); + finishJSTest(); +} +</script> +<script src="../../../fast/js/resources/js-test-post.js"></script> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-spinbutton-change-and-input-events-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-spinbutton-change-and-input-events-expected.txt new file mode 100644 index 0000000..0edfc65 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-spinbutton-change-and-input-events-expected.txt @@ -0,0 +1,19 @@ +Test for event dispatching by spin buttons in a type=week input. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +Initial state +PASS changeEventCounter is 0 +PASS inputEventCounter is 0 +Click the upper button +PASS testInput.value is "2012-W11" +PASS changeEventCounter is 1 +PASS inputEventCounter is 1 +Focus on another field +PASS changeEventCounter is 1 +PASS inputEventCounter is 1 +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-spinbutton-change-and-input-events.html b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-spinbutton-change-and-input-events.html new file mode 100644 index 0000000..29a25f7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-spinbutton-change-and-input-events.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<html> +<head> +<script src="../../../fast/js/resources/js-test-pre.js"></script> +<script src="../resources/common.js"></script> +<script src="../resources/common-spinbutton-change-and-input-events.js"></script> +</head> +<body> +<script> +testSpinButtonChangeAndInputEvents('week', '2012-W10', '2012-W11'); +</script> +<script src="../../../fast/js/resources/js-test-post.js"></script> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-wheel-event-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-wheel-event-expected.txt new file mode 100644 index 0000000..10ae9c7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-wheel-event-expected.txt @@ -0,0 +1,23 @@ +Test for wheel operations for <input type=week> + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +Initial value is 1999-W01. We'll wheel up by 1: +PASS input.value is "1999-W02" +Wheel up by 100: +PASS input.value is "1999-W03" +Wheel down by 1: +PASS input.value is "1999-W02" +Wheel down by 256: +PASS input.value is "1999-W01" +Disabled input element: +PASS input.value is "1999-W01" +Read-only input element: +PASS input.value is "1999-W01" +No focus: +PASS input.value is "1999-W01" +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-wheel-event.html b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-wheel-event.html new file mode 100644 index 0000000..498f42f --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-wheel-event.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<html> +<head> +<script src="../../../fast/js/resources/js-test-pre.js"></script> +<script src="../resources/common-wheel-event.js"></script> +</head> +<body> +<script> +testWheelEvent({ + 'inputType' : 'week', + 'initialValue' : '1999-W01', + 'stepUpValue1' : '1999-W02', + 'stepUpValue2' : '1999-W03' }); +</script> +<script src="../../../fast/js/resources/js-test-post.js"></script> +</body> +</html> |