| 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/testharness.js"></script> | 
|  | 5 <script src="../../../resources/testharnessreport.js"></script> | 
| 5 <script src="../resources/common.js"></script> | 6 <script src="../resources/common.js"></script> | 
| 6 </head> | 7 </head> | 
| 7 <body> | 8 <body> | 
| 8 <script> | 9 <script> | 
| 9 description('Check stepping-up and -down for time input fields from renderer. No
      cases of empty initial values.'); | 10 // We use a single INPUT element for multiple testcases to improve test performa
     nce. | 
| 10 if (!window.internals) |  | 
| 11     testFailed('This test requires window.internals.'); |  | 
| 12 |  | 
| 13 var input = document.createElement('input'); | 11 var input = document.createElement('input'); | 
|  | 12 input.type = 'time'; | 
| 14 document.body.appendChild(input); | 13 document.body.appendChild(input); | 
| 15 | 14 input.focus(); | 
| 16 function keyDown(key, modifiers) |  | 
| 17 { |  | 
| 18     if (!window.eventSender) |  | 
| 19         return; |  | 
| 20     eventSender.keyDown(key, modifiers); |  | 
| 21 } |  | 
| 22 | 15 | 
| 23 function setDateTimeFormat(pattern) { | 16 function setDateTimeFormat(pattern) { | 
| 24     getElementByPseudoId(internals.youngestShadowRoot(input), '-webkit-datetime-
     edit').setAttribute('pattern', pattern); | 17   getElementByPseudoId(internals.youngestShadowRoot(input), '-webkit-datetime-ed
     it').setAttribute('pattern', pattern); | 
| 25     input.value = '';  // Updates the element for new format | 18   input.value = '';  // Updates the element for new format | 
| 26 } | 19 } | 
| 27 | 20 | 
| 28 function maybeUpdateAttribute(name, value) { | 21 function maybeUpdateAttribute(name, value) { | 
| 29     if (value) { | 22   if (value) { | 
| 30         if (input.getAttribute(name) != value) | 23     if (input.getAttribute(name) !== value) | 
| 31             input.setAttribute(name, value); | 24       input.setAttribute(name, value); | 
| 32     } else { | 25   } else { | 
| 33         if (input.hasAttribute(name)) | 26     if (input.hasAttribute(name)) | 
| 34             input.removeAttribute(name); | 27       input.removeAttribute(name); | 
| 35     } | 28   } | 
| 36 } | 29 } | 
| 37 | 30 | 
| 38 function setInputAttributes(value, min, max, step) { | 31 function assert_input_value_with_limits(initial, step, min, max, keySequence, ex
     pected, expectedDisplayValue) { | 
| 39     input.value = value; | 32   input.value = initial; | 
| 40     maybeUpdateAttribute('min', min); | 33   maybeUpdateAttribute('min', min); | 
| 41     maybeUpdateAttribute('max', max); | 34   maybeUpdateAttribute('max', max); | 
| 42     maybeUpdateAttribute('step', step); | 35   maybeUpdateAttribute('step', step); | 
| 43 } | 36 | 
| 44 | 37   keySequence.forEach(key => { eventSender.keyDown(key); }); | 
| 45 function test(value, step, min, max, keySequence) { | 38 | 
| 46     setInputAttributes(value, min, max, step); | 39   assert_equals(input.value, expected); | 
| 47     for (var i = 0; i < keySequence.length; i++) | 40   if (expectedDisplayValue) | 
| 48         keyDown(keySequence[i]); | 41     assert_equals(getUserAgentShadowTextContent(input), expectedDisplayValue); | 
| 49     return input.value; | 42 } | 
| 50 } | 43 | 
| 51 | 44 function assert_input_value_with_limits_after_up(initial, step, min, max, expect
     ed, expectedDisplayValue) { | 
| 52 function stepUp(value, step, min, max) { | 45   assert_input_value_with_limits(initial, step, min, max, ['ArrowUp'], expected,
      expectedDisplayValue); | 
| 53     return test(value, step, min, max, ['ArrowUp']); | 46 } | 
| 54 } | 47 | 
| 55 | 48 function assert_input_value_with_limits_after_down(initial, step, min, max, expe
     cted, expectedDisplayValue) { | 
| 56 function stepDown(value, step, min, max) { | 49   assert_input_value_with_limits(initial, step, min, max, ['ArrowDown'], expecte
     d, expectedDisplayValue); | 
| 57     return test(value, step, min, max, ['ArrowDown']); | 50 } | 
| 58 } | 51 | 
| 59 | 52 function assert_input_value_with_limits_after_deleteup(initial, step, min, max, 
     expected, expectedDisplayValue) { | 
| 60 input.type = 'time'; | 53   assert_input_value_with_limits(initial, step, min, max, ['Delete', 'ArrowUp'],
      expected, expectedDisplayValue); | 
| 61 input.focus(); | 54 } | 
| 62 | 55 | 
| 63 debug('Hours, 1-12'); | 56 function assert_input_value_with_limits_after_deletedown(initial, step, min, max
     , expected, expectedDisplayValue) { | 
| 64 shouldBeEqualToString('stepUp("07:00", 1, null, null)', '08:00'); | 57   assert_input_value_with_limits(initial, step, min, max, ['Delete', 'ArrowDown'
     ], expected, expectedDisplayValue); | 
| 65 shouldBeEqualToString('stepDown("07:00", 1, null, null)', '06:00'); | 58 } | 
| 66 shouldBeEqualToString('stepUp("11:00", 1, null, null)', '00:00'); | 59 | 
| 67 shouldBeEqualToString('stepDown("00:00", 1, null, null)', '11:00'); | 60 function assert_input_value_after_up(initial, step, expected, expectedDisplayVal
     ue) { | 
| 68 shouldBeEqualToString('stepUp("06:00", 7200, null, null)', '08:00'); | 61   assert_input_value_with_limits(initial, step, null, null, ['ArrowUp'], expecte
     d, expectedDisplayValue); | 
| 69 shouldBeEqualToString('stepDown("06:00", 7200, null, null)', '04:00'); | 62 } | 
| 70 shouldBeEqualToString('stepUp("10:00", 7200, null, null)', '00:00'); | 63 | 
| 71 shouldBeEqualToString('stepDown("00:00", 7200, null, null)', '10:00'); | 64 function assert_input_value_after_down(initial, step, expected, expectedDisplayV
     alue) { | 
| 72 shouldBeEqualToString('stepUp("07:00", 7200, null, null)', '08:00'); | 65   assert_input_value_with_limits(initial, step, null, null, ['ArrowDown'], expec
     ted, expectedDisplayValue); | 
| 73 shouldBeEqualToString('stepDown("07:00", 7200, null, null)', '06:00'); | 66 } | 
| 74 shouldBeEqualToString('stepUp("06:00", 3601, null, null)', '07:00'); | 67 | 
| 75 shouldBeEqualToString('stepDown("06:00", 3601, null, null)', '05:00'); | 68 // Hours, 1-12 | 
| 76 shouldBeEqualToString('stepUp("06:00", 0, null, null)', '07:00'); | 69 test(() => { | 
| 77 shouldBeEqualToString('stepDown("06:00", 0, null, null)', '05:00'); | 70   assert_exists(window, 'internals'); | 
| 78 shouldBeEqualToString('stepUp("06:00", 86400, null, null)', '00:00'); | 71   assert_exists(window, 'eventSender'); | 
| 79 shouldBeEqualToString('stepDown("06:00", 86400, null, null)', '00:00'); | 72 | 
| 80 shouldBeEqualToString('stepUp("06:00", 36000, null, null)', '07:00'); | 73   assert_input_value_after_up('07:00', 1, '08:00'); | 
| 81 shouldBeEqualToString('stepDown("06:00", 36000, null, null)', '05:00'); | 74   assert_input_value_after_down('07:00', 1, '06:00'); | 
| 82 shouldBeEqualToString('stepUp("06:00", 7200, "01:00", null)', '07:00'); | 75   assert_input_value_after_up('11:00', 1, '00:00'); | 
| 83 shouldBeEqualToString('stepDown("06:00", 7200, "01:00", null)', '05:00'); | 76   assert_input_value_after_down('00:00', 1, '11:00'); | 
| 84 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowUp"])', 
     '02:00'); | 77   assert_input_value_after_up('06:00', 7200, '08:00'); | 
| 85 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowDown"])'
     , '00:00'); | 78   assert_input_value_after_down('06:00', 7200, '04:00'); | 
| 86 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '12:00 AM'); | 79   assert_input_value_after_up('10:00', 7200, '00:00'); | 
| 87 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowUp"])
     ', '01:00'); | 80   assert_input_value_after_down('00:00', 7200, '10:00'); | 
| 88 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowDown"
     ])', '11:00'); | 81   assert_input_value_after_up('07:00', 7200, '08:00'); | 
