[orca-list] Roundcube mail possibly accessibility of other rich web apps



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



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]