| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <script src="../../../resources/js-test.js"></script> | 4 <script src="../../../resources/js-test.js"></script> |
| 5 </head> | 5 </head> |
| 6 <body> | 6 <body> |
| 7 <p id="description"></p> | 7 <p id="description"></p> |
| 8 <p> | 8 <p> |
| 9 Please run this with DumpRenderTree. | 9 Please run this with DumpRenderTree. |
| 10 </p> | 10 </p> |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 beginTest('Digit keys starting with zero'); | 71 beginTest('Digit keys starting with zero'); |
| 72 keyDown('0'); // -> [00]:-- -- | 72 keyDown('0'); // -> [00]:-- -- |
| 73 keyDown('2'); // -> 02:[--] -- | 73 keyDown('2'); // -> 02:[--] -- |
| 74 keyDown('0'); // -> 02:[00] -- | 74 keyDown('0'); // -> 02:[00] -- |
| 75 keyDown('3'); // -> 02:03 [--] | 75 keyDown('3'); // -> 02:03 [--] |
| 76 keyDown('P'); // -> 02:03 [PM] | 76 keyDown('P'); // -> 02:03 [PM] |
| 77 shouldBeEqualToString('input.value', '14:03'); | 77 shouldBeEqualToString('input.value', '14:03'); |
| 78 | 78 |
| 79 beginTest('Digit keys and backspace key','01:01'); | 79 beginTest('Digit keys and backspace key','01:01'); |
| 80 keyDown('0'); // -> [00]:-- -- | 80 keyDown('0'); // -> [00]:-- -- |
| 81 keyDown('\b'); // -> [--]:-- -- | 81 keyDown('Backspace'); // -> [--]:-- -- |
| 82 keyDown('5'); // -> 05:[--] -- | 82 keyDown('5'); // -> 05:[--] -- |
| 83 keyDown('6'); // -> 05:06 [--] | 83 keyDown('6'); // -> 05:06 [--] |
| 84 keyDown('\b'); // -> 05:06 [--] | 84 keyDown('Backspace'); // -> 05:06 [--] |
| 85 keyDown('P'); // -> 05:06 [PM] | 85 keyDown('P'); // -> 05:06 [PM] |
| 86 shouldBeEqualToString('input.value', '17:06'); | 86 shouldBeEqualToString('input.value', '17:06'); |
| 87 | 87 |
| 88 beginTest('Left/Right keys', '01:24'); | 88 beginTest('Left/Right keys', '01:24'); |
| 89 keyDown('rightArrow'); | 89 keyDown('ArrowRight'); |
| 90 keyDown('5'); | 90 keyDown('5'); |
| 91 keyDown('leftArrow'); | 91 keyDown('ArrowLeft'); |
| 92 keyDown('6'); | 92 keyDown('6'); |
| 93 shouldBeEqualToString('input.value', '06:05'); | 93 shouldBeEqualToString('input.value', '06:05'); |
| 94 keyDown('leftArrow'); | 94 keyDown('ArrowLeft'); |
| 95 keyDown('leftArrow'); | 95 keyDown('ArrowLeft'); |
| 96 keyDown('leftArrow'); | 96 keyDown('ArrowLeft'); |
| 97 shouldBeEqualToString('document.activeElement.id', 'input'); | 97 shouldBeEqualToString('document.activeElement.id', 'input'); |
| 98 | 98 |
| 99 beginTest('Up/Down keys', '04:56'); | 99 beginTest('Up/Down keys', '04:56'); |
| 100 keyDown('upArrow'); | 100 keyDown('ArrowUp'); |
| 101 shouldBeEqualToString('input.value', '05:56'); | 101 shouldBeEqualToString('input.value', '05:56'); |
| 102 keyDown('downArrow'); | 102 keyDown('ArrowDown'); |
| 103 keyDown('downArrow'); | 103 keyDown('ArrowDown'); |
| 104 shouldBeEqualToString('input.value', '03:56'); | 104 shouldBeEqualToString('input.value', '03:56'); |
| 105 | 105 |
| 106 beginTest('Up/Down keys on empty value', ''); | 106 beginTest('Up/Down keys on empty value', ''); |
| 107 eventsCounter = {}; | 107 eventsCounter = {}; |
| 108 keyDown('upArrow'); // -> [01]:-- -- | 108 keyDown('ArrowUp'); // -> [01]:-- -- |
| 109 keyDown('upArrow'); // -> [02]:-- -- | 109 keyDown('ArrowUp'); // -> [02]:-- -- |
| 110 keyDown('rightArrow'); // -> 02:[--] -- | 110 keyDown('ArrowRight'); // -> 02:[--] -- |
| 111 keyDown('downArrow'); // -> 02:[59] -- | 111 keyDown('ArrowDown'); // -> 02:[59] -- |
| 112 keyDown('downArrow'); // -> 02:[58] -- | 112 keyDown('ArrowDown'); // -> 02:[58] -- |
| 113 keyDown('rightArrow'); // -> 02:58 [--] | 113 keyDown('ArrowRight'); // -> 02:58 [--] |
| 114 shouldBeUndefined('eventsCounter.input'); | 114 shouldBeUndefined('eventsCounter.input'); |
| 115 shouldBeUndefined('eventsCounter.change'); | 115 shouldBeUndefined('eventsCounter.change'); |
| 116 keyDown('downArrow'); // -> 02:58 [PM] | 116 keyDown('ArrowDown'); // -> 02:58 [PM] |
| 117 shouldBeEqualToString('input.value', '14:58'); | 117 shouldBeEqualToString('input.value', '14:58'); |
| 118 shouldBe('eventsCounter.input', '1'); | 118 shouldBe('eventsCounter.input', '1'); |
| 119 shouldBe('eventsCounter.change', '1'); | 119 shouldBe('eventsCounter.change', '1'); |
| 120 | 120 |
| 121 beginTest('Tab key', '03:00'); | 121 beginTest('Tab key', '03:00'); |
| 122 keyDown('\t'); | 122 keyDown('\t'); |
| 123 keyDown('5'); | 123 keyDown('5'); |
| 124 shouldBeEqualToString('input.value', '03:05'); | 124 shouldBeEqualToString('input.value', '03:05'); |
| 125 keyDown('\t', ['shiftKey']); | 125 keyDown('\t', ['shiftKey']); |
| 126 keyDown('7'); | 126 keyDown('7'); |
| 127 shouldBeEqualToString('input.value', '07:05'); | 127 shouldBeEqualToString('input.value', '07:05'); |
| 128 keyDown('\t'); | 128 keyDown('\t'); |
| 129 keyDown('\t'); | 129 keyDown('\t'); |
| 130 shouldBeEqualToString('document.activeElement.id', 'another'); | 130 shouldBeEqualToString('document.activeElement.id', 'another'); |
| 131 | 131 |
| 132 beginTest('Tab navigation should skip disabled inputs', ''); | 132 beginTest('Tab navigation should skip disabled inputs', ''); |
| 133 before.focus(); | 133 before.focus(); |
| 134 input.disabled = true; | 134 input.disabled = true; |
| 135 keyDown('\t'); | 135 keyDown('\t'); |
| 136 shouldBeEqualToString('document.activeElement.id', 'another'); | 136 shouldBeEqualToString('document.activeElement.id', 'another'); |
| 137 input.disabled = false; | 137 input.disabled = false; |
| 138 | 138 |
| 139 beginTest('Tab navigation should not skip readonly inputs, but editing operation
s should be ignored.', ''); | 139 beginTest('Tab navigation should not skip readonly inputs, but editing operation
s should be ignored.', ''); |
| 140 before.focus(); | 140 before.focus(); |
| 141 input.value = '01:01'; | 141 input.value = '01:01'; |
| 142 input.readOnly = true; | 142 input.readOnly = true; |
| 143 keyDown('\t'); | 143 keyDown('\t'); |
| 144 shouldBeEqualToString('document.activeElement.id', 'input'); | 144 shouldBeEqualToString('document.activeElement.id', 'input'); |
| 145 shouldBeEqualToString('shadowPseudoIdOfFocusedSubField(input)', '-webkit-datetim
e-edit-hour-field'); | 145 shouldBeEqualToString('shadowPseudoIdOfFocusedSubField(input)', '-webkit-datetim
e-edit-hour-field'); |
| 146 shouldBeEqualToString('keyDown("upArrow"); input.value', '01:01'); | 146 shouldBeEqualToString('keyDown("ArrowUp"); input.value', '01:01'); |
| 147 shouldBeEqualToString('keyDown("downArrow"); input.value', '01:01'); | 147 shouldBeEqualToString('keyDown("ArrowDown"); input.value', '01:01'); |
| 148 keyDown('rightArrow'); | 148 keyDown('ArrowRight'); |
| 149 shouldBeEqualToString('shadowPseudoIdOfFocusedSubField(input)', '-webkit-datetim
e-edit-minute-field'); | 149 shouldBeEqualToString('shadowPseudoIdOfFocusedSubField(input)', '-webkit-datetim
e-edit-minute-field'); |
| 150 shouldBeEqualToString('keyDown("3"); input.value', '01:01'); | 150 shouldBeEqualToString('keyDown("3"); input.value', '01:01'); |
| 151 keyDown('\t'); | 151 keyDown('\t'); |
| 152 shouldBeEqualToString('shadowPseudoIdOfFocusedSubField(input)', '-webkit-datetim
e-edit-ampm-field'); | 152 shouldBeEqualToString('shadowPseudoIdOfFocusedSubField(input)', '-webkit-datetim
e-edit-ampm-field'); |
| 153 keyDown('leftArrow'); | 153 keyDown('ArrowLeft'); |
| 154 shouldBeEqualToString('shadowPseudoIdOfFocusedSubField(input)', '-webkit-datetim
e-edit-minute-field'); | 154 shouldBeEqualToString('shadowPseudoIdOfFocusedSubField(input)', '-webkit-datetim
e-edit-minute-field'); |
| 155 keyDown('\t'); | 155 keyDown('\t'); |
| 156 keyDown('\t'); | 156 keyDown('\t'); |
| 157 shouldBeEqualToString('document.activeElement.id', 'another'); | 157 shouldBeEqualToString('document.activeElement.id', 'another'); |
| 158 input.readOnly = false; | 158 input.readOnly = false; |
| 159 | 159 |
| 160 beginTest('Shfit+Tab key', '03:00'); | 160 beginTest('Shfit+Tab key', '03:00'); |
| 161 another.focus(); | 161 another.focus(); |
| 162 keyDown('\t', ['shiftKey']); | 162 keyDown('\t', ['shiftKey']); |
| 163 keyDown('P'); | 163 keyDown('P'); |
| 164 shouldBeEqualToString('input.value', '15:00'); | 164 shouldBeEqualToString('input.value', '15:00'); |
| 165 keyDown('\t', ['shiftKey']); | 165 keyDown('\t', ['shiftKey']); |
| 166 keyDown('3'); | 166 keyDown('3'); |
| 167 shouldBeEqualToString('input.value', '15:03'); | 167 shouldBeEqualToString('input.value', '15:03'); |
| 168 keyDown('\t', ['shiftKey']); | 168 keyDown('\t', ['shiftKey']); |
| 169 keyDown('\t', ['shiftKey']); | 169 keyDown('\t', ['shiftKey']); |
| 170 shouldBeEqualToString('document.activeElement.id', 'before'); | 170 shouldBeEqualToString('document.activeElement.id', 'before'); |
| 171 | 171 |
| 172 beginTest('Up key on maximum value', '12:59:59.999'); | 172 beginTest('Up key on maximum value', '12:59:59.999'); |
| 173 keyDown('upArrow'); | 173 keyDown('ArrowUp'); |
| 174 keyDown('\t'); | 174 keyDown('\t'); |
| 175 keyDown('upArrow'); | 175 keyDown('ArrowUp'); |
| 176 keyDown('\t'); | 176 keyDown('\t'); |
| 177 keyDown('upArrow'); | 177 keyDown('ArrowUp'); |
| 178 keyDown('\t'); | 178 keyDown('\t'); |
| 179 keyDown('upArrow'); | 179 keyDown('ArrowUp'); |
| 180 shouldBeEqualToString('input.value', '13:00'); | 180 shouldBeEqualToString('input.value', '13:00'); |
| 181 | 181 |
| 182 beginTest('Down key on minimum value', '01:00'); | 182 beginTest('Down key on minimum value', '01:00'); |
| 183 input.step = 0.001; | 183 input.step = 0.001; |
| 184 keyDown('downArrow'); | 184 keyDown('ArrowDown'); |
| 185 keyDown('\t'); | 185 keyDown('\t'); |
| 186 keyDown('downArrow'); | 186 keyDown('ArrowDown'); |
| 187 keyDown('\t'); | 187 keyDown('\t'); |
| 188 keyDown('downArrow'); | 188 keyDown('ArrowDown'); |
| 189 keyDown('\t'); | 189 keyDown('\t'); |
| 190 keyDown('downArrow'); | 190 keyDown('ArrowDown'); |
| 191 shouldBeEqualToString('input.value', '00:59:59.999'); | 191 shouldBeEqualToString('input.value', '00:59:59.999'); |
| 192 input.step = 60; | 192 input.step = 60; |
| 193 | 193 |
| 194 beginTest('Backspace key', '12:34'); | 194 beginTest('Backspace key', '12:34'); |
| 195 keyDown("\b"); | 195 keyDown("Backspace"); |
| 196 shouldBeEqualToString('input.value', ''); | 196 shouldBeEqualToString('input.value', ''); |
| 197 | 197 |
| 198 beginTest('Delete key', '12:34'); | 198 beginTest('Delete key', '12:34'); |
| 199 keyDown("delete"); | 199 keyDown("Delete"); |
| 200 shouldBeEqualToString('input.value', ''); | 200 shouldBeEqualToString('input.value', ''); |
| 201 | 201 |
| 202 beginTest('Typeahead', '12:34:56'); | 202 beginTest('Typeahead', '12:34:56'); |
| 203 keyDown('rightArrow'); | 203 keyDown('ArrowRight'); |
| 204 keyDown('1'); | 204 keyDown('1'); |
| 205 shouldBeEqualToString('input.value', '12:01:56'); | 205 shouldBeEqualToString('input.value', '12:01:56'); |
| 206 keyDown('rightArrow'); | 206 keyDown('ArrowRight'); |
| 207 keyDown('leftArrow'); | 207 keyDown('ArrowLeft'); |
| 208 keyDown('2'); | 208 keyDown('2'); |
| 209 shouldBeEqualToString('input.value', '12:02:56'); | 209 shouldBeEqualToString('input.value', '12:02:56'); |
| 210 | 210 |
| 211 input.setAttribute("lang", "he-il"); | 211 input.setAttribute("lang", "he-il"); |
| 212 beginTest('RTL focus navigation', '04:56'); | 212 beginTest('RTL focus navigation', '04:56'); |
| 213 debug('The tests in this block fail on platforms without the lang-attribute-awar
e-form-control-UI feature.'); | 213 debug('The tests in this block fail on platforms without the lang-attribute-awar
e-form-control-UI feature.'); |
| 214 keyDown('1'); // -> [01]:56 | 214 keyDown('1'); // -> [01]:56 |
| 215 shouldBeEqualToString('input.value', '01:56'); | 215 shouldBeEqualToString('input.value', '01:56'); |
| 216 keyDown('\t'); // -> 01:[56] | 216 keyDown('\t'); // -> 01:[56] |
| 217 keyDown('2'); // -> 01:[02] | 217 keyDown('2'); // -> 01:[02] |
| 218 shouldBeEqualToString('input.value', '01:02'); | 218 shouldBeEqualToString('input.value', '01:02'); |
| 219 keyDown('\t', ['shiftKey']); // -> [01]:02 | 219 keyDown('\t', ['shiftKey']); // -> [01]:02 |
| 220 keyDown('3'); // -> [03]:02 | 220 keyDown('3'); // -> [03]:02 |
| 221 shouldBeEqualToString('input.value', '03:02'); | 221 shouldBeEqualToString('input.value', '03:02'); |
| 222 input.removeAttribute("lang"); | 222 input.removeAttribute("lang"); |
| 223 </script> | 223 </script> |
| 224 </body> | 224 </body> |
| 225 </html> | 225 </html> |
| OLD | NEW |