tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 9e381078c88d83fa3b6c3a0f8f34289df9bfc268
parent 43763751cfef4b8c71aa73ba8cec64fa74a6608c
Author: Adam Page <adam@adampage.net>
Date:   Wed, 15 Oct 2025 08:43:44 +0000

Bug 1882436 [wpt PR 44822] - Add tests for `aria-owns` and hiding techniques in assorted scenarios, a=testonly

Automatic update from web-platform-tests
Add tests for `aria-owns` and hiding techniques in assorted scenarios (#44822)

* add test cases for aria-owns and hiding techniques in assorted scenarios
* consolidate comments citing normative spec statements
* tease out subtests to eliminate interdependency

--

wpt-commits: d323202e3a0963590a2aad9138db93266b99bc10
wpt-pr: 44822

Diffstat:
Atesting/web-platform/tests/accname/aria-owns.html | 191+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 191 insertions(+), 0 deletions(-)

diff --git a/testing/web-platform/tests/accname/aria-owns.html b/testing/web-platform/tests/accname/aria-owns.html @@ -0,0 +1,191 @@ +<!doctype html> +<html> + +<head> + <meta charset="utf-8"> + <title>Accname tests for assorted combinations of aria-owns, aria-hidden, and host language hiding techniques</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/resources/testdriver.js"></script> + <script src="/resources/testdriver-vendor.js"></script> + <script src="/resources/testdriver-actions.js"></script> + <script src="/wai-aria/scripts/aria-utils.js"></script> + <style> + [aria-hidden="true"] { + outline: 3px dashed darkred; + } + + [id] { + outline: 1px dashed green; + } + </style> +</head> + +<body> + + <h1>Accname tests for assorted combinations of <code>aria-owns</code>, <code>aria-hidden</code>, and host language hiding techniques</h1> + + <!-- + These subtests verify the following normative statements added to the ARIA + spec in https://github.com/w3c/aria/pull/1839: + + 1. User agents MUST NOT resolve aria-owns when it is set on an element + that has been excluded from the accessibility tree. + + 2. User agents MUST NOT resolve aria-owns when it references an element + that is, or has a DOM ancestor that is, hidden from all users. + --> + + <p><span aria-hidden="true">Text enclosed in a dashed red outline</span> is <code>aria-hidden="true"</code>.</p> + <p><span id="foo">Bold text with a yellow background</span> is the target of another element’s <code>aria-owns</code>.</p> + + <h2>A button using aria-owns to specify its label</h2> + <button + class="ex-label" + data-testname="A button using aria-owns to specify its label" + data-expectedlabel="Play" + aria-owns="play" + > + <div aria-hidden="true"> + <span id="play">Play</span> + <span id="pause">Pause</span> + </div> + </button> + + <h2>A link using aria-owns to concatenate extra text</h2> + <a + class="ex-label" + data-testname="A link using aria-owns to concatenate extra text" + data-expectedlabel="World Wide Web Consortium (opens in a new window)" + href="https://www.w3.org/" + target="_blank" + aria-owns="new-window-warning-1" + > + World Wide Web Consortium + </a> + <div aria-hidden="true"> + <span id="new-window-warning-1"> (opens in a new window)</span> + <!-- Label concatenation works here because, due to the aria-owns reassignment, the "new window" span no longer inherits the aria-hidden status. --> + </div> + + <h2>Ignore aria-owns when on an element that is hidden from all users</h2> + <h3 + class="ex-label" + data-testname="Ignore aria-owns when on an element that is hidden from all users" + data-expectedlabel="treasure" + > + <span hidden aria-owns="treasure"> + This ninja can’t steal the... + </span> + <mark id="treasure">treasure</mark> + </h3> + + <h2>Computed name of parent heading persists when aria-owns fails to relocate its contents</h2> + <h3> + <!-- This span is hidden, so aria-owns is ignored, and the would-be relocated contents will act as the computed label in its original DOM location, as part of the following test. --> + <span hidden aria-owns="pearl"> + This oyster contains... + </span> + <mark>sand</mark> + </h3> + <h4 + class="ex-label" + data-testname="Computed name of parent heading persists when aria-owns fails to relocate its contents" + data-expectedlabel="a pearl" + > + <!-- + TODO: This subtest only succeeds in confirming that the h4’s computed + name remains "a pearl". + + It does *not* confirm that #pearl remains unmoved in the accessibility + tree after aria-owns is processed on the h3. + + This subtle distinction is importance since we’ve discovered at least + one case where the h4 is simultaneously correctly named but emptied + of its contents: + + https://github.com/web-platform-tests/wpt/pull/44822#issuecomment-3251614062 + + A better test would assert that the #pearl text node remains unmoved. + --> + <mark id="pearl">a pearl</mark> + </h4> + + <h2>Computed name of parent heading excludes content relocated by aria-owns</h2> + <h3> + <span aria-owns="car"> + The dog that caught the + </span> + </h3> + <h4 + class="ex-label" + data-testname="Computed name of parent heading excludes content relocated by aria-owns" + data-expectedlabel="Speeding" + > + Speeding + <mark id="car">car</mark> + </h4> + + <h2>Ignore aria-owns when on an element with aria-hidden</h2> + <h3 + class="ex-label" + data-testname="Ignore aria-owns when on an element with aria-hidden" + data-expectedlabel="reflection" + > + <span aria-hidden="true" aria-owns="reflection"> + This vampire can’t see its... + </span> + <mark id="reflection">reflection</mark> + </h3> + + <h2>Ignore aria-owns when it targets an element that is hidden from all users</h2> + <a + class="ex-label" + data-testname="Ignore aria-owns when it targets an element that is hidden from all users" + data-expectedlabel="World Wide Web Consortium" + href="https://www.w3.org/" + aria-owns="new-window-warning-2" + > + World Wide Web Consortium + </a> + <div> + <span id="new-window-warning-2" hidden> (opens in a new window)</span> + <!-- Label concatenation is ignored because aria-owns does not override the display:none rendering due to the hidden attr. --> + </div> + + <h2>Ignore aria-owns when it targets an element with an ancestor that is hidden from all users</h2> + <a + class="ex-label" + data-testname="Ignore aria-owns when it targets an element with an ancestor that is hidden from all users" + data-expectedlabel="World Wide Web Consortium" + href="https://www.w3.org/" + aria-owns="new-window-warning-3" + > + World Wide Web Consortium + </a> + <div hidden> + <span id="new-window-warning-3"> (opens in a new window)</span> + <!-- Label concatenation is ignored because ancestor is display:none via the hidden attr. --> + </div> + + <h2>aria-hidden remains in effect on an element after it is relocated using aria-owns</h2> + <a + class="ex-label" + data-testname="aria-hidden remains in effect on an element after it is relocated using aria-owns" + data-expectedlabel="World Wide Web Consortium" + href="https://www.w3.org/" + aria-owns="new-window-warning-4" + > + World Wide Web Consortium + </a> + <div> + <span id="new-window-warning-4" aria-hidden="true"> (opens in a new window)</span> + <!-- Label concatenation is ignored because aria-owns does not override the aria-hidden status, like it could be if hidden but referenced directly in a aria-labelledby computation. --> + </div> + + <script> + AriaUtils.verifyLabelsBySelector(".ex-label"); + </script> +</body> + +</html>