blob: 790eebe56bee24a6564a499583a426eba8ab745e [file] [log] [blame] [edit]
<!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>