<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../resources/js-test.js"></script>
<script src="../resources/accessibility-helper.js"></script>
<style>
.pseudo::after {
  content: url(resources/svg-circle.svg);
  width: 18px;
  height: 20px;
  position: absolute;
  margin-top: 6px;
  right: 6px
}

.pseudo.hidden::after {
    content: ' ';
}
</style>
</head>
<body>

<div id="content">
  <div style="float: left;">
    <span>Language</span>
    <input>
  </div>

  <div id="float" style="display: inline-block;" class="pseudo">
    <span required="" style="color: rgb(194, 0, 0);">Email</span>
    <input type="text" required="" aria-required="true" value="" onkeyup="hidePseudo();">
  </div>
</div>

<script>

    description("Make sure that we are updating the render block flow element's children correctly.");

    function hidePseudo() {
        document.getElementById("float").className += "hidden"
    }

    function showPseudo() {
        document.getElementById("float").className = "pseudo";
    }

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

        var element;
        setTimeout(async function() {
            element = accessibilityController.accessibleElementById("float");
            if (accessibilityController.platformName != "atspi")
                shouldBe("element.childrenCount", "3");
            else
                shouldBe("element.childrenCount", "2");

            eventSender.keyDown('\t');
            eventSender.keyDown('\t');

            // Asynchronously wait for and verify the result of the onkeyup hidePseudo() invocation.
            if (accessibilityController.platformName != "atspi")
                await expectAsyncExpression("element.childrenCount", "2");
            else
                await expectAsyncExpression("element.childrenCount", "1");

            showPseudo();

            // Make sure getting the attributes of its children won't cause crash.
            element.attributesOfChildren();

            document.getElementById("content").style.visibility = "hidden";

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

