Issue metadata
Sign in to add a comment
|
IAccessible2_2::relationTargetsOfType should work for all supported types including labelledBy
Reported by
m...@nvaccess.org,
Aug 22 2017
|
||||||||||||||||||||||
Issue description
Chrome Version : 62.0.3192.0 (Official Build) canary(64-bit)(cohort: 64-Bit)
URLs (if applicable) :
Other browsers tested:
Add OK or FAIL, along with the version, after other browsers where you
have tested this issue:
Firefox: 54.0.1
What steps will reproduce the problem?
(1) Copy the following html fragment into the Chrome address bar:
data:text/html,<span id="myLabel">Label</span> <input type="text" aria-labelledby='myLabel' />
(2) Get a reference to the IAccessible2_2 interface for the text input element.
(3) Call IAccessible2_2::relationTargetsOfType giving it 'labelledBy' as the type and 1 as the count.
What is the expected result?
One target representing the span should be returned.
What happens instead?
0 targets are returned.
Please provide any additional information below. Attach a screenshot if
possible.
Looking at the Chromium sources, it looks like relationTargetsOfType explicitly only supports 'alerts' and nothing else.
It should support the same types returned by IAccessible2::relations.
In the IAccessible2 specification, A note on IAccessible2::relations is as follows: "As a performant alternative, client code should consider using IAccessible2_2::relationTargetsOfType."
In deed, it would be much better for a screen reader such as NVDA, to explicitly ask for one specific relation type (E.g. labelledBy) rather than requesting the browser to fetch all relations even though the screen reader was not going to use any of them.
Firefox handles IAccessible2_2::relationTargetsOfType with a type of 'labelledBy' in this example.
Due to this missing in Chromium, NVDA is unable to automatically report labels for controls set with aria-label that also contain useful content (e.g. a text input field).
,
Aug 22 2017
,
Sep 21 2017
I uploaded this change to automatically keep track of reverse relationships in AXTree. That will help clean up all of our relation and reverse relation code. https://chromium-review.googlesource.com/c/chromium/src/+/676098
,
Sep 26 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/35f2a525f6d6a917ad3a617c421ebff056567a4c commit 35f2a525f6d6a917ad3a617c421ebff056567a4c Author: Dominic Mazzoni <dmazzoni@chromium.org> Date: Tue Sep 26 00:56:04 2017 Implement reverse relations in AXTree After this we can get rid of a lot of the code to keep track of reverse relations in AXPlatformNodeWin and just get it from AXTree instead. Bug: 757707 Change-Id: I79fd5c276b50d4bf1409f8e20af7efe8abf928ca Reviewed-on: https://chromium-review.googlesource.com/676098 Reviewed-by: Doug Turner <dougt@chromium.org> Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org> Cr-Commit-Position: refs/heads/master@{#504245} [modify] https://crrev.com/35f2a525f6d6a917ad3a617c421ebff056567a4c/ui/accessibility/ax_tree.cc [modify] https://crrev.com/35f2a525f6d6a917ad3a617c421ebff056567a4c/ui/accessibility/ax_tree.h [modify] https://crrev.com/35f2a525f6d6a917ad3a617c421ebff056567a4c/ui/accessibility/ax_tree_unittest.cc
,
Dec 11 2017
This is set to available, not assigned to Dominic because it is available for anyone to take. User impact: "NVDA is unable to automatically report labels for controls set with aria-label that also contain useful content (e.g. a text input field)"
,
Dec 13 2017
User benefit: screen reader is not reading some labels because it is afraid of reading them twice. Only an issue when you have a label that hasn't appeared anywhere on the screen.
,
Dec 15 2017
Issue 791727 has been merged into this issue.
,
Dec 19 2017
,
Dec 23 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/94a4da6e66192395e9d3ab9c44eee42150bb0865 commit 94a4da6e66192395e9d3ab9c44eee42150bb0865 Author: Dominic Mazzoni <dmazzoni@chromium.org> Date: Sat Dec 23 00:57:48 2017 Rewrite IAccessibleRelation interface support Previously, every time we created an AXPlatformNodeWin, we constructed an IAccessibleRelation with every forward and reverse relation. This required some extra memory and bookkeeping, even though much of the time these relations were never asked for by AT. Replace this with a mostly-lazy implementation. AXTree now keeps track of reverse relations automatically for us in a very compact, efficient way. This part is not lazy, it's still faster to keep track of reverse relations as we go. However, AXPlatformNodeWin doesn't compute anything on the fly anymore. Instead, a new function AXPlatformRelationWin::EnumerateRelationships does all of the work of iterating over all possible forward and reverse IAccessible2 relations of a node based on the internal attributes. When a specific IAccessibleRelation is requested, we construct a new AXPlatformRelationWin on the fly, and then invalidate it whenever the node that created it changes. As a side benefit, this completes the implementation of relationTargetsOfType. Bug: 757707 Change-Id: I5cf250a95566f38d629d29f66a52f0b631fbf2f6 Reviewed-on: https://chromium-review.googlesource.com/834588 Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org> Reviewed-by: Doug Turner <dougt@chromium.org> Cr-Commit-Position: refs/heads/master@{#526117} [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/content/browser/accessibility/browser_accessibility.cc [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/content/browser/accessibility/browser_accessibility.h [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/content/browser/accessibility/browser_accessibility_com_win.cc [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/accessibility/BUILD.gn [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/accessibility/ax_tree.cc [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/accessibility/ax_tree.h [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/accessibility/platform/ax_platform_node_delegate.h [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/accessibility/platform/ax_platform_node_win.cc [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/accessibility/platform/ax_platform_node_win.h [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/accessibility/platform/ax_platform_node_win_unittest.cc [add] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/accessibility/platform/ax_platform_relation_win.cc [add] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/accessibility/platform/ax_platform_relation_win.h [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/accessibility/platform/ax_system_caret_win.cc [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/accessibility/platform/ax_system_caret_win.h [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/accessibility/platform/test_ax_node_wrapper.cc [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/accessibility/platform/test_ax_node_wrapper.h [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/views/accessibility/native_view_accessibility_auralinux.cc [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/views/accessibility/native_view_accessibility_base.cc [modify] https://crrev.com/94a4da6e66192395e9d3ab9c44eee42150bb0865/ui/views/accessibility/native_view_accessibility_base.h
,
Dec 23 2017
,
Jan 11 2018
,
Feb 1 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a55fe78f801dbf3c10f34a665bb9673393f9e494 commit a55fe78f801dbf3c10f34a665bb9673393f9e494 Author: Dominic Mazzoni <dmazzoni@chromium.org> Date: Thu Feb 01 21:33:38 2018 Expose reverse relationships in the automation API. AXTree now keeps track of reverse relationships automatically, so take advantage of that to expose reverse relationships for some attributes already exposed in the automation API. Also add two relation attributes that are supported by Blink but weren't added to automation yet: details, errorMessage. The new attributes are: detailsFor (reverse of details) errorMessageFor (reverse of errorMessage) controlledBy (reverse of controls) descriptionFor (reverse of describedBy) flowFrom (reverse of flowTo) labelFor (reverse of labelledBy) Bug: 757707 Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation Change-Id: I112c283c87274388fc9e7e725bcc126393133e39 TBR: michaelpg@chromium.org Reviewed-on: https://chromium-review.googlesource.com/837643 Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org> Reviewed-by: David Tseng <dtseng@chromium.org> Cr-Commit-Position: refs/heads/master@{#533819} [modify] https://crrev.com/a55fe78f801dbf3c10f34a665bb9673393f9e494/chrome/browser/extensions/api/automation/automation_apitest.cc [modify] https://crrev.com/a55fe78f801dbf3c10f34a665bb9673393f9e494/chrome/common/extensions/api/automation.idl [modify] https://crrev.com/a55fe78f801dbf3c10f34a665bb9673393f9e494/chrome/renderer/extensions/automation_internal_custom_bindings.cc [modify] https://crrev.com/a55fe78f801dbf3c10f34a665bb9673393f9e494/chrome/renderer/extensions/automation_internal_custom_bindings.h [modify] https://crrev.com/a55fe78f801dbf3c10f34a665bb9673393f9e494/chrome/renderer/resources/extensions/automation/automation_node.js [add] https://crrev.com/a55fe78f801dbf3c10f34a665bb9673393f9e494/chrome/test/data/extensions/api_test/automation/sites/reverse_relations.html [add] https://crrev.com/a55fe78f801dbf3c10f34a665bb9673393f9e494/chrome/test/data/extensions/api_test/automation/tests/tabs/reverse_relations.html [add] https://crrev.com/a55fe78f801dbf3c10f34a665bb9673393f9e494/chrome/test/data/extensions/api_test/automation/tests/tabs/reverse_relations.js [modify] https://crrev.com/a55fe78f801dbf3c10f34a665bb9673393f9e494/third_party/closure_compiler/externs/automation.js
,
Feb 2 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/66b0a700630f1b6944e7b5e224cedf800b601fcb commit 66b0a700630f1b6944e7b5e224cedf800b601fcb Author: Chris Pickel <sfiera@chromium.org> Date: Fri Feb 02 11:27:20 2018 Revert "Expose reverse relationships in the automation API." This reverts commit a55fe78f801dbf3c10f34a665bb9673393f9e494. Reason for revert: Possible source of flakiness in AutomationApiTest.DesktopHitTestIframe Original change's description: > Expose reverse relationships in the automation API. > > AXTree now keeps track of reverse relationships automatically, > so take advantage of that to expose reverse relationships for > some attributes already exposed in the automation API. > Also add two relation attributes that are supported by Blink > but weren't added to automation yet: details, errorMessage. > > The new attributes are: > > detailsFor (reverse of details) > errorMessageFor (reverse of errorMessage) > controlledBy (reverse of controls) > descriptionFor (reverse of describedBy) > flowFrom (reverse of flowTo) > labelFor (reverse of labelledBy) > > Bug: 757707 > Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation > Change-Id: I112c283c87274388fc9e7e725bcc126393133e39 > TBR: michaelpg@chromium.org > Reviewed-on: https://chromium-review.googlesource.com/837643 > Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org> > Reviewed-by: David Tseng <dtseng@chromium.org> > Cr-Commit-Position: refs/heads/master@{#533819} TBR=dmazzoni@chromium.org,dtseng@chromium.org,michaelpg@chromium.org Bug: 757707 Bug: 808343 Change-Id: Ie61c369e0f234eca7435ac80d056a6c10ea75a41 Reviewed-on: https://chromium-review.googlesource.com/897864 Reviewed-by: Chris Pickel <sfiera@chromium.org> Commit-Queue: Chris Pickel <sfiera@chromium.org> Cr-Commit-Position: refs/heads/master@{#534020} [modify] https://crrev.com/66b0a700630f1b6944e7b5e224cedf800b601fcb/chrome/browser/extensions/api/automation/automation_apitest.cc [modify] https://crrev.com/66b0a700630f1b6944e7b5e224cedf800b601fcb/chrome/common/extensions/api/automation.idl [modify] https://crrev.com/66b0a700630f1b6944e7b5e224cedf800b601fcb/chrome/renderer/extensions/automation_internal_custom_bindings.cc [modify] https://crrev.com/66b0a700630f1b6944e7b5e224cedf800b601fcb/chrome/renderer/extensions/automation_internal_custom_bindings.h [modify] https://crrev.com/66b0a700630f1b6944e7b5e224cedf800b601fcb/chrome/renderer/resources/extensions/automation/automation_node.js [delete] https://crrev.com/203fb1a894077184a9d4483d81958bb1c5bc9f4e/chrome/test/data/extensions/api_test/automation/sites/reverse_relations.html [delete] https://crrev.com/203fb1a894077184a9d4483d81958bb1c5bc9f4e/chrome/test/data/extensions/api_test/automation/tests/tabs/reverse_relations.html [delete] https://crrev.com/203fb1a894077184a9d4483d81958bb1c5bc9f4e/chrome/test/data/extensions/api_test/automation/tests/tabs/reverse_relations.js [modify] https://crrev.com/66b0a700630f1b6944e7b5e224cedf800b601fcb/third_party/closure_compiler/externs/automation.js
,
Feb 5 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/91eabe3bdb99681b25c6490c57bd85a4d774f47f commit 91eabe3bdb99681b25c6490c57bd85a4d774f47f Author: Yuta Kitamura <yutak@chromium.org> Date: Mon Feb 05 10:28:12 2018 Revert "Revert "Expose reverse relationships in the automation API."" This reverts commit 66b0a700630f1b6944e7b5e224cedf800b601fcb. Reason for revert: The revert did not fix the flakiness. Original change's description: > Revert "Expose reverse relationships in the automation API." > > This reverts commit a55fe78f801dbf3c10f34a665bb9673393f9e494. > > Reason for revert: Possible source of flakiness in AutomationApiTest.DesktopHitTestIframe > > Original change's description: > > Expose reverse relationships in the automation API. > > > > AXTree now keeps track of reverse relationships automatically, > > so take advantage of that to expose reverse relationships for > > some attributes already exposed in the automation API. > > Also add two relation attributes that are supported by Blink > > but weren't added to automation yet: details, errorMessage. > > > > The new attributes are: > > > > detailsFor (reverse of details) > > errorMessageFor (reverse of errorMessage) > > controlledBy (reverse of controls) > > descriptionFor (reverse of describedBy) > > flowFrom (reverse of flowTo) > > labelFor (reverse of labelledBy) > > > > Bug: 757707 > > Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation > > Change-Id: I112c283c87274388fc9e7e725bcc126393133e39 > > TBR: michaelpg@chromium.org > > Reviewed-on: https://chromium-review.googlesource.com/837643 > > Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org> > > Reviewed-by: David Tseng <dtseng@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#533819} > > TBR=dmazzoni@chromium.org,dtseng@chromium.org,michaelpg@chromium.org > > Bug: 757707 > Bug: 808343 > Change-Id: Ie61c369e0f234eca7435ac80d056a6c10ea75a41 > Reviewed-on: https://chromium-review.googlesource.com/897864 > Reviewed-by: Chris Pickel <sfiera@chromium.org> > Commit-Queue: Chris Pickel <sfiera@chromium.org> > Cr-Commit-Position: refs/heads/master@{#534020} TBR=dmazzoni@chromium.org,dtseng@chromium.org,michaelpg@chromium.org,sfiera@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: 757707 , 808343 Change-Id: Iad79be2da3e76e68857e78758113268dceea16ed Reviewed-on: https://chromium-review.googlesource.com/901202 Reviewed-by: Yuta Kitamura <yutak@chromium.org> Commit-Queue: Yuta Kitamura <yutak@chromium.org> Cr-Commit-Position: refs/heads/master@{#534360} [modify] https://crrev.com/91eabe3bdb99681b25c6490c57bd85a4d774f47f/chrome/browser/extensions/api/automation/automation_apitest.cc [modify] https://crrev.com/91eabe3bdb99681b25c6490c57bd85a4d774f47f/chrome/common/extensions/api/automation.idl [modify] https://crrev.com/91eabe3bdb99681b25c6490c57bd85a4d774f47f/chrome/renderer/extensions/automation_internal_custom_bindings.cc [modify] https://crrev.com/91eabe3bdb99681b25c6490c57bd85a4d774f47f/chrome/renderer/extensions/automation_internal_custom_bindings.h [modify] https://crrev.com/91eabe3bdb99681b25c6490c57bd85a4d774f47f/chrome/renderer/resources/extensions/automation/automation_node.js [add] https://crrev.com/91eabe3bdb99681b25c6490c57bd85a4d774f47f/chrome/test/data/extensions/api_test/automation/sites/reverse_relations.html [add] https://crrev.com/91eabe3bdb99681b25c6490c57bd85a4d774f47f/chrome/test/data/extensions/api_test/automation/tests/tabs/reverse_relations.html [add] https://crrev.com/91eabe3bdb99681b25c6490c57bd85a4d774f47f/chrome/test/data/extensions/api_test/automation/tests/tabs/reverse_relations.js [modify] https://crrev.com/91eabe3bdb99681b25c6490c57bd85a4d774f47f/third_party/closure_compiler/externs/automation.js |
|||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||
Comment 1 by aleventhal@chromium.org
, Aug 22 2017