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

<div id="container" role="group">
    <p>Content before main.</p>

    <main>

    <h1>No style changes</h1>
    <div role="toolbar">
        <div>
            <button>Foo</button>
        </div>
    </div>

    <h1>display: contents; on the toolbar</h1>
    <div role="toolbar" style="display: contents;">
        <div>
            <button>Foo</button>
        </div>
    </div>

    <h1>display: contents; on the generic div</h1>
    <div role="toolbar">
        <div style="display: contents;">
            <button>Foo</button>
        </div>
    </div>

    <h1>display: contents; on the button</h1>
    <div role="toolbar">
        <div>
            <button style="display: contents;">Foo</button>
        </div>
    </div>

    </main>

    <p>Content after main.</p>
</div>

<script>
    var testOutput = "This test ensures we can traverse through basic webpages with multiple display: contents elements via search.\n";

    if (window.accessibilityController) {
        const containerElement = accessibilityController.accessibleElementById("container");

        let elementCount = 0;
        let searchResult = null;
        while (true) {
            searchResult = containerElement.uiElementForSearchPredicate(searchResult, true, "AXAnyTypeSearchKey", "", false);
            if (!searchResult)
                break;
            const role = searchResult.role;
            testOutput += `\n${role}`;
            if (role.includes("StaticText")) {
                let textContent = accessibilityController.platformName === "ios" ? searchResult.description : searchResult.stringValue;
                testOutput += `\n${textContent}`;
            }

            testOutput += "\n";
            elementCount += 1;
        }
        testOutput += `\nTraversed ${elementCount} elements.`;
        document.getElementById("container").style.visibility = "hidden";
        debug(testOutput);
    }
</script>
</body>
</html>

