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

<body id="body">

<div id="bg">
<p id="bgContent">Other page content with <a href="#">a dummy focusable element</a></p>
</div>

<div id="container">
    <div role="dialog" aria-modal="false" id="box">
        <h3 id="myDialog">Just an example.</h3>
    </div>
</div>


<script>

    description("This tests that when something is aria-modal inside an aria-hidden it is ignored.");
    window.jsTestIsAsync = true;

    async function test() {
        if (window.accessibilityController) {
            shouldBeFalse("accessibilityController.accessibleElementById('bgContent').isIgnored");

            await new Promise(requestAnimationFrame);

            document.getElementById("box").setAttribute("aria-modal", "true");

            await new Promise(requestAnimationFrame);

            backgroundContent = accessibilityController.accessibleElementById('bgContent');
            shouldBeTrue("!backgroundContent || backgroundContent.isIgnored");

            await new Promise(requestAnimationFrame);

            document.getElementById("container").setAttribute("aria-hidden", "true");

            await new Promise(requestAnimationFrame);

            shouldBeFalse("accessibilityController.accessibleElementById('bgContent').isIgnored");
            finishJSTest();
        }
    }
    test();

</script>


<script src="../resources/js-test-post.js"></script>
</body>
</html>
