| <!DOCTYPE html> |
| <body> |
| <script src="../../../resources/js-test.js"></script> |
| <script> |
| function createDateInput(min, max, value) { |
| var input = document.createElement('input'); |
| input.type = 'date'; |
| if (min) |
| input.min = min; |
| if (max) |
| input.max = max; |
| if (value) |
| input.value = value; |
| return input; |
| } |
| |
| // FIXME: Rename this function and the test file. |
| function isReadOnlyField(input, pseudo) { |
| var node = internals.shadowRoot(input).querySelector('*[pseudo="' + pseudo + '"]'); |
| if (!node) |
| testFailed('Requested node is missing.'); |
| return node && node.hasAttribute('disabled'); |
| } |
| |
| var pseudoDay = '-webkit-datetime-edit-day-field'; |
| var pseudoMonth = '-webkit-datetime-edit-month-field'; |
| var pseudoYear = '-webkit-datetime-edit-year-field'; |
| |
| description('Sub-fields in input[type=date] should be read-only in some cases. This requires window.internals.'); |
| debug('createDateInput argument order: min, max, value'); |
| debug(''); |
| |
| debug('Year field:'); |
| shouldBeFalse('isReadOnlyField(createDateInput("", "", ""), pseudoYear)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("2012-12-17", "", ""), pseudoYear)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("", "2012-12-17", ""), pseudoYear)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("", "", "2012-12-17"), pseudoYear)'); |
| shouldBeTrue('isReadOnlyField(createDateInput("2012-01-01", "2012-12-31", ""), pseudoYear)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("2012-01-01", "2013-12-31", ""), pseudoYear)'); |
| shouldBeTrue('isReadOnlyField(createDateInput("2012-01-01", "2012-12-31", "2012-05-30"), pseudoYear)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("2012-01-01", "2012-12-31", "2013-01-01"), pseudoYear)'); |
| |
| debug('Month field:'); |
| shouldBeFalse('isReadOnlyField(createDateInput("", "", ""), pseudoMonth)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("2012-12-17", "", ""), pseudoMonth)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("", "2012-12-17", ""), pseudoMonth)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("", "", "2012-12-17"), pseudoMonth)'); |
| shouldBeTrue('isReadOnlyField(createDateInput("2012-12-01", "2012-12-31", ""), pseudoMonth)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("2012-11-01", "2013-12-31", ""), pseudoMonth)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("2012-12-01", "2013-12-31", ""), pseudoMonth)'); |
| shouldBeTrue('isReadOnlyField(createDateInput("2012-12-01", "2012-12-31", "2012-12-15"), pseudoMonth)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("2012-12-01", "2012-12-31", "2012-11-30"), pseudoMonth)'); |
| |
| debug('Day field:'); |
| debug('We should not make all the fields readonly by min/max, so day field is always editable.'); |
| shouldBeFalse('isReadOnlyField(createDateInput("", "", ""), pseudoDay)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("2012-12-17", "", ""), pseudoDay)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("", "2012-12-17", ""), pseudoDay)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("", "", "2012-12-17"), pseudoDay)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("2012-12-17", "2012-12-17", ""), pseudoDay)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("2012-12-17", "2013-12-18", ""), pseudoDay)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("2012-11-17", "2012-12-17", ""), pseudoDay)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("2012-12-17", "2013-12-17", ""), pseudoDay)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("2012-12-17", "2012-12-17", "2012-12-17"), pseudoDay)'); |
| shouldBeFalse('isReadOnlyField(createDateInput("2012-12-17", "2012-12-17", "2012-12-18"), pseudoDay)'); |
| |
| </script> |
| </body> |
| |