AX: Long narrow tables should not be made in data tables unnecessarily
https://bugs.webkit.org/show_bug.cgi?id=221061
<rdar://problem/73681149>
Reviewed by Zalan Bujtas.
Source/WebCore:
Some web authors use long columns/rows of cells for layout purposes. We shouldn't
automatically turn these into data tables based on row count only.
Instead let's ensure there are at least two rows/cols of content before automatically
turning into a data table.
Test: accessibility/narrow-tables-ignored.html
* accessibility/AccessibilityTable.cpp:
(WebCore::AccessibilityTable::isDataTable const):
LayoutTests:
* accessibility/narrow-tables-ignored-expected.txt: Added.
* accessibility/narrow-tables-ignored.html: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@272024 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index d513bfd..6613727 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,14 @@
+2021-01-28 Chris Fleizach <cfleizach@apple.com>
+
+ AX: Long narrow tables should not be made in data tables unnecessarily
+ https://bugs.webkit.org/show_bug.cgi?id=221061
+ <rdar://problem/73681149>
+
+ Reviewed by Zalan Bujtas.
+
+ * accessibility/narrow-tables-ignored-expected.txt: Added.
+ * accessibility/narrow-tables-ignored.html: Added.
+
2021-01-28 Ada Chan <ada.chan@apple.com>
REGRESSION (r271988): XRSession.end() promise is not resolved if PlatformXR::Device::supportsSessionShutdownNotification() returns false
diff --git a/LayoutTests/accessibility/narrow-tables-ignored-expected.txt b/LayoutTests/accessibility/narrow-tables-ignored-expected.txt
new file mode 100644
index 0000000..0c7bddf
--- /dev/null
+++ b/LayoutTests/accessibility/narrow-tables-ignored-expected.txt
@@ -0,0 +1,13 @@
+This tests that very narrow or very wide tables are ignored.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+table1: AXRole: AXGroup
+table2: AXRole: AXGroup
+table3: AXRole: AXTable
+table4: AXRole: AXTable
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/accessibility/narrow-tables-ignored.html b/LayoutTests/accessibility/narrow-tables-ignored.html
new file mode 100644
index 0000000..a2ea021
--- /dev/null
+++ b/LayoutTests/accessibility/narrow-tables-ignored.html
@@ -0,0 +1,105 @@
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body id="body">
+
+<div id="content">
+
+<!-- Ignore table -- not enough rows -->
+<table id="table1" tabindex="0">
+<tr><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td>
+<td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td></tr>
+</table>
+
+<!-- Ignore table -- not enough columns -->
+<table id="table2" tabindex="0">
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+<tr><td>td</td></tr>
+</table>
+
+<!-- Show table - enough rows -->
+<table id="table3" tabindex="0">
+<tr><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td>
+<td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td>
+<td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td><td>td</td></tr>
+</table>
+
+<!-- Show table -- enough cols -->
+<table id="table4" tabindex="0">
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+<tr><td>td</td><td>td</td></tr>
+</table>
+
+</div>
+
+<p id="description"></p>
+<div id="console"></div>
+<script>
+ description("This tests that very narrow or very wide tables are ignored.");
+ if (window.accessibilityController) {
+
+ // Ignore tables because they're too narrow.
+ var table1 = accessibilityController.accessibleElementById("table1");
+ debug("table1: " + table1.role);
+
+ var table2 = accessibilityController.accessibleElementById("table2");
+ debug("table2: " + table2.role);
+
+ // Tables not ignored, because they are wide enough.
+ var table3 = accessibilityController.accessibleElementById("table3");
+ debug("table3: " + table3.role);
+
+ var table4 = accessibilityController.accessibleElementById("table4");
+ debug("table4: " + table4.role);
+ document.getElementById("content").style.display = "none";
+ }
+</script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>