Accessibility issue: unread flag is no longer exposed to orca or Windows screen reader

RESOLVED FIXED in Thunderbird 66.0

Status

defect
RESOLVED FIXED
6 months ago
6 months ago

People

(Reporter: jorgk, Assigned: jorgk)

Tracking

({access})

unspecified
Thunderbird 66.0

Thunderbird Tracking Flags

(thunderbird65 fixed, thunderbird66 fixed)

Details

Attachments

(1 attachment, 1 obsolete attachment)

According to a private message from the reporter:

This build includes the regression thus is not OK in this regard: https://download-installer.cdn.mozilla.net/pub/thunderbird/nightly/2018/06/2018-06-19-10-02-54-comm-central/thunderbird-62.0a1.en-US.linux-x86_64.tar.bz2

And all older builds including this one do expose unread flag on the message list row to orca thus these builds are OK in this regard: https://download-installer.cdn.mozilla.net/pub/thunderbird/nightly/2018/06/2018-06-18-10-08-53-comm-central/thunderbird-62.0a1.en-US.linux-x86_64.tar.bz2

Hmm, if I add one day to the range I get:
https://hg.mozilla.org/comm-central/pushloghtml?startdate=2018-06-17&enddate=2018-06-20
https://hg.mozilla.org/mozilla-central/pushloghtml?startdate=2018-06-17&enddate=2018-06-20

Nothing springs to mind there. Alice, could you improve the regression range by looking at the particular builds for up.

Flags: needinfo?(alice0775)

... for us.

(In reply to Jorg K (GMT+1) from comment #1)

Hmm, if I add one day to the range I get:
https://hg.mozilla.org/comm-central/pushloghtml?startdate=2018-06-
17&enddate=2018-06-20
https://hg.mozilla.org/mozilla-central/pushloghtml?startdate=2018-06-
17&enddate=2018-06-20

Nothing springs to mind there. Alice, could you improve the regression range
by looking at the particular builds for up.

What is the orca? And please describe detailed STR.

Flags: needinfo?(alice0775)

I think it's a screen reader.

All I want you to do is to download the two Daily builds and check the build changesets. You do use Linux as well as Windows, no?

If need be, Alex will answer those questions.

(In reply to Alice0775 White from comment #3)

(In reply to Jorg K (GMT+1) from comment #1)

Hmm, if I add one day to the range I get:
https://hg.mozilla.org/comm-central/pushloghtml?startdate=2018-06-
17&enddate=2018-06-20
https://hg.mozilla.org/mozilla-central/pushloghtml?startdate=2018-06-
17&enddate=2018-06-20

Nothing springs to mind there. Alice, could you improve the regression range
by looking at the particular builds for up.

What is the orca? And please describe detailed STR.

Orca is a screen reader for GNU/Linux, a tool used by blind and visual-impaired people to get a feedback of what there is on the screen via speech synthesis and/or braille display (USB device that create braille emulation). In practice, screen reader doesn't read the screen, Orca gets on Linux DBUS messages to be aware of what there are on the screen like "you're on Thunderbird", "you're on the message OBJECT SENDER DATE FLAG".

If you want to understand more precisely what accessibility means, you can show this conference called "How software accessibility works?" (in English): https://rmll.ubicast.tv/videos/comment-fonctionne-laccessibilite-des-logiciels/ (it's only 40 minutes)

Best regards,
Alex.

Keywords: access

please ignore comment#7.

Using windows10 narrator (I did not try on Linux),
Mouse hover over unread icon of a message in thread pane. then the narrator
should say "unread".
(There is no specific steps、so I assumed.)

Regression window:
https://hg.mozilla.org/comm-central/pushloghtml?fromchange=d494b829635c7c908d5829c7a5a04740d88292c4&tochange=7c8d92b041349e75ebcf2f5ab7fb66e107741fad
https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=9b74b9f2939a7ae3a0ea6e711dc32ed5203e03ff&tochange=1e2c9151a09e43613a79daa8d4a94dc3e314020c

Thank you so much, Alice. Great idea to use the tools at hand :-)

It surely looks like:
802e67be3e3e Jorg K — Bug 1466782 - Follow-up: Fix nsMsgDBView::CellTextForColumn() to use nsString parameters. r=aceman,alta88

That was only a follow-up in that bug, the two main changesets landed 12 days before on 2018-06-06.

So the question is, why did https://hg.mozilla.org/comm-central/rev/802e67be3e3e change things?

All we did is to change an internal interface to switch from raw strings to smart strings.

Which information do the screen readers use? Where has that changed?

Flags: needinfo?(richard.marti)
Flags: needinfo?(alta88)
Flags: needinfo?(acelists)
Summary: Accessibility issue: unread flag and attachment flag are no longer exposed to orca → Accessibility issue: unread flag and attachment flag are no longer exposed to orca or Windows screen reader

(In reply to Alice0775 White from comment #8)

please ignore comment#7.

Using windows10 narrator (I did not try on Linux),
Mouse hover over unread icon of a message in thread pane. then the narrator
should say "unread".
(There is no specific steps、so I assumed.)

Oh, if you need to do testing on Windows I really advise you to use NVDA: https://www.nvaccess.org/download/

I don't know any blind relying on the Narrator except for installing Windows or another screen reader.

Best regards,
Alex.

In the C++ area I can unfortunately not help.

Flags: needinfo?(richard.marti)

It's not a C++ issue. There must he something in the UI that the screen reader picks up. Most likely visible with the inspector. So you could check the difference between those two version.

Flags: needinfo?(richard.marti)

The list of email messages is a tree table. Each row represents a message.
Each row has individual cells inside. When navigating up and down in this tree table focus moves from one row to another.
When a row receives the focus thunderbird fires respective selected or focused event according to the platform.
This is all working fine.
However as screen readers such as orca on Linux or NVDA on Windows present the selected row to screen reader users they are asking thunderbird for additional accessibility related properties so they have something usefull to present.
As I see it these rows have no accessible name associated because that accessible name is calculated (made up of) accessible names and text labels of individual row child elements.
On both linux and windows read, replied and attachment cells have no visible text or accessible Name thus that info is not populated into the row accessible name. Screen readers are looking for.

When arrowing over the read column usingthe mouse on windows, NVDA presents column header firstand then an empty cell.

Hopefully this might help a bit when figuring out what has changed.

You can easily test like this, in a console, and toggling message 0 in a folder to read/unread.
t=document.getElementById("threadTree")
c=t.columns["unreadButtonColHeader"]
gDBView.getCellValue(0, c)

  1. It should be "unreadButtonColHeader" and not ""unreadCol"" in GetCellValue(). That col should really be renamed.

I don't know why or if it fact it's true the others aren't there; it returns correctly for "attachmentCol". Maybe something isn't calling getCellValue() anymore, but I don't see why in this changeset, unless someone's c++ string foo is off..

Flags: needinfo?(alta88)

Like this? I found two call sites.

Assignee: nobody → jorgk
Status: NEW → ASSIGNED
Flags: needinfo?(richard.marti)
Flags: needinfo?(acelists)
Attachment #9035775 - Flags: review?(alta88)

Comment on attachment 9035775 [details] [diff] [review]
1519044-fix-unread-column.patch

no, the second one shouldn't be changed, it means unread in a thread count. what i meant was that unreadButtonColHeader should globally be renamed to unreadCyclerCol and unreadCol should be renamed to unreadCountCol.

but for just this bug, the change is only required in GetCellValue().

Attachment #9035775 - Flags: review?(alta88)

r+ if you just make that change, and want it now, i'm afk.

r+ as per comment #17.

Attachment #9035775 - Attachment is obsolete: true
Attachment #9035870 - Flags: review+
Attachment #9035870 - Flags: approval-comm-beta+

Pushed by mozilla@jorgk.com:
https://hg.mozilla.org/comm-central/rev/0c6c2007dfae
Bug 1466782 follow-up: fix incorrect 'unread column' name. r=alta88

Status: ASSIGNED → RESOLVED
Closed: 6 months ago
Resolution: --- → FIXED
Target Milestone: --- → Thunderbird 66.0

Huge thank you to you all guys! The fix can already be seen in today's daily build. It works fine now.

Yes, included in today's Daily. We'll fix TB 65 beta as well. TB 60 is not affected.

However, the original report was for "read" status and attachments flags. So was the attachments flag a false alarm or is there still an issue?

Summary: Accessibility issue: unread flag and attachment flag are no longer exposed to orca or Windows screen reader → Accessibility issue: unread flag is no longer exposed to orca or Windows screen reader

So what is the actual fix? Why does changing the column name fix anything? Are there any rules for the names, or some pattern that the screen readers look for?

(In reply to :aceman from comment #22)

So what is the actual fix? Why does changing the column name fix anything?
Are there any rules for the names, or some pattern that the screen readers
look for?

I don't think so, the screen reader gets the whole line (I assume the it's concatenated by Thunderbird itself).

I've requested a needinfo to MarcoZ from Mozilla accessibility team, maybe his experience and historic on the accessibility topic could help us.

Best regards,
Alex.

Flags: needinfo?(mzehe)

I can't modify the see also field: there is a related bug (not regression), the bug 448235
"Thunderbird replied and forwarded states not exposed via AT-SPI"
https://bugzilla.mozilla.org/show_bug.cgi?id=448235

(In reply to :aceman from comment #22)

So what is the actual fix? Why does changing the column name fix anything?

     case 'u':
-      if (colID.EqualsLiteral("unreadCol") &&
+      if (colID.EqualsLiteral("unreadButtonColHeader") &&
           !(flags & nsMsgMessageFlags::Read))
       {
         nsString tmp_str;
         tmp_str.Adopt(GetString(u"messageUnread"));
         aValue.Assign(tmp_str);

Well, if you don't detect the column since you're looking for the wrong ID, then the cell is not given the value "messageUnread" and consequently the reader doesn't see it as unread.

I see now, the column name in this cpp file and the in the XUL display wasn't the same so the column wasn't populated.

OK, looks like you found the solution, cancelling NI.

Flags: needinfo?(mzehe)
You need to log in before you can comment on or make changes to this bug.