New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 614570 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Jun 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 3
Type: Bug
Team-Accessibility



Sign in to add a comment

Label on iframe breaks accessible text exposure

Project Member Reported by ja...@nvaccess.org, May 25 2016

Issue description

Version: 53.0.2747.0 canary (64-bit)
OS: Windows 10 64 bit

User STR with NVDA:
1. Open this URL: data:text/html,<iframe aria-label="label" src="http://www.google.com/foo"></iframe>
2. Read the document with the arrow keys.
Expected: The content of a Google 404 page.
Actual: Just the single word "label".

When there's a label, IAccessibleText exposes the text of that label and no embedded objects, so NVDA renders that text only. Chrome should behave the same as when there is no label. Right now, this means IAccessibleText should expose nothing; i.e. nCharacters should return 0, text(0, -1) should return NULL.

Note that Firefox doesn't implement IAccessibleText at all for frame accessibles. This is also a valid (and probably more elegant) solution. However, which you choose isn't particularly important.

Original NVDA issue: https://github.com/nvaccess/nvda/issues/5994
 

Comment 1 by ja...@nvaccess.org, May 25 2016

I'm not sure whether this should be addressed separately, but this seems to be a more general issue with labels in Chrome. For example, take this example:
data:text/html,<div contentEditable="true" role="textbox" aria-label="label"></div>
While there's no content in the text box, IAccessibleText exposes "label", but you can't obviously cursor through it; you just get "l", which is misleading at best. As soon as you put text in the text box, it works as expected. IMO, Chrome shouldn't fall back to label in these cases.

Comment 2 by nek...@chromium.org, May 25 2016

Wouldn't it be more conformant to the spec to return the text inside the iframe? I believe that IAccessibleText is supposed to return the visible text under the object.
Isn't it better to have IAccessibleText working on all containers? It's currently implemented for the document object for example.

Comment 3 by ja...@nvaccess.org, May 25 2016

If anything, it should expose an embedded object for the document child; 
i.e. 1 0xFFFC character and IAccessibleHypertext::hyperlink(0) should 
return the document. That would be most consistent with the rest of the 
model, yes.

That said, it's a bit controversial because you could argue a frame is 
special and doesn't really have "text". Because Firefox does this in a 
few places, NVDA will walk accessible children if IAccessibleText isn't 
implemented or returns nothing.

Comment 4 by nek...@chromium.org, May 25 2016

Yes, I agree that if anything it should return an embedded object character for the iframe and certainly not the label. Same for the other cases.
What I wasn't sure about is cases where there is a control for which Firefox doesn't expose IAccessibleText but it might have text in it.
For example, an ARIA slider might be written with more HTML tags inside it which should be exposed as text. That's why I prefer from an engineering standpoint not to turn off IAccessibleText for any object, because it's not clear for me what can contain text and what not.
Tested in Win10 and Win7 on latest canary 53.0.2748.0. unable to repro the issue. displaying content of Google 404 page. please find the attached screenshot and confirm from your side.

Thank you.
Issue_614570.png
15.5 KB View Download

Comment 6 by nek...@chromium.org, May 26 2016

Cc: dmazz...@chromium.org
Status: Started (was: Untriaged)
This is an accessibility issue that only occurs when a Windows screen reader is being used. I'm taking this on.

Project Member

Comment 7 by bugdroid1@chromium.org, Jun 8 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5

commit a4f893a3ca5cd9fd001938fb455f1e0cde2877a5
Author: nektar <nektar@chromium.org>
Date: Wed Jun 08 16:04:35 2016

Improves computation of IAccessible2 Hypertext.

1. Ensures that children that are in a different subtree are included in IA2 Hypertext.
2. Stops exposing the value of a rich text control in IA2 Hypertext.
BUG= 614570 
TESTED=NVDA,browser test
R=dmazzoni@chromium.org

Review-Url: https://codereview.chromium.org/2040523002
Cr-Commit-Position: refs/heads/master@{#398578}

[modify] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/browser/accessibility/browser_accessibility_win.cc
[modify] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/browser/accessibility/browser_accessibility_win.h
[modify] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/browser/accessibility/browser_accessibility_win_unittest.cc
[modify] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
[add] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/test/data/accessibility/html/contenteditable-with-no-descendants-expected-android.txt
[add] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/test/data/accessibility/html/contenteditable-with-no-descendants-expected-mac.txt
[add] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/test/data/accessibility/html/contenteditable-with-no-descendants-expected-win.txt
[add] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/test/data/accessibility/html/contenteditable-with-no-descendants.html
[modify] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/test/data/accessibility/html/iframe-coordinates-cross-process-expected-blink.txt
[modify] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/test/data/accessibility/html/iframe-coordinates-cross-process-expected-win.txt
[modify] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/test/data/accessibility/html/iframe-cross-process-expected-blink.txt
[modify] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/test/data/accessibility/html/iframe-cross-process-expected-mac.txt
[modify] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/test/data/accessibility/html/iframe-cross-process-expected-win.txt
[modify] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/test/data/accessibility/html/iframe-cross-process.html
[modify] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/test/data/accessibility/html/iframe-expected-blink.txt
[modify] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/test/data/accessibility/html/iframe-expected-mac.txt
[modify] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/test/data/accessibility/html/iframe-expected-win.txt
[modify] https://crrev.com/a4f893a3ca5cd9fd001938fb455f1e0cde2877a5/content/test/data/accessibility/html/iframe.html

Status: Fixed (was: Started)

Sign in to add a comment