commit 37c1b1d2b92135f2e725927c5e2519a01f809cb9
parent 10244b682ea3427081af0e14f62cd9a94d1b95d5
Author: Joe Cardoso <jow13_122@yahoo.com>
Date: Mon, 1 Dec 2025 16:02:55 +0000
Bug 1730474 - Ensure native HTML table cells are not selectable by default. r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D272807
Diffstat:
5 files changed, 35 insertions(+), 14 deletions(-)
diff --git a/accessible/html/HTMLTableAccessible.cpp b/accessible/html/HTMLTableAccessible.cpp
@@ -81,10 +81,6 @@ uint64_t HTMLTableCellAccessible::NativeState() const {
return state;
}
-uint64_t HTMLTableCellAccessible::NativeInteractiveState() const {
- return HyperTextAccessible::NativeInteractiveState() | states::SELECTABLE;
-}
-
already_AddRefed<AccAttributes> HTMLTableCellAccessible::NativeAttributes() {
RefPtr<AccAttributes> attributes = HyperTextAccessible::NativeAttributes();
diff --git a/accessible/html/HTMLTableAccessible.h b/accessible/html/HTMLTableAccessible.h
@@ -32,7 +32,6 @@ class HTMLTableCellAccessible : public HyperTextAccessible {
// LocalAccessible
virtual a11y::role NativeRole() const override;
virtual uint64_t NativeState() const override;
- virtual uint64_t NativeInteractiveState() const override;
virtual already_AddRefed<AccAttributes> NativeAttributes() override;
protected:
diff --git a/accessible/tests/browser/states/browser.toml b/accessible/tests/browser/states/browser.toml
@@ -22,6 +22,9 @@ https_first_disabled = true
["browser_test_selection.js"]
https_first_disabled = true
+["browser_test_table_selectable.js"]
+https_first_disabled = true
+
["browser_test_visibility.js"]
https_first_disabled = true
diff --git a/accessible/tests/browser/states/browser_test_table_selectable.js b/accessible/tests/browser/states/browser_test_table_selectable.js
@@ -0,0 +1,23 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+/**
+ * Test that native HTML table cells are not selectable by default.
+ */
+addAccessibleTask(
+ `
+ <table id="native_table">
+ <tr>
+ <td id="native_cell">Native cell</td>
+ </tr>
+ </table>
+ `,
+ async function (browser, docAcc) {
+ const nativeCell = findAccessibleChildByID(docAcc, "native_cell");
+ testStates(nativeCell, 0, 0, STATE_SELECTABLE, 0);
+ },
+ { topLevel: true, iframe: true, remoteIframe: true, chrome: true }
+);
diff --git a/accessible/tests/mochitest/table/test_sels_table.html b/accessible/tests/mochitest/table/test_sels_table.html
@@ -25,10 +25,10 @@
var cellsArray =
[
- [false, false, false, kColSpanned, false, false, false, false],
- [false, false, false, false, false, false, false, kRowSpanned],
- [false, false, kColSpanned, false, false, false, false, kRowSpanned],
- [false, kRowSpanned, kSpanned, false, false, kRowSpanned, false, kRowSpanned],
+ [undefined, undefined, undefined, kColSpanned, undefined, undefined, undefined, undefined],
+ [undefined, undefined, undefined, undefined, undefined, undefined, undefined, kRowSpanned],
+ [undefined, undefined, kColSpanned, undefined, undefined, undefined, undefined, kRowSpanned],
+ [undefined, kRowSpanned, kSpanned, undefined, undefined, kRowSpanned, undefined, kRowSpanned],
];
testTableSelection("table", cellsArray);
@@ -41,11 +41,11 @@
cellsArray =
[
- [false, false, false, -1, -1],
- [false, false, false, -1, -1],
- [false, false, kColSpanned, kColSpanned, -1],
- [kRowSpanned, false, false, -1, -1],
- [kRowSpanned, false, kRowSpanned, false, false],
+ [undefined, undefined, undefined, -1, -1],
+ [undefined, undefined, undefined, -1, -1],
+ [undefined, undefined, kColSpanned, kColSpanned, -1],
+ [kRowSpanned, undefined, undefined, -1, -1],
+ [kRowSpanned, undefined, kRowSpanned, undefined, undefined],
];
testTableSelection("tableinsane", cellsArray);