<!DOCTYPE html>
<html>
<head>
<script src="../resources/accessibility-helper.js"></script>
<script src="../resources/js-test.js"></script>
</head>
<body>

<img role="presentation" src="resources/green-400x400.png">

<script>
var output = "This test ensures image overlay elements are not exposed for presentational images.\n\n";
var webArea;

var overlayData = [
    {
        topLeft: new DOMPointReadOnly(0, 0),
        topRight: new DOMPointReadOnly(1, 0),
        bottomRight: new DOMPointReadOnly(1, 1),
        bottomLeft: new DOMPointReadOnly(0, 1),
        children: [
            {
                text: "overlay text",
                topLeft: new DOMPointReadOnly(0, 0),
                topRight: new DOMPointReadOnly(1, 0),
                bottomRight: new DOMPointReadOnly(1, 1),
                bottomLeft: new DOMPointReadOnly(0, 1),
            }
        ],
    }
];

addEventListener("load", () => {
    internals.installImageOverlay(document.querySelector("img"), overlayData);

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

        webArea = accessibilityController.rootElement.childAtIndex(0);
        output += expect("webArea.childrenCount", "0");

        // Remove role="presentation" and verify overlay children become visible.
        document.querySelector("img").removeAttribute("role");

        setTimeout(async () => {
            output += await expectAsync("webArea.childrenCount > 0", "true");
            debug(output);
            finishJSTest();
        }, 0);
    }
});
</script>
</body>
</html>
