/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; /* import-globals-from ../../mochitest/states.js */ loadScripts({ name: "states.js", dir: MOCHITESTS_DIR }); /** * Test invalid state and aria-invalid attribute on a checkbox. */ addAccessibleTask( `
`, async (browser, accDoc) => { // Check initial AXInvalid values are correct let box = getNativeInterface(accDoc, "box"); // XXX: bug 1967000 untilCacheOk(() => { return box.getAttributeValue("AXInvalid") == "true"; }, "Correct invalid value for box"); // Remove required attr, verify AXInvalid is updated let stateChanged = waitForEvent(EVENT_STATE_CHANGE, "box"); await SpecialPowers.spawn(browser, [], () => { content.document.getElementById("box").removeAttribute("required"); }); await stateChanged; untilCacheOk(() => { return box.getAttributeValue("AXInvalid") == "false"; }, "Correct invalid value after required attr removed"); // Remove add aria-invliad attr, verify AXInvalid is updated stateChanged = waitForEvent(EVENT_STATE_CHANGE, "box"); await SpecialPowers.spawn(browser, [], () => { content.document .getElementById("box") .setAttribute("aria-invalid", "true"); }); await stateChanged; untilCacheOk(() => { return box.getAttributeValue("AXInvalid") == "true"; }, "Correct invalid value after aria-invalid attr set to true"); } );