| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> | |
| <html> | |
| <head> | |
| <script src="../resources/accessibility-helper.js"></script> | |
| <script src="../resources/js-test.js"></script> | |
| </head> | |
| <body> | |
| <label for="lowercase">Only use lowercase here</label> | |
| <input id="pattern-input" name="lowercase" type="text" value="foo" pattern="[a-z]+"> | |
| <label for="age">Age: (50+ only)</label> | |
| <input id="number-input" name="age" type="number" value="50" min="50"> | |
| <script> | |
| var output = "This test ensures we consider inputs to be invalid when they are rendered as such.\n\n"; | |
| function expectInvalid(id, expectedValue) { | |
| output += expect(`accessibilityController.accessibleElementById("${id}").stringAttributeValue("AXInvalid")`, `"${expectedValue}"`); | |
| } | |
| if (window.accessibilityController) { | |
| window.jsTestIsAsync = true; | |
| expectInvalid("pattern-input", false); | |
| expectInvalid("number-input", false); | |
| output += "\nMaking inputs invalid.\n"; | |
| var gotPatternInputNotification = false; | |
| var gotNumberInputNotification = false; | |
| accessibilityController.addNotificationListener((axElement, notification) => { | |
| if (notification !== "AXInvalidStatusChanged") | |
| return; | |
| if (axElement.domIdentifier === "pattern-input") | |
| gotPatternInputNotification = true; | |
| else if (axElement.domIdentifier === "number-input") | |
| gotNumberInputNotification = true; | |
| if (gotNumberInputNotification && gotPatternInputNotification) { | |
| accessibilityController.removeNotificationListener(); | |
| expectInvalid("pattern-input", true); | |
| expectInvalid("number-input", true); | |
| debug(output); | |
| finishJSTest(); | |
| } | |
| }); | |
| document.getElementById("pattern-input").value = "ABC"; | |
| document.getElementById("number-input").value = 5; | |
| } | |
| </script> | |
| </body> | |
| </html> | |