| 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 <script src="../resources/common.js"></script> | 5 <script src="../resources/common.js"></script> |
| 6 </head> | 6 </head> |
| 7 <body> | 7 <body> |
| 8 <script> | 8 <script> |
| 9 description('Check stepping-up and -down for time input fields from renderer. No
cases of empty initial values.'); | 9 description('Check stepping-up and -down for time input fields from renderer. No
cases of empty initial values.'); |
| 10 if (!window.internals) | 10 if (!window.internals) |
| 11 testFailed('This test requires window.internals.'); | 11 testFailed('This test requires window.internals.'); |
| 12 | 12 |
| 13 var input = document.createElement('input'); | 13 var input = document.createElement('input'); |
| 14 var invalidStateErr = '"InvalidStateError: An attempt was made to use an object
that is not, or is no longer, usable."'; | |
| 15 | |
| 16 document.body.appendChild(input); | 14 document.body.appendChild(input); |
| 17 | 15 |
| 18 function keyDown(key, modifiers) | 16 function keyDown(key, modifiers) |
| 19 { | 17 { |
| 20 if (!window.eventSender) | 18 if (!window.eventSender) |
| 21 return; | 19 return; |
| 22 eventSender.keyDown(key, modifiers); | 20 eventSender.keyDown(key, modifiers); |
| 23 } | 21 } |
| 24 | 22 |
| 25 function setDateTimeFormat(pattern) { | 23 function maybeUpdateAttribute(name, value) { |
| 26 getElementByPseudoId(internals.youngestShadowRoot(input), '-webkit-datetime-
edit').setAttribute('pattern', pattern); | 24 if (value) { |
| 27 input.value = ''; // Updates the element for new format | 25 if (input.getAttribute(name) != value) |
| 26 input.setAttribute(name, value); |
| 27 } else { |
| 28 if (input.hasAttribute(name)) |
| 29 input.removeAttribute(name); |
| 30 } |
| 28 } | 31 } |
| 29 | 32 |
| 30 function setInputAttributes(value, min, max, step) { | 33 function setInputAttributes(value, min, max, step) { |
| 31 input.value = value; | 34 input.value = value; |
| 32 input.min = min; | 35 maybeUpdateAttribute('min', min); |
| 33 input.max = max; | 36 maybeUpdateAttribute('max', max); |
| 34 input.step = step; | 37 maybeUpdateAttribute('step', step); |
| 35 } | 38 } |
| 36 | 39 |
| 37 function test(value, step, min, max, keySequence) { | 40 function test(value, step, min, max, keySequence) { |
| 38 setInputAttributes(value, min, max, step); | 41 setInputAttributes(value, min, max, step); |
| 39 for (var i = 0; i < keySequence.length; i++) | 42 for (var i = 0; i < keySequence.length; i++) |
| 40 keyDown(keySequence[i]); | 43 keyDown(keySequence[i]); |
| 41 return input.value; | 44 return input.value; |
| 42 } | 45 } |
| 43 | 46 |
| 44 function stepUp(value, step, min, max) { | 47 function stepUp(value, step, min, max) { |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 shouldBeEqualToString('stepDown("07:05", 1, "07:05", "07:10")', '07:10'); | 166 shouldBeEqualToString('stepDown("07:05", 1, "07:05", "07:10")', '07:10'); |
| 164 shouldBeEqualToString('stepUp("07:05", 1, "07:10", "07:20")', '07:10'); | 167 shouldBeEqualToString('stepUp("07:05", 1, "07:10", "07:20")', '07:10'); |
| 165 shouldBeEqualToString('stepDown("07:05", 1, "07:10", "07:20")', '07:20'); | 168 shouldBeEqualToString('stepDown("07:05", 1, "07:10", "07:20")', '07:20'); |
| 166 shouldBeEqualToString('stepUp("07:05", 1, "07:00", "07:00")', '07:00'); | 169 shouldBeEqualToString('stepUp("07:05", 1, "07:00", "07:00")', '07:00'); |
| 167 shouldBeEqualToString('stepDown("07:05", 1, "07:00", "07:00")', '07:00'); | 170 shouldBeEqualToString('stepDown("07:05", 1, "07:00", "07:00")', '07:00'); |
| 168 shouldBeEqualToString('stepUp("07:35", 600, "07:10", "07:35")', '07:10'); | 171 shouldBeEqualToString('stepUp("07:35", 600, "07:10", "07:35")', '07:10'); |
| 169 shouldBeEqualToString('stepDown("07:35", 600, "07:10", "07:35")', '07:30'); | 172 shouldBeEqualToString('stepDown("07:35", 600, "07:10", "07:35")', '07:30'); |
| 170 shouldBeEqualToString('stepUp("07:10", 1, "07:10", "08:20")', '07:11'); | 173 shouldBeEqualToString('stepUp("07:10", 1, "07:10", "08:20")', '07:11'); |
| 171 shouldBeEqualToString('stepDown("07:10", 1, "07:10", "08:20")', '07:09'); | 174 shouldBeEqualToString('stepDown("07:10", 1, "07:10", "08:20")', '07:09'); |
| 172 | 175 |
| 173 debug('Hours, 1-12'); | |
| 174 keyDown('ArrowLeft'); | |
| 175 shouldBeEqualToString('stepUp("07:00", 1, null, null)', '08:00'); | |
| 176 shouldBeEqualToString('stepDown("07:00", 1, null, null)', '06:00'); | |
| 177 shouldBeEqualToString('stepUp("11:00", 1, null, null)', '00:00'); | |
| 178 shouldBeEqualToString('stepDown("00:00", 1, null, null)', '11:00'); | |
| 179 shouldBeEqualToString('stepUp("06:00", 7200, null, null)', '08:00'); | |
| 180 shouldBeEqualToString('stepDown("06:00", 7200, null, null)', '04:00'); | |
| 181 shouldBeEqualToString('stepUp("10:00", 7200, null, null)', '00:00'); | |
| 182 shouldBeEqualToString('stepDown("00:00", 7200, null, null)', '10:00'); | |
| 183 shouldBeEqualToString('stepUp("07:00", 7200, null, null)', '08:00'); | |
| 184 shouldBeEqualToString('stepDown("07:00", 7200, null, null)', '06:00'); | |
| 185 shouldBeEqualToString('stepUp("06:00", 3601, null, null)', '07:00'); | |
| 186 shouldBeEqualToString('stepDown("06:00", 3601, null, null)', '05:00'); | |
| 187 shouldBeEqualToString('stepUp("06:00", 0, null, null)', '07:00'); | |
| 188 shouldBeEqualToString('stepDown("06:00", 0, null, null)', '05:00'); | |
| 189 shouldBeEqualToString('stepUp("06:00", 86400, null, null)', '00:00'); | |
| 190 shouldBeEqualToString('stepDown("06:00", 86400, null, null)', '00:00'); | |
| 191 shouldBeEqualToString('stepUp("06:00", 36000, null, null)', '07:00'); | |
| 192 shouldBeEqualToString('stepDown("06:00", 36000, null, null)', '05:00'); | |
| 193 shouldBeEqualToString('stepUp("06:00", 7200, "01:00", null)', '07:00'); | |
| 194 shouldBeEqualToString('stepDown("06:00", 7200, "01:00", null)', '05:00'); | |
| 195 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowUp"])',
'02:00'); | |
| 196 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowDown"])'
, '00:00'); | |
| 197 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '12:00 AM'); | |
| 198 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowUp"])
', '01:00'); | |
| 199 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowDown"
])', '11:00'); | |
| 200 shouldBeEqualToString('stepUp("17:00", 1, "17:00", "20:00")', '18:00'); | |
| 201 shouldBeEqualToString('stepDown("17:00", 1, "17:00", "20:00")', '20:00'); | |
| 202 shouldBeEqualToString('stepUp("17:00", 1, "15:00", "17:00")', '15:00'); | |
| 203 shouldBeEqualToString('stepDown("17:00", 1, "15:00", "17:00")', '16:00'); | |
| 204 shouldBeEqualToString('stepUp("15:00", 1, "17:00", "20:00")', '17:00'); | |
| 205 shouldBeEqualToString('stepDown("15:00", 1, "17:00", "20:00")', '20:00'); | |
| 206 shouldBeEqualToString('stepUp("15:00", 1, "13:00", "13:00")', '13:00'); | |
| 207 shouldBeEqualToString('stepDown("15:00", 1, "13:00", "13:00")', '13:00'); | |
| 208 shouldBeEqualToString('stepUp("12:00", 1, "12:00", "15:00")', '13:00'); | |
| 209 shouldBeEqualToString('stepDown("12:00", 1, "12:00", "15:00")', '23:00'); | |
| 210 shouldBeEqualToString('stepUp("15:00", 1, "12:00", "15:00")', '16:00'); | |
| 211 shouldBeEqualToString('stepDown("15:00", 1, "12:00", "15:00")', '14:00'); | |
| 212 shouldBeEqualToString('stepUp("12:00", 1, "10:00", "12:00")', '13:00'); | |
| 213 shouldBeEqualToString('stepDown("12:00", 1, "10:00", "12:00")', '23:00'); | |
| 214 shouldBeEqualToString('stepUp("00:00", 1, "00:00", "03:00")', '01:00'); | |
| 215 shouldBeEqualToString('stepDown("00:00", 1, "00:00", "03:00")', '11:00'); | |
| 216 shouldBeEqualToString('stepUp("15:00", 1, "10:00", "15:00")', '16:00'); | |
| 217 shouldBeEqualToString('stepDown("10:00", 1, "10:00", "15:00")', '09:00'); | |
| 218 shouldBeEqualToString('stepUp("17:00", 7200, "17:00", "20:00")', '19:00'); | |
| 219 shouldBeEqualToString('stepDown("17:00", 7200, "17:00", "20:00")', '19:00'); | |
| 220 shouldBeEqualToString('stepUp("17:00", 7200, "17:00", "18:00")', '17:00'); | |
| 221 shouldBeEqualToString('stepDown("17:00", 7200, "17:00", "18:00")', '17:00'); | |
| 222 | |
| 223 debug('Hours, 0-11'); | |
| 224 setDateTimeFormat('KK:mm a'); | |
| 225 shouldBeEqualToString('stepUp("11:00", 1, null, null)', '00:00'); | |
| 226 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '00:00 AM'); | |
| 227 shouldBeEqualToString('stepDown("00:00", 1, null, null)', '11:00'); | |
| 228 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '11:00 AM'); | |
| 229 shouldBeEqualToString('stepUp("23:00", 1, null, null)', '12:00'); | |
| 230 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '00:00 PM'); | |
| 231 shouldBeEqualToString('stepDown("12:00", 1, null, null)', '23:00'); | |
| 232 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '11:00 PM'); | |
| 233 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowUp"])',
'00:00'); | |
| 234 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowDown"])'
, '10:00'); | |
| 235 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowUp"])
', '01:00'); | |
| 236 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowDown"
])', '11:00'); | |
| 237 shouldBeEqualToString('stepUp("17:00", 1, "17:00", "20:00")', '18:00'); | |
| 238 shouldBeEqualToString('stepDown("17:00", 1, "17:00", "20:00")', '20:00'); | |
| 239 shouldBeEqualToString('stepUp("17:00", 1, "15:00", "17:00")', '15:00'); | |
| 240 shouldBeEqualToString('stepDown("17:00", 1, "15:00", "17:00")', '16:00'); | |
| 241 shouldBeEqualToString('stepUp("15:00", 1, "17:00", "20:00")', '17:00'); | |
| 242 shouldBeEqualToString('stepDown("15:00", 1, "17:00", "20:00")', '20:00'); | |
| 243 shouldBeEqualToString('stepUp("15:00", 1, "13:00", "13:00")', '13:00'); | |
| 244 shouldBeEqualToString('stepDown("15:00", 1, "13:00", "13:00")', '13:00'); | |
| 245 shouldBeEqualToString('stepUp("12:00", 1, "12:00", "15:00")', '13:00'); | |
| 246 shouldBeEqualToString('stepDown("12:00", 1, "12:00", "15:00")', '15:00'); | |
| 247 shouldBeEqualToString('stepUp("15:00", 1, "12:00", "15:00")', '12:00'); | |
| 248 shouldBeEqualToString('stepDown("15:00", 1, "12:00", "15:00")', '14:00'); | |
| 249 shouldBeEqualToString('stepUp("12:00", 1, "10:00", "12:00")', '13:00'); | |
| 250 shouldBeEqualToString('stepDown("12:00", 1, "10:00", "12:00")', '23:00'); | |
| 251 shouldBeEqualToString('stepUp("00:00", 1, "00:00", "03:00")', '01:00'); | |
| 252 shouldBeEqualToString('stepDown("00:00", 1, "00:00", "03:00")', '03:00'); | |
| 253 shouldBeEqualToString('stepUp("15:00", 1, "10:00", "15:00")', '16:00'); | |
| 254 shouldBeEqualToString('stepDown("10:00", 1, "10:00", "15:00")', '09:00'); | |
| 255 shouldBeEqualToString('stepUp("20:00", 7200, "17:00", "20:00")', '17:00'); | |
| 256 shouldBeEqualToString('stepDown("20:00", 7200, "17:00", "20:00")', '19:00'); | |
| 257 | |
| 258 debug('Hours, 0-23'); | |
| 259 setDateTimeFormat('HH:mm'); | |
| 260 shouldBeEqualToString('stepUp("07:00", 1, null, null)', '08:00'); | |
| 261 shouldBeEqualToString('stepDown("07:00", 1, null, null)', '06:00'); | |
| 262 shouldBeEqualToString('stepUp("23:00", 1, null, null)', '00:00'); | |
| 263 shouldBeEqualToString('stepDown("00:00", 1, null, null)', '23:00'); | |
| 264 shouldBeEqualToString('stepUp("06:00", 7200, null, null)', '08:00'); | |
| 265 shouldBeEqualToString('stepDown("06:00", 7200, null, null)', '04:00'); | |
| 266 shouldBeEqualToString('stepUp("22:00", 7200, null, null)', '00:00'); | |
| 267 shouldBeEqualToString('stepDown("00:00", 7200, null, null)', '22:00'); | |
| 268 shouldBeEqualToString('stepUp("07:00", 7200, null, null)', '08:00'); | |
| 269 shouldBeEqualToString('stepDown("07:00", 7200, null, null)', '06:00'); | |
| 270 shouldBeEqualToString('stepUp("06:00", 3601, null, null)', '07:00'); | |
| 271 shouldBeEqualToString('stepDown("06:00", 3601, null, null)', '05:00'); | |
| 272 shouldBeEqualToString('stepUp("06:00", 0, null, null)', '07:00'); | |
| 273 shouldBeEqualToString('stepDown("06:00", 0, null, null)', '05:00'); | |
| 274 shouldBeEqualToString('stepUp("06:00", 86400, null, null)', '00:00'); | |
| 275 shouldBeEqualToString('stepDown("06:00", 86400, null, null)', '00:00'); | |
| 276 shouldBeEqualToString('stepUp("06:00", 36000, null, null)', '07:00'); | |
| 277 shouldBeEqualToString('stepDown("06:00", 36000, null, null)', '05:00'); | |
| 278 shouldBeEqualToString('stepUp("06:00", 7200, "01:00", null)', '07:00'); | |
| 279 shouldBeEqualToString('stepDown("06:00", 7200, "01:00", null)', '05:00'); | |
| 280 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowUp"])',
'00:00'); | |
| 281 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '00:00'); | |
| 282 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowDown"])'
, '22:00'); | |
| 283 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowUp"])
', '01:00'); | |
| 284 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowDown"
])', '23:00'); | |
| 285 shouldBeEqualToString('stepUp("17:00", 1, "17:00", "20:00")', '18:00'); | |
| 286 shouldBeEqualToString('stepDown("17:00", 1, "17:00", "20:00")', '20:00'); | |
| 287 shouldBeEqualToString('stepUp("17:00", 1, "15:00", "17:00")', '15:00'); | |
| 288 shouldBeEqualToString('stepDown("17:00", 1, "15:00", "17:00")', '16:00'); | |
| 289 shouldBeEqualToString('stepUp("15:00", 1, "17:00", "20:00")', '17:00'); | |
| 290 shouldBeEqualToString('stepDown("15:00", 1, "17:00", "20:00")', '20:00'); | |
| 291 shouldBeEqualToString('stepUp("15:00", 1, "13:00", "13:00")', '13:00'); | |
| 292 shouldBeEqualToString('stepDown("15:00", 1, "13:00", "13:00")', '13:00'); | |
| 293 shouldBeEqualToString('stepUp("00:00", 1, "00:00", "03:00")', '01:00'); | |
| 294 shouldBeEqualToString('stepDown("00:00", 1, "00:00", "03:00")', '03:00'); | |
| 295 shouldBeEqualToString('stepUp("03:00", 1, "00:00", "03:00")', '00:00'); | |
| 296 shouldBeEqualToString('stepDown("03:00", 1, "00:00", "03:00")', '02:00'); | |
| 297 shouldBeEqualToString('stepUp("12:00", 1, "10:00", "12:00")', '10:00'); | |
| 298 shouldBeEqualToString('stepDown("12:00", 1, "10:00", "12:00")', '11:00'); | |
| 299 shouldBeEqualToString('stepUp("00:00", 1, "00:00", "03:00")', '01:00'); | |
| 300 shouldBeEqualToString('stepDown("00:00", 1, "00:00", "03:00")', '03:00'); | |
| 301 shouldBeEqualToString('stepUp("15:00", 1, "10:00", "15:00")', '10:00'); | |
| 302 shouldBeEqualToString('stepDown("10:00", 1, "10:00", "15:00")', '15:00'); | |
| 303 shouldBeEqualToString('stepUp("20:00", 7200, "17:00", "20:00")', '17:00'); | |
| 304 shouldBeEqualToString('stepDown("20:00", 7200, "17:00", "20:00")', '19:00'); | |
| 305 | |
| 306 debug('Hours, 1-24'); | |
| 307 setDateTimeFormat('kk:mm'); | |
| 308 shouldBeEqualToString('stepUp("11:00", 1, null, null)', '12:00'); | |
| 309 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '12:00'); | |
| 310 shouldBeEqualToString('stepDown("00:00", 1, null, null)', '23:00'); | |
| 311 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '23:00'); | |
| 312 shouldBeEqualToString('stepUp("23:00", 1, null, null)', '00:00'); | |
| 313 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '24:00'); | |
| 314 shouldBeEqualToString('stepDown("12:00", 1, null, null)', '11:00'); | |
| 315 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '11:00'); | |
| 316 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowUp"])',
'02:00'); | |
| 317 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowDown"])'
, '00:00'); | |
| 318 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowUp"])
', '01:00'); | |
| 319 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowDown"
])', '23:00'); | |
| 320 shouldBeEqualToString('stepUp("17:00", 1, "17:00", "20:00")', '18:00'); | |
| 321 shouldBeEqualToString('stepDown("17:00", 1, "17:00", "20:00")', '20:00'); | |
| 322 shouldBeEqualToString('stepUp("17:00", 1, "15:00", "17:00")', '15:00'); | |
| 323 shouldBeEqualToString('stepDown("17:00", 1, "15:00", "17:00")', '16:00'); | |
| 324 shouldBeEqualToString('stepUp("15:00", 1, "17:00", "20:00")', '17:00'); | |
| 325 shouldBeEqualToString('stepDown("15:00", 1, "17:00", "20:00")', '20:00'); | |
| 326 shouldBeEqualToString('stepUp("15:00", 1, "13:00", "13:00")', '13:00'); | |
| 327 shouldBeEqualToString('stepDown("15:00", 1, "13:00", "13:00")', '13:00'); | |
| 328 shouldBeEqualToString('stepUp("00:00", 1, "00:00", "03:00")', '01:00'); | |
| 329 shouldBeEqualToString('stepDown("00:00", 1, "00:00", "03:00")', '23:00'); | |
| 330 shouldBeEqualToString('stepUp("03:00", 1, "00:00", "03:00")', '04:00'); | |
| 331 shouldBeEqualToString('stepDown("03:00", 1, "00:00", "03:00")', '02:00'); | |
| 332 shouldBeEqualToString('stepUp("12:00", 1, "10:00", "12:00")', '10:00'); | |
| 333 shouldBeEqualToString('stepDown("12:00", 1, "10:00", "12:00")', '11:00'); | |
| 334 shouldBeEqualToString('stepUp("00:00", 1, "00:00", "03:00")', '01:00'); | |
| 335 shouldBeEqualToString('stepDown("00:00", 1, "00:00", "03:00")', '23:00'); | |
| 336 shouldBeEqualToString('stepUp("15:00", 1, "10:00", "15:00")', '10:00'); | |
| 337 shouldBeEqualToString('stepDown("10:00", 1, "10:00", "15:00")', '15:00'); | |
| 338 shouldBeEqualToString('stepUp("17:00", 7200, "17:00", "20:00")', '19:00'); | |
| 339 shouldBeEqualToString('stepDown("17:00", 7200, "17:00", "20:00")', '19:00'); | |
| 340 shouldBeEqualToString('stepUp("17:00", 7200, "17:00", "18:00")', '17:00'); | |
| 341 shouldBeEqualToString('stepDown("17:00", 7200, "17:00", "18:00")', '17:00'); | |
| 342 | |
| 343 setDateTimeFormat(''); | |
| 344 debug(''); | 176 debug(''); |
| 345 document.body.removeChild(input); | 177 document.body.removeChild(input); |
| 346 </script> | 178 </script> |
| 347 </body> | 179 </body> |
| 348 </html> | 180 </html> |
| OLD | NEW |