<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../resources/accessibility-helper.js"></script>
<script src="../resources/js-test.js"></script>
<style>
table, tr, td, th {
  display: inline-block;
}
</style>
</head>
<body role="group" id="body">

<table id="table">
<caption>This is a table caption</caption>
<thead>
    <tr id="r0">
        <th id="r0c0">Author</th>
        <th id="r0c1">Title</th>
        <th id="r0c2">Year</th>
    </tr>
</thead>
<tbody>
    <tr id="r1">
        <td id="r1c0">Stephen Hawking</td>
        <td id="r1c1">A Brief History of Time</td>
        <td id="r1c2">1988</td>
    </tr>
    <tr id="r2">
        <td id="r2c0">Carl Sagan</td>
        <td id="r2c1">Cosmos</td>
        <td id="r2c2">1980</td>
    </tr>
    <tr id="r3">
        <td id="r3c0">Will Gater</td>
        <td id="r3c1">The Mysteries of the Universe</td>
        <td id="r3c2">2020</td>
    </tr>
</tbody>
</table>

<script>
var output = "This test ensures that a table with display:inline-block components is accessible.\n\n";

if (window.accessibilityController) {
    var table = accessibilityController.accessibleElementById("table");
    output += expect("table.rowCount", "4");
    output += expect("table.columnCount", "3");

    for (let row = 0; row < 4; row++) {
        for (let column = 0; column < 3; column++)
            output += expect(`table.cellForColumnAndRow(${column}, ${row}).domIdentifier`, `"r${row}c${column}"`);
    }

    output += `\nPerforming search traversal of body.\n`;
    function elementDescription(axElement) {
        if (!axElement)
            return "null";

        const role = axElement.role;
        const id = axElement.domIdentifier;
        let result = `${id ? `#${id} ` : ""}${role}`;
        if (role.includes("StaticText"))
            result += ` ${accessibilityController.platformName === "ios" ? axElement.description : axElement.stringValue}`;
        return result;
    }

    const container = accessibilityController.accessibleElementById("body");
    let searchResult = null;
    while (true) {
        searchResult = container.uiElementForSearchPredicate(searchResult, true, "AXAnyTypeSearchKey", "", false);
        if (!searchResult)
            break;
        const parentOutput = accessibilityController.platformName === "ios" ? "" : ` (parent: {${elementDescription(searchResult.parentElement())}})`;
        output += `\n{${elementDescription(searchResult)}}${parentOutput}\n`;
    }
    debug(output);
}
</script>
</body>
</html>

