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

<div id="button1" role="button" aria-pressed="true">Foo</div>
<div id="button2" role="button" aria-pressed="false">Bar</div>
<div id="button-without-initial-press" role="button">Baz</div>

<script>
    var testOutput = "This test ensures a role=button element with aria-pressed has the right attribute values, even after dynamic page changes.\n\n";

    function verify(id) {
        const element = accessibilityController.accessibleElementById(id);
        testOutput += `#${id}: ${element.role}\n`;
        testOutput += `#${id}: ${element.subrole}\n`;
        testOutput += `#${id}: ${element.stringValue}\n`;
        testOutput += `#${id}: AXARIAPressedIsPresent: ${element.boolAttributeValue("AXARIAPressedIsPresent")}\n\n`;
    }

    if (window.accessibilityController) {
        window.jsTestIsAsync = true;
        verify("button1");
        verify("button2");
        verify("button-without-initial-press");

        testOutput += `Toggling aria-pressed state on both buttons.\n\n`;
        document.getElementById("button1").ariaPressed = "false";
        document.getElementById("button2").ariaPressed = "true";
        document.getElementById("button-without-initial-press").ariaPressed = "true";
        setTimeout(async () => {
            await waitFor(() => {
                return accessibilityController.accessibleElementById("button-without-initial-press").boolAttributeValue("AXARIAPressedIsPresent");
            });

            verify("button1");
            verify("button2");
            verify("button-without-initial-press");

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