Hello,
It was a while ago that I have posted little about Roundcube mail.
That's a web based email client. Back in the days its authors were
working on a better accessibility support. They have even wiki pages
dedicated to accessibility so they can do as good as possible.
Looking at this wiki page we can see there are a lot of nice things they
have done. For example they have clearly identified section of the mail
app UI, marked them up with headings and aria roles, they are using
legend and fieldset in the forms with more items resembling desktop
style dialogs at least from the accessibility related standpoint, they
are using aria-expanded state and aria-popup properties to denote the
fact pressing a control may reveal more content, they have implemented
some menus resembling desktop style popup menus, there is accessible
list box in the contacts window of the email app.
All this is working great when used in firefox and orca running with
some little exceptions for example when the collapsed button is given
the focus orca switches to focus mode. When the button is pressed a menu
pops up. First item of that menu is a checkbox and focusing the checkbox
makes orca to switch back into browse mode. I know this is a bit
complex, changing how orca switches to focus mode or browse mode is
difficult decision. Still I think we can slowly improve this. Perhaps
trying to get a bit more inspiration from NVDA would be a sane approach.
And now the most difficult hurdle. There is a table listing email
messages. Each table row coresponds to a single message in the list.
When looking at the DOM in the Firefox dev tools This row has additional
cells inside. And the first cell has link inside, other cells do usually
only have text and formatting. When looking at the same table using
Accerciser I can see the Firefox correctly computes accessible name for
the entire row. It's made up of the accessible texts of all its
children. So far so good it appears we would get their accessibility
support at our end in orca for free. Unfortunatelly this is more
complicated than that.
When arrowing up and down in this table, orca is correctly reporting
focus changes, however, there is no text to report. From the fact focus
is working here is that most likely they are using active descendants
and a bit of javascript magic to provide keyboard navigation within this
table.
When looking for the events we are getting using Accerciser I can see
the following output. First I tab into a link, next I tab into that
table and keep pressing up and down arrow keys:
source: [link | Size]
application: [application | Firefox]
object:state-changed:focused(1, 0, 0)
source: [link | Size]
application: [application | Firefox]
object:text-selection-changed(0, 0, )
source: [link | Size]
application: [application | Firefox]
object:text-caret-moved(0, 0, 0)
source: [link | Size]
application: [application | Firefox]
focus:(0, 0, 0)
source: [table cell | ]
application: [application | Firefox]
object:state-changed:focused(1, 0, 0)
source: [table cell | ]
application: [application | Firefox]
object:text-selection-changed(0, 0, )
source: [table cell | ]
application: [application | Firefox]
object:text-caret-moved(0, 0, 0)
source: [section | ]
application: [application | Firefox]
focus:(0, 0, 0)
source: [table cell | ]
application: [application | Firefox]
object:state-changed:focused(1, 0, 0)
source: [table cell | ]
application: [application | Firefox]
object:text-selection-changed(0, 0, )
source: [table cell | ]
application: [application | Firefox]
object:text-caret-moved(0, 0, 0)
source: [section | ]
application: [application | Firefox]
focus:(0, 0, 0)
source: [table cell | ]
application: [application | Firefox]
object:state-changed:focused(1, 0, 0)
source: [table cell | ]
application: [application | Firefox]
object:text-selection-changed(0, 0, )
source: [table cell | ]
application: [application | Firefox]
object:text-caret-moved(0, 0, 0)
source: [section | ]
application: [application | Firefox]
focus:(0, 0, 0)
source: [table cell | ]
application: [application | Firefox]
object:state-changed:focused(1, 0, 0)
source: [table cell | ]
application: [application | Firefox]
object:text-selection-changed(0, 0, )
source: [table cell | ]
application: [application | Firefox]
object:text-caret-moved(0, 0, 0)
source: [section | ]
application: [application | Firefox]
object:property-change:accessible-parent(0, 0, [section | ])
source: [section | ]
application: [application | Firefox]
object:children-changed:add:system(0, 0, [section | ])
source: [section | ]
application: [application | Firefox]
object:text-changed:insert:system(0, 1, )
source: [section | ]
application: [application | Firefox]
object:text-changed:delete:system(0, 4, 6872)
source: [section | ]
application: [application | Firefox]
object:children-changed:remove:system(-1, 0, [section | ])
source: [section | ]
application: [application | Firefox]
object:text-changed:delete:system(0, 1, )
source: [section | ]
application: [application | Firefox]
object:text-changed:insert:system(0, 4, 6872)
source: [section | ]
application: [application | Firefox]
I think that's good for an example.
I haven't managed to investigate further what's wrong but with NVDA and
Firefox on Windows this table is accessible.
I am speculating on how to go about improving this.
Are roundcube developers setting wrong active descendants here if we are
getting focus events on the cell rather than its parent row? When
looking at the row states with Accerciser the row never includes focused
within its states.
Might Firefox possibly be giving us false information when firing these
events? I would guess it makes perfect sense at the Roundcube developers
side of things to refer to the table row rather than a cell inside.
What is NVDA on Windows doing in order to overcome this? Or is Firefox
on Windows likelly to fire different events?
I'll try to look at this app with NVDA to discover more. I will also
test it in more browsers on Windows to get an idea whether it might be
sane hacking this around at Roundcube side of things.
Still if you can help a bit with this or give some ideas I would be
happy. Also for testing I can give out temporary email accounts with
access to my company install of Roundcube so you can see what's going on
if you have no access to such enviromment for testing.
Thunderbird is most resource intensive app on my system with my huge
mailboxes that's sometimes getting insane, so I am looking for ways on
how to overcome this. Trying to fix a web app appears to be most easiest
from options I have explored so far so it's why I'm trying to find a
solution to this.
Thanks and greetings
Peter
_______________________________________________
orca-list mailing list
orca-list gnome org
https://mail.gnome.org/mailman/listinfo/orca-list
Orca wiki: https://wiki.gnome.org/Projects/Orca
Orca documentation: https://help.gnome.org/users/orca/stable/
GNOME Universal Access guide:
https://help.gnome.org/users/gnome-help/stable/a11y.html
Log bugs and feature requests at http://bugzilla.gnome.org