<!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>

<div id="content">
    <div id="empty-group-with-title" role="group" title="Group title"></div>

    <div id="empty-div-with-label" aria-label="Div label"></div>

    <div id="empty-group-with-title-and-br" role="group" title="Group title">
        <!-- BR tags are ignored, so include one here to ensure we skip ignored content. -->
        <br />
    </div>

    <div id="group-with-direct-text-descendant" role="group" aria-label="Group label">
        Child text
    </div>

    <div id="group-with-non-empty-div" role="group" title="Group title">
        <div>
            Group title
        </div>
    </div>

    <div id="group-with-heading" role="group" aria-label="Group label">
        <h1>
            <div>Hello world</div>
        </h1>
    </div>

    <div id="group-with-contenteditable" role="group" aria-label="Group label">
        <div contenteditable="true"></div>
    </div>

    <div id="group-with-empty-table" role="group" aria-label="Group label">
        <table>
            <thead>
            </thead>
            <tbody>
            </tbody>
        </table>
    </div>

    <div id="group-with-nested-content" role="group" aria-label="Group label">
        <!-- BR tags are ignored, so include one here to ensure we skip ignored content. -->
        <br />
        <div>
            <div>
                Text
            </div>
        </div>
    </div>

    <div id="group-with-image" role="group" aria-label="Group label">
        <img src="resources/cake.png" onload="runTest()">
    </div>
</div>

<script>
    description("This test ensures WebKit properly reports groups as empty (or not empty).")

    var group;
    const runTest = () => {
        if (window.accessibilityController) {
            const groupShouldBeEmpty = (id, shouldBeEmpty) => {
                group = accessibilityController.accessibleElementById(id);
                debug(`Testing element with ID: ${id}`);
                shouldBe("group.subrole", shouldBeEmpty ? "'AXSubrole: AXEmptyGroup'" : "'AXSubrole: AXApplicationGroup'");
            };

            groupShouldBeEmpty("empty-group-with-title", true);
            groupShouldBeEmpty("empty-div-with-label", true);
            groupShouldBeEmpty("empty-group-with-title-and-br", true);
            groupShouldBeEmpty("group-with-direct-text-descendant", false);
            groupShouldBeEmpty("group-with-non-empty-div", false);
            groupShouldBeEmpty("group-with-heading", false);
            groupShouldBeEmpty("group-with-contenteditable", false);
            groupShouldBeEmpty("group-with-empty-table", false);
            groupShouldBeEmpty("group-with-nested-content", false);
            groupShouldBeEmpty("group-with-image", false);

            document.getElementById("content").style.visibility = "hidden";
        }
    }
</script>
</body>
</html>

