New issue
Advanced search Search tips

Issue 757707 link

Starred by 3 users

Issue metadata

Status: Verified
Owner:
Closed: Dec 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug
Team-Accessibility



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).

 
Components: Blink>Accessibility
Components: -Blink>Accessibility UI>Accessibility>Compatibility
Labels: -Pri-3 OS-Windows Pri-2
Status: Available (was: Unconfirmed)
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

Project Member

Comment 4 by bugdroid1@chromium.org, 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

Labels: win-a11y
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)"
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.

Comment 7 by nek...@chromium.org, Dec 15 2017

 Issue 791727  has been merged into this issue.
Owner: dmazz...@chromium.org
Status: Started (was: Available)
Project Member

Comment 9 by bugdroid1@chromium.org, 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

Status: Fixed (was: Started)
Status: Verified (was: Fixed)
Project Member

Comment 12 by bugdroid1@chromium.org, 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

Project Member

Comment 13 by bugdroid1@chromium.org, 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

Project Member

Comment 14 by bugdroid1@chromium.org, 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