| <!DOCTYPE html> |
| <body> |
| <script src="../../js/resources/js-test-pre.js"></script> |
| <script> |
| function createTimeInput(min, max, step, value) { |
| var input = document.createElement('input'); |
| input.type = 'time'; |
| input.min = min; |
| input.max = max; |
| input.step = step; |
| if (value) |
| input.value = value; |
| return input; |
| } |
| |
| // FIXME: Rename this function and the test file. |
| function isReadOnlyField(input, pseudo) { |
| var node = internals.youngestShadowRoot(input).querySelector('*[pseudo="' + pseudo + '"]'); |
| if (!node) |
| testFailed('Requested node is missing.'); |
| return node && node.hasAttribute('disabled'); |
| } |
| |
| var pseudoMillisecond = '-webkit-datetime-edit-millisecond-field'; |
| var pseudoSecond = '-webkit-datetime-edit-second-field'; |
| var pseudoMinute = '-webkit-datetime-edit-minute-field'; |
| var pseudoHour = '-webkit-datetime-edit-hour-field'; |
| var pseudoAMPM = '-webkit-datetime-edit-ampm-field'; |
| var step1ms = '0.001'; |
| var step1sec = '1'; |
| var step1min = '60'; |
| var step1hour = '3600'; |
| var step1day = '86400'; |
| |
| description('Sub-fields in input[type=time] should be read-only in some cases. This requires window.internals.'); |
| debug('createTimeInput argument order: min, max, step, value'); |
| debug(''); |
| |
| debug('Milliseconds field:'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("00:00:00.500", null, step1sec, ""), pseudoMillisecond)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("00:00:00.500", null, step1sec, "00:00:00.500"), pseudoMillisecond)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00:00.500", null, step1sec, "00:00:00.600"), pseudoMillisecond)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00:00.000", null, step1sec, "00:00:00.600"), pseudoMillisecond)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("00:00:00.500", "00:00:00.500", step1ms, ""), pseudoMillisecond)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00:00.500", "00:00:00.501", step1ms, ""), pseudoMillisecond)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00:00.500", "00:00:00.500", step1ms, "00:00:00.100"), pseudoMillisecond)'); |
| |
| debug('Seconds field:'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("00:00:30", null, step1min, ""), pseudoSecond)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("00:00:30", null, step1min, "00:00:30"), pseudoSecond)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("00:00:30.500", null, step1min, "00:00:30.600"), pseudoSecond)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00:30", null, step1min, "00:00:35"), pseudoSecond)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00:00", null, step1min, "00:00:35"), pseudoSecond)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("00:00:30", "00:00:30", step1ms, ""), pseudoSecond)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00:30", "00:00:31", step1ms, ""), pseudoSecond)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00:30", "00:00:30", step1ms, "00:00:29"), pseudoSecond)'); |
| |
| debug('Minutes field:'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("00:30", null, step1hour, ""), pseudoMinute)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("00:30", null, step1hour, "00:30"), pseudoMinute)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:30", null, step1hour, "00:35"), pseudoMinute)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00", null, step1hour, "00:35"), pseudoMinute)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("00:00:00", "00:00:30", step1sec, ""), pseudoMinute)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00:00", "00:01:30", step1sec, ""), pseudoMinute)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00:00", "00:00:30", step1sec, "00:01:00"), pseudoMinute)'); |
| |
| debug('Hour field:'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("11:00", null, step1day, ""), pseudoHour)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("11:00", null, step1day, ""), pseudoAMPM)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("11:00", null, step1day, ""), pseudoMinute)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("11:30", null, step1day, "11:30"), pseudoHour)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("11:30", null, step1day, "11:30"), pseudoAMPM)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("11:30", null, step1day, "11:30"), pseudoMinute)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("11:30", null, step1day, "12:30"), pseudoHour)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("11:30", null, step1day, "12:30"), pseudoAMPM)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("11:30", null, step1day, "12:30"), pseudoMinute)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00", null, step1day, "12:30"), pseudoHour)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00", null, step1day, "12:30"), pseudoAMPM)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00", null, step1day, "12:30"), pseudoMinute)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("00:00", "00:30", step1min, ""), pseudoHour)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("00:00", "00:30", step1min, ""), pseudoAMPM)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00", "00:30", step1min, ""), pseudoMinute)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00", "00:00", step1hour, ""), pseudoHour)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("00:00", "00:00", step1hour, ""), pseudoAMPM)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("00:00", "00:00", step1hour, ""), pseudoMinute)'); |
| |
| debug('AM/PM field:'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00", null, step1min, ""), pseudoAMPM)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("23:00", null, step1min, ""), pseudoAMPM)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput(null, "01:00", step1min, ""), pseudoAMPM)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput(null, "23:00", step1min, ""), pseudoAMPM)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("00:00", "11:59", step1min, ""), pseudoAMPM)'); |
| shouldBeFalse('isReadOnlyField(createTimeInput("00:00", "12:00", step1min, ""), pseudoAMPM)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("12:00", "12:00", step1min, ""), pseudoAMPM)'); |
| shouldBeTrue('isReadOnlyField(createTimeInput("12:00", "23:59", step1min, ""), pseudoAMPM)'); |
| |
| |
| </script> |
| <script src="../../js/resources/js-test-post.js"></script> |
| </body> |
| |