<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../resources/js-test.js"></script>
<script src="../resources/accessibility-helper.js"></script>
</head>
<body>

<button id="button">Click me</button>

<select multiple id="select">
    <option id="option1">Option 1</option>
    <option>Option 2</option>
    <option>Option 3</option>
</select>

<script>
    description("This test ensures that dynamically changing elements disabled and aria-disabled attributes properly updates their isEnabled property.");

    if (window.accessibilityController) {
        window.jsTestIsAsync = true;

        var axOption = accessibilityController.accessibleElementById("option1");
        var domOption = document.getElementById("option1");
        var axButton = accessibilityController.accessibleElementById("button");
        var domButton = document.getElementById("button");
        debug("Verifying initial element enabled state.");
        shouldBe("axButton.isEnabled", "true");
        shouldBe("axOption.isEnabled", "true");

        setTimeout(async function() {
            evalAndLog("domButton.ariaDisabled = true");
            await expectAsyncExpression("axButton.isEnabled", "false");

            evalAndLog("domButton.ariaDisabled = false");
            await expectAsyncExpression("axButton.isEnabled", "true");

            evalAndLog("domButton.disabled = true");
            await expectAsyncExpression("axButton.isEnabled", "false");

            evalAndLog("domButton.disabled = false");
            await expectAsyncExpression("axButton.isEnabled", "true");

            evalAndLog("domOption.ariaDisabled = true");
            await expectAsyncExpression("axOption.isEnabled", "false");

            evalAndLog("domOption.ariaDisabled = false");
            await expectAsyncExpression("axOption.isEnabled", "true");

            evalAndLog("domOption.disabled = true");
            await expectAsyncExpression("axOption.isEnabled", "false");

            evalAndLog("domOption.disabled = false");
            await expectAsyncExpression("axOption.isEnabled", "true");

            finishJSTest();
        }, 0);
    }
</script>
</body>
</html>