| 89 shouldBeEqualToString('stepUp("17:00", 1, "17:00", "20:00")', '18:00'); | 82   assert_input_value_after_down('07:00', 7200, '06:00'); | 
| 90 shouldBeEqualToString('stepDown("17:00", 1, "17:00", "20:00")', '20:00'); | 83   assert_input_value_after_up('06:00', 3601, '07:00'); | 
| 91 shouldBeEqualToString('stepUp("17:00", 1, "15:00", "17:00")', '15:00'); | 84   assert_input_value_after_down('06:00', 3601, '05:00'); | 
| 92 shouldBeEqualToString('stepDown("17:00", 1, "15:00", "17:00")', '16:00'); | 85   assert_input_value_after_up('06:00', 0, '07:00'); | 
| 93 shouldBeEqualToString('stepUp("15:00", 1, "17:00", "20:00")', '17:00'); | 86   assert_input_value_after_down('06:00', 0, '05:00'); | 
| 94 shouldBeEqualToString('stepDown("15:00", 1, "17:00", "20:00")', '20:00'); | 87   assert_input_value_after_up('06:00', 86400, '00:00'); | 
| 95 shouldBeEqualToString('stepUp("15:00", 1, "13:00", "13:00")', '13:00'); | 88   assert_input_value_after_down('06:00', 86400, '00:00'); | 
| 96 shouldBeEqualToString('stepDown("15:00", 1, "13:00", "13:00")', '13:00'); | 89   assert_input_value_after_up('06:00', 36000, '07:00'); | 
| 97 shouldBeEqualToString('stepUp("12:00", 1, "12:00", "15:00")', '13:00'); | 90   assert_input_value_after_down('06:00', 36000, '05:00'); | 
| 98 shouldBeEqualToString('stepDown("12:00", 1, "12:00", "15:00")', '23:00'); | 91   assert_input_value_with_limits_after_up('06:00', 7200, '01:00', null, '07:00')
     ; | 
| 99 shouldBeEqualToString('stepUp("15:00", 1, "12:00", "15:00")', '16:00'); | 92   assert_input_value_with_limits_after_down('06:00', 7200, '01:00', null, '05:00
     '); | 
| 100 shouldBeEqualToString('stepDown("15:00", 1, "12:00", "15:00")', '14:00'); | 93   assert_input_value_with_limits_after_deleteup('06:00', 7200, null, null, '02:0
     0'); | 
| 101 shouldBeEqualToString('stepUp("12:00", 1, "10:00", "12:00")', '13:00'); | 94   assert_input_value_with_limits_after_deletedown('06:00', 7200, null, null, '00
     :00', '12:00 AM'); | 
| 102 shouldBeEqualToString('stepDown("12:00", 1, "10:00", "12:00")', '23:00'); | 95   assert_input_value_with_limits_after_deleteup('06:00', 7200, '01:00', null, '0
     1:00'); | 
| 103 shouldBeEqualToString('stepUp("00:00", 1, "00:00", "03:00")', '01:00'); | 96   assert_input_value_with_limits_after_deletedown('06:00', 7200, '01:00', null, 
     '11:00'); | 
| 104 shouldBeEqualToString('stepDown("00:00", 1, "00:00", "03:00")', '11:00'); | 97   assert_input_value_with_limits_after_up('17:00', 1, '17:00', '20:00', '18:00')
     ; | 
| 105 shouldBeEqualToString('stepUp("15:00", 1, "10:00", "15:00")', '16:00'); | 98   assert_input_value_with_limits_after_down('17:00', 1, '17:00', '20:00', '20:00
     '); | 
| 106 shouldBeEqualToString('stepDown("10:00", 1, "10:00", "15:00")', '09:00'); | 99   assert_input_value_with_limits_after_up('17:00', 1, '15:00', '17:00', '15:00')
     ; | 
| 107 shouldBeEqualToString('stepUp("17:00", 7200, "17:00", "20:00")', '19:00'); | 100   assert_input_value_with_limits_after_down('17:00', 1, '15:00', '17:00', '16:00
     '); | 
| 108 shouldBeEqualToString('stepDown("17:00", 7200, "17:00", "20:00")', '19:00'); | 101   assert_input_value_with_limits_after_up('15:00', 1, '17:00', '20:00', '17:00')
     ; | 
| 109 shouldBeEqualToString('stepUp("17:00", 7200, "17:00", "18:00")', '17:00'); | 102   assert_input_value_with_limits_after_down('15:00', 1, '17:00', '20:00', '20:00
     '); | 
| 110 shouldBeEqualToString('stepDown("17:00", 7200, "17:00", "18:00")', '17:00'); | 103   assert_input_value_with_limits_after_up('15:00', 1, '13:00', '13:00', '13:00')
     ; | 
| 111 | 104   assert_input_value_with_limits_after_down('15:00', 1, '13:00', '13:00', '13:00
     '); | 
| 112 debug('Hours, 0-11'); | 105   assert_input_value_with_limits_after_up('12:00', 1, '12:00', '15:00', '13:00')
     ; | 
| 113 setDateTimeFormat('KK:mm a'); | 106   assert_input_value_with_limits_after_down('12:00', 1, '12:00', '15:00', '23:00
     '); | 
| 114 shouldBeEqualToString('stepUp("11:00", 1, null, null)', '00:00'); | 107   assert_input_value_with_limits_after_up('15:00', 1, '12:00', '15:00', '16:00')
     ; | 
| 115 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '00:00 AM'); | 108   assert_input_value_with_limits_after_down('15:00', 1, '12:00', '15:00', '14:00
     '); | 
| 116 shouldBeEqualToString('stepDown("00:00", 1, null, null)', '11:00'); | 109   assert_input_value_with_limits_after_up('12:00', 1, '10:00', '12:00', '13:00')
     ; | 
| 117 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '11:00 AM'); | 110   assert_input_value_with_limits_after_down('12:00', 1, '10:00', '12:00', '23:00
     '); | 
| 118 shouldBeEqualToString('stepUp("23:00", 1, null, null)', '12:00'); | 111   assert_input_value_with_limits_after_up('00:00', 1, '00:00', '03:00', '01:00')
     ; | 
| 119 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '00:00 PM'); | 112   assert_input_value_with_limits_after_down('00:00', 1, '00:00', '03:00', '11:00
     '); | 
| 120 shouldBeEqualToString('stepDown("12:00", 1, null, null)', '23:00'); | 113   assert_input_value_with_limits_after_up('15:00', 1, '10:00', '15:00', '16:00')
     ; | 
| 121 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '11:00 PM'); | 114   assert_input_value_with_limits_after_down('10:00', 1, '10:00', '15:00', '09:00
     '); | 
| 122 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowUp"])', 
     '00:00'); | 115   assert_input_value_with_limits_after_up('17:00', 7200, '17:00', '20:00', '19:0
     0'); | 
| 123 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowDown"])'
     , '10:00'); | 116   assert_input_value_with_limits_after_down('17:00', 7200, '17:00', '20:00', '19
     :00'); | 
| 124 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowUp"])
     ', '01:00'); | 117   assert_input_value_with_limits_after_up('17:00', 7200, '17:00', '18:00', '17:0
     0'); | 
| 125 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowDown"
     ])', '11:00'); | 118   assert_input_value_with_limits_after_down('17:00', 7200, '17:00', '18:00', '17
     :00'); | 
| 126 shouldBeEqualToString('stepUp("17:00", 1, "17:00", "20:00")', '18:00'); | 119 }, 'Hours, 1-12'); | 
| 127 shouldBeEqualToString('stepDown("17:00", 1, "17:00", "20:00")', '20:00'); | 120 | 
| 128 shouldBeEqualToString('stepUp("17:00", 1, "15:00", "17:00")', '15:00'); | 121 // Hours, 0-11 | 
| 129 shouldBeEqualToString('stepDown("17:00", 1, "15:00", "17:00")', '16:00'); | 122 test(() => { | 
| 130 shouldBeEqualToString('stepUp("15:00", 1, "17:00", "20:00")', '17:00'); | 123   assert_exists(window, 'internals'); | 
| 131 shouldBeEqualToString('stepDown("15:00", 1, "17:00", "20:00")', '20:00'); | 124   assert_exists(window, 'eventSender'); | 
| 132 shouldBeEqualToString('stepUp("15:00", 1, "13:00", "13:00")', '13:00'); | 125   setDateTimeFormat('KK:mm a'); | 
| 133 shouldBeEqualToString('stepDown("15:00", 1, "13:00", "13:00")', '13:00'); | 126 | 
| 134 shouldBeEqualToString('stepUp("12:00", 1, "12:00", "15:00")', '13:00'); | 127   assert_input_value_after_up('11:00', 1, '00:00', '00:00 AM'); | 
| 135 shouldBeEqualToString('stepDown("12:00", 1, "12:00", "15:00")', '15:00'); | 128   assert_input_value_after_down('00:00', 1, '11:00', '11:00 AM'); | 
| 136 shouldBeEqualToString('stepUp("15:00", 1, "12:00", "15:00")', '12:00'); | 129   assert_input_value_after_up('23:00', 1, '12:00', '00:00 PM'); | 
| 137 shouldBeEqualToString('stepDown("15:00", 1, "12:00", "15:00")', '14:00'); | 130   assert_input_value_after_down('12:00', 1, '23:00', '11:00 PM'); | 
| 138 shouldBeEqualToString('stepUp("12:00", 1, "10:00", "12:00")', '13:00'); | 131   assert_input_value_with_limits_after_deleteup('06:00', 7200, null, null, '00:0
     0'); | 
| 139 shouldBeEqualToString('stepDown("12:00", 1, "10:00", "12:00")', '23:00'); | 132   assert_input_value_with_limits_after_deletedown('06:00', 7200, null, null, '10
     :00'); | 
| 140 shouldBeEqualToString('stepUp("00:00", 1, "00:00", "03:00")', '01:00'); | 133   assert_input_value_with_limits_after_deleteup('06:00', 7200, '01:00', null, '0
     1:00'); | 
| 141 shouldBeEqualToString('stepDown("00:00", 1, "00:00", "03:00")', '03:00'); | 134   assert_input_value_with_limits_after_deletedown('06:00', 7200, '01:00', null, 
     '11:00'); | 
| 142 shouldBeEqualToString('stepUp("15:00", 1, "10:00", "15:00")', '16:00'); | 135   assert_input_value_with_limits_after_up('17:00', 1, '17:00', '20:00', '18:00')
     ; | 
| 143 shouldBeEqualToString('stepDown("10:00", 1, "10:00", "15:00")', '09:00'); | 136   assert_input_value_with_limits_after_down('17:00', 1, '17:00', '20:00', '20:00
     '); | 
| 144 shouldBeEqualToString('stepUp("20:00", 7200, "17:00", "20:00")', '17:00'); | 137   assert_input_value_with_limits_after_up('17:00', 1, '15:00', '17:00', '15:00')
     ; | 
| 145 shouldBeEqualToString('stepDown("20:00", 7200, "17:00", "20:00")', '19:00'); | 138   assert_input_value_with_limits_after_down('17:00', 1, '15:00', '17:00', '16:00
     '); | 
| 146 | 139   assert_input_value_with_limits_after_up('15:00', 1, '17:00', '20:00', '17:00')
     ; | 
| 147 debug('Hours, 0-23'); | 140   assert_input_value_with_limits_after_down('15:00', 1, '17:00', '20:00', '20:00
     '); | 
| 148 setDateTimeFormat('HH:mm'); | 141   assert_input_value_with_limits_after_up('15:00', 1, '13:00', '13:00', '13:00')
     ; | 
| 149 shouldBeEqualToString('stepUp("07:00", 1, null, null)', '08:00'); | 142   assert_input_value_with_limits_after_down('15:00', 1, '13:00', '13:00', '13:00
     '); | 
| 150 shouldBeEqualToString('stepDown("07:00", 1, null, null)', '06:00'); | 143   assert_input_value_with_limits_after_up('12:00', 1, '12:00', '15:00', '13:00')
     ; | 
| 151 shouldBeEqualToString('stepUp("23:00", 1, null, null)', '00:00'); | 144   assert_input_value_with_limits_after_down('12:00', 1, '12:00', '15:00', '15:00
     '); | 
| 152 shouldBeEqualToString('stepDown("00:00", 1, null, null)', '23:00'); | 145   assert_input_value_with_limits_after_up('15:00', 1, '12:00', '15:00', '12:00')
     ; | 
| 153 shouldBeEqualToString('stepUp("06:00", 7200, null, null)', '08:00'); | 146   assert_input_value_with_limits_after_down('15:00', 1, '12:00', '15:00', '14:00
     '); | 
| 154 shouldBeEqualToString('stepDown("06:00", 7200, null, null)', '04:00'); | 147   assert_input_value_with_limits_after_up('12:00', 1, '10:00', '12:00', '13:00')
     ; | 
| 155 shouldBeEqualToString('stepUp("22:00", 7200, null, null)', '00:00'); | 148   assert_input_value_with_limits_after_down('12:00', 1, '10:00', '12:00', '23:00
     '); | 
| 156 shouldBeEqualToString('stepDown("00:00", 7200, null, null)', '22:00'); | 149   assert_input_value_with_limits_after_up('00:00', 1, '00:00', '03:00', '01:00')
     ; | 
| 157 shouldBeEqualToString('stepUp("07:00", 7200, null, null)', '08:00'); | 150   assert_input_value_with_limits_after_down('00:00', 1, '00:00', '03:00', '03:00
     '); | 
| 158 shouldBeEqualToString('stepDown("07:00", 7200, null, null)', '06:00'); | 151   assert_input_value_with_limits_after_up('15:00', 1, '10:00', '15:00', '16:00')
     ; | 
| 159 shouldBeEqualToString('stepUp("06:00", 3601, null, null)', '07:00'); | 152   assert_input_value_with_limits_after_down('10:00', 1, '10:00', '15:00', '09:00
     '); | 
| 160 shouldBeEqualToString('stepDown("06:00", 3601, null, null)', '05:00'); | 153   assert_input_value_with_limits_after_up('20:00', 7200, '17:00', '20:00', '17:0
     0'); | 
| 161 shouldBeEqualToString('stepUp("06:00", 0, null, null)', '07:00'); | 154   assert_input_value_with_limits_after_down('20:00', 7200, '17:00', '20:00', '19
     :00'); | 
| 162 shouldBeEqualToString('stepDown("06:00", 0, null, null)', '05:00'); | 155 }, 'Hours, 0-11'); | 
| 163 shouldBeEqualToString('stepUp("06:00", 86400, null, null)', '00:00'); | 156 | 
| 164 shouldBeEqualToString('stepDown("06:00", 86400, null, null)', '00:00'); | 157 // Hours, 0-23 | 
| 165 shouldBeEqualToString('stepUp("06:00", 36000, null, null)', '07:00'); | 158 test(() => { | 
| 166 shouldBeEqualToString('stepDown("06:00", 36000, null, null)', '05:00'); | 159   assert_exists(window, 'internals'); | 
| 167 shouldBeEqualToString('stepUp("06:00", 7200, "01:00", null)', '07:00'); | 160   assert_exists(window, 'eventSender'); | 
| 168 shouldBeEqualToString('stepDown("06:00", 7200, "01:00", null)', '05:00'); | 161   setDateTimeFormat('HH:mm'); | 
| 169 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowUp"])', 
     '00:00'); | 162 | 
| 170 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '00:00'); | 163   assert_input_value_after_up('07:00', 1, '08:00'); | 
| 171 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowDown"])'
     , '22:00'); | 164   assert_input_value_after_down('07:00', 1, '06:00'); | 
| 172 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowUp"])
     ', '01:00'); | 165   assert_input_value_after_up('23:00', 1, '00:00'); | 
| 173 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowDown"
     ])', '23:00'); | 166   assert_input_value_after_down('00:00', 1, '23:00'); | 
| 174 shouldBeEqualToString('stepUp("17:00", 1, "17:00", "20:00")', '18:00'); | 167   assert_input_value_after_up('06:00', 7200, '08:00'); | 
| 175 shouldBeEqualToString('stepDown("17:00", 1, "17:00", "20:00")', '20:00'); | 168   assert_input_value_after_down('06:00', 7200, '04:00'); | 
| 176 shouldBeEqualToString('stepUp("17:00", 1, "15:00", "17:00")', '15:00'); | 169   assert_input_value_after_up('22:00', 7200, '00:00'); | 
| 177 shouldBeEqualToString('stepDown("17:00", 1, "15:00", "17:00")', '16:00'); | 170   assert_input_value_after_down('00:00', 7200, '22:00'); | 
| 178 shouldBeEqualToString('stepUp("15:00", 1, "17:00", "20:00")', '17:00'); | 171   assert_input_value_after_up('07:00', 7200, '08:00'); | 
| 179 shouldBeEqualToString('stepDown("15:00", 1, "17:00", "20:00")', '20:00'); | 172   assert_input_value_after_down('07:00', 7200, '06:00'); | 
| 180 shouldBeEqualToString('stepUp("15:00", 1, "13:00", "13:00")', '13:00'); | 173   assert_input_value_after_up('06:00', 3601, '07:00'); | 
| 181 shouldBeEqualToString('stepDown("15:00", 1, "13:00", "13:00")', '13:00'); | 174   assert_input_value_after_down('06:00', 3601, '05:00'); | 
| 182 shouldBeEqualToString('stepUp("00:00", 1, "00:00", "03:00")', '01:00'); | 175   assert_input_value_after_up('06:00', 0, '07:00'); | 
| 183 shouldBeEqualToString('stepDown("00:00", 1, "00:00", "03:00")', '03:00'); | 176   assert_input_value_after_down('06:00', 0, '05:00'); | 
| 184 shouldBeEqualToString('stepUp("03:00", 1, "00:00", "03:00")', '00:00'); | 177   assert_input_value_after_up('06:00', 86400, '00:00'); | 
| 185 shouldBeEqualToString('stepDown("03:00", 1, "00:00", "03:00")', '02:00'); | 178   assert_input_value_after_down('06:00', 86400, '00:00'); | 
| 186 shouldBeEqualToString('stepUp("12:00", 1, "10:00", "12:00")', '10:00'); | 179   assert_input_value_after_up('06:00', 36000, '07:00'); | 
| 187 shouldBeEqualToString('stepDown("12:00", 1, "10:00", "12:00")', '11:00'); | 180   assert_input_value_after_down('06:00', 36000, '05:00'); | 
| 188 shouldBeEqualToString('stepUp("00:00", 1, "00:00", "03:00")', '01:00'); | 181   assert_input_value_with_limits_after_up('06:00', 7200, '01:00', null, '07:00')
     ; | 
| 189 shouldBeEqualToString('stepDown("00:00", 1, "00:00", "03:00")', '03:00'); | 182   assert_input_value_with_limits_after_down('06:00', 7200, '01:00', null, '05:00
     '); | 
| 190 shouldBeEqualToString('stepUp("15:00", 1, "10:00", "15:00")', '10:00'); | 183   assert_input_value_with_limits_after_deleteup('06:00', 7200, null, null, '00:0
     0', '00:00'); | 
| 191 shouldBeEqualToString('stepDown("10:00", 1, "10:00", "15:00")', '15:00'); | 184   assert_input_value_with_limits_after_deletedown('06:00', 7200, null, null, '22
     :00'); | 
| 192 shouldBeEqualToString('stepUp("20:00", 7200, "17:00", "20:00")', '17:00'); | 185   assert_input_value_with_limits_after_deleteup('06:00', 7200, '01:00', null, '0
     1:00'); | 
| 193 shouldBeEqualToString('stepDown("20:00", 7200, "17:00", "20:00")', '19:00'); | 186   assert_input_value_with_limits_after_deletedown('06:00', 7200, '01:00', null, 
     '23:00'); | 
| 194 | 187   assert_input_value_with_limits_after_up('17:00', 1, '17:00', '20:00', '18:00')
     ; | 
| 195 debug('Hours, 1-24'); | 188   assert_input_value_with_limits_after_down('17:00', 1, '17:00', '20:00', '20:00
     '); | 
| 196 setDateTimeFormat('kk:mm'); | 189   assert_input_value_with_limits_after_up('17:00', 1, '15:00', '17:00', '15:00')
     ; | 
| 197 shouldBeEqualToString('stepUp("11:00", 1, null, null)', '12:00'); | 190   assert_input_value_with_limits_after_down('17:00', 1, '15:00', '17:00', '16:00
     '); | 
| 198 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '12:00'); | 191   assert_input_value_with_limits_after_up('15:00', 1, '17:00', '20:00', '17:00')
     ; | 
| 199 shouldBeEqualToString('stepDown("00:00", 1, null, null)', '23:00'); | 192   assert_input_value_with_limits_after_down('15:00', 1, '17:00', '20:00', '20:00
     '); | 
| 200 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '23:00'); | 193   assert_input_value_with_limits_after_up('15:00', 1, '13:00', '13:00', '13:00')
     ; | 
| 201 shouldBeEqualToString('stepUp("23:00", 1, null, null)', '00:00'); | 194   assert_input_value_with_limits_after_down('15:00', 1, '13:00', '13:00', '13:00
     '); | 
| 202 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '24:00'); | 195   assert_input_value_with_limits_after_up('00:00', 1, '00:00', '03:00', '01:00')
     ; | 
| 203 shouldBeEqualToString('stepDown("12:00", 1, null, null)', '11:00'); | 196   assert_input_value_with_limits_after_down('00:00', 1, '00:00', '03:00', '03:00
     '); | 
| 204 shouldBeEqualToString('getUserAgentShadowTextContent(input)', '11:00'); | 197   assert_input_value_with_limits_after_up('03:00', 1, '00:00', '03:00', '00:00')
     ; | 
| 205 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowUp"])', 
     '02:00'); | 198   assert_input_value_with_limits_after_down('03:00', 1, '00:00', '03:00', '02:00
     '); | 
| 206 shouldBeEqualToString('test("06:00", 7200, null, null, ["Delete", "ArrowDown"])'
     , '00:00'); | 199   assert_input_value_with_limits_after_up('12:00', 1, '10:00', '12:00', '10:00')
     ; | 
| 207 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowUp"])
     ', '01:00'); | 200   assert_input_value_with_limits_after_down('12:00', 1, '10:00', '12:00', '11:00
     '); | 
| 208 shouldBeEqualToString('test("06:00", 7200, "01:00", null, ["Delete", "ArrowDown"
     ])', '23:00'); | 201   assert_input_value_with_limits_after_up('00:00', 1, '00:00', '03:00', '01:00')
     ; | 
| 209 shouldBeEqualToString('stepUp("17:00", 1, "17:00", "20:00")', '18:00'); | 202   assert_input_value_with_limits_after_down('00:00', 1, '00:00', '03:00', '03:00
     '); | 
| 210 shouldBeEqualToString('stepDown("17:00", 1, "17:00", "20:00")', '20:00'); | 203   assert_input_value_with_limits_after_up('15:00', 1, '10:00', '15:00', '10:00')
     ; | 
| 211 shouldBeEqualToString('stepUp("17:00", 1, "15:00", "17:00")', '15:00'); | 204   assert_input_value_with_limits_after_down('10:00', 1, '10:00', '15:00', '15:00
     '); | 
| 212 shouldBeEqualToString('stepDown("17:00", 1, "15:00", "17:00")', '16:00'); | 205   assert_input_value_with_limits_after_up('20:00', 7200, '17:00', '20:00', '17:0
     0'); | 
| 213 shouldBeEqualToString('stepUp("15:00", 1, "17:00", "20:00")', '17:00'); | 206   assert_input_value_with_limits_after_down('20:00', 7200, '17:00', '20:00', '19
     :00'); | 
| 214 shouldBeEqualToString('stepDown("15:00", 1, "17:00", "20:00")', '20:00'); | 207 }, 'Hours, 0-23'); | 
| 215 shouldBeEqualToString('stepUp("15:00", 1, "13:00", "13:00")', '13:00'); | 208 | 
| 216 shouldBeEqualToString('stepDown("15:00", 1, "13:00", "13:00")', '13:00'); | 209 // Hours, 1-24 | 
| 217 shouldBeEqualToString('stepUp("00:00", 1, "00:00", "03:00")', '01:00'); | 210 test(() => { | 
| 218 shouldBeEqualToString('stepDown("00:00", 1, "00:00", "03:00")', '23:00'); | 211   assert_exists(window, 'internals'); | 
| 219 shouldBeEqualToString('stepUp("03:00", 1, "00:00", "03:00")', '04:00'); | 212   assert_exists(window, 'eventSender'); | 
| 220 shouldBeEqualToString('stepDown("03:00", 1, "00:00", "03:00")', '02:00'); | 213   setDateTimeFormat('kk:mm'); | 
| 221 shouldBeEqualToString('stepUp("12:00", 1, "10:00", "12:00")', '10:00'); | 214 | 
| 222 shouldBeEqualToString('stepDown("12:00", 1, "10:00", "12:00")', '11:00'); | 215   assert_input_value_after_up('11:00', 1, '12:00', '12:00'); | 
| 223 shouldBeEqualToString('stepUp("00:00", 1, "00:00", "03:00")', '01:00'); | 216   assert_input_value_after_down('00:00', 1, '23:00', '23:00'); | 
| 224 shouldBeEqualToString('stepDown("00:00", 1, "00:00", "03:00")', '23:00'); | 217   assert_input_value_after_up('23:00', 1, '00:00', '24:00'); | 
| 225 shouldBeEqualToString('stepUp("15:00", 1, "10:00", "15:00")', '10:00'); | 218   assert_input_value_after_down('12:00', 1, '11:00', '11:00'); | 
| 226 shouldBeEqualToString('stepDown("10:00", 1, "10:00", "15:00")', '15:00'); | 219   assert_input_value_with_limits_after_deleteup('06:00', 7200, null, null, '02:0
     0'); | 
| 227 shouldBeEqualToString('stepUp("17:00", 7200, "17:00", "20:00")', '19:00'); | 220   assert_input_value_with_limits_after_deletedown('06:00', 7200, null, null, '00
     :00'); | 
| 228 shouldBeEqualToString('stepDown("17:00", 7200, "17:00", "20:00")', '19:00'); | 221   assert_input_value_with_limits_after_deleteup('06:00', 7200, '01:00', null, '0
     1:00'); | 
| 229 shouldBeEqualToString('stepUp("17:00", 7200, "17:00", "18:00")', '17:00'); | 222   assert_input_value_with_limits_after_deletedown('06:00', 7200, '01:00', null, 
     '23:00'); | 
| 230 shouldBeEqualToString('stepDown("17:00", 7200, "17:00", "18:00")', '17:00'); | 223   assert_input_value_with_limits_after_up('17:00', 1, '17:00', '20:00', '18:00')
     ; | 
| 231 | 224   assert_input_value_with_limits_after_down('17:00', 1, '17:00', '20:00', '20:00
     '); | 
| 232 setDateTimeFormat(''); | 225   assert_input_value_with_limits_after_up('17:00', 1, '15:00', '17:00', '15:00')
     ; | 
| 233 debug(''); | 226   assert_input_value_with_limits_after_down('17:00', 1, '15:00', '17:00', '16:00
     '); | 
| 234 document.body.removeChild(input); | 227   assert_input_value_with_limits_after_up('15:00', 1, '17:00', '20:00', '17:00')
     ; | 
|  | 228   assert_input_value_with_limits_after_down('15:00', 1, '17:00', '20:00', '20:00
     '); | 
|  | 229   assert_input_value_with_limits_after_up('15:00', 1, '13:00', '13:00', '13:00')
     ; | 
|  | 230   assert_input_value_with_limits_after_down('15:00', 1, '13:00', '13:00', '13:00
     '); | 
|  | 231   assert_input_value_with_limits_after_up('00:00', 1, '00:00', '03:00', '01:00')
     ; | 
|  | 232   assert_input_value_with_limits_after_down('00:00', 1, '00:00', '03:00', '23:00
     '); | 
|  | 233   assert_input_value_with_limits_after_up('03:00', 1, '00:00', '03:00', '04:00')
     ; | 
|  | 234   assert_input_value_with_limits_after_down('03:00', 1, '00:00', '03:00', '02:00
     '); | 
|  | 235   assert_input_value_with_limits_after_up('12:00', 1, '10:00', '12:00', '10:00')
     ; | 
|  | 236   assert_input_value_with_limits_after_down('12:00', 1, '10:00', '12:00', '11:00
     '); | 
|  | 237   assert_input_value_with_limits_after_up('00:00', 1, '00:00', '03:00', '01:00')
     ; | 
|  | 238   assert_input_value_with_limits_after_down('00:00', 1, '00:00', '03:00', '23:00
     '); | 
|  | 239   assert_input_value_with_limits_after_up('15:00', 1, '10:00', '15:00', '10:00')
     ; | 
|  | 240   assert_input_value_with_limits_after_down('10:00', 1, '10:00', '15:00', '15:00
     '); | 
|  | 241   assert_input_value_with_limits_after_up('17:00', 7200, '17:00', '20:00', '19:0
     0'); | 
|  | 242   assert_input_value_with_limits_after_down('17:00', 7200, '17:00', '20:00', '19
     :00'); | 
|  | 243   assert_input_value_with_limits_after_up('17:00', 7200, '17:00', '18:00', '17:0
     0'); | 
|  | 244   assert_input_value_with_limits_after_down('17:00', 7200, '17:00', '18:00', '17
     :00'); | 
|  | 245 }, 'Hours, 1-24'); | 
| 235 </script> | 246 </script> | 
| 236 </body> | 247 </body> | 
| 237 </html> | 248 </html> | 
| OLD | NEW | 
|---|