Open Bug 1305446 Opened 4 years ago Updated 3 years ago

Expose ARIA "log" role as ROLE_LOG

Categories

(Core :: Disability Access APIs, defect, P3)

Unspecified
Linux
defect

Tracking

()

People

(Reporter: jdiggs, Unassigned)

References

(Blocks 2 open bugs)

Details

(Whiteboard: [mentor=:surkov])

Current exposure of the "article" role is ROLE_DOCUMENT_FRAME; it should be ROLE_ARTICLE. Current exposure of the "log" role is based on the native element; it should be ROLE_LOG.
(In reply to Joanmarie Diggs from comment #0)
> Current exposure of the "article" role is ROLE_DOCUMENT_FRAME; it should be
> ROLE_ARTICLE. Current exposure of the "log" role is based on the native
> element; it should be ROLE_LOG.

are those ATK roles, and are not present in IA2, correct?

iirc role='log' was used on tables, which would lost their table semantics with new role. What is a story of LOG role?
Blocks: aria
If a table has role='log', is there a reason why it could not have ATK_ROLE_LOG and also implement AtkTable?
(In reply to Joanmarie Diggs from comment #2)
> If a table has role='log', is there a reason why it could not have
> ATK_ROLE_LOG and also implement AtkTable?

iirc there was issue how AT may detect a table, at least on Windows, they do not do QueryInterface because it's expensive to be called on each node, instead they do role testing. Cc'ing Jamie.
It's true that at least certain parts of NVDA's code depend on the role for tables and table cells. We could probably fix this; we already query for those interfaces anyway, so it shouldn't be a perf hit. However, given that IA2 doesn't have these roles and no one on Windows has requested them, I don't know that it's worthwhile.

That said, since ATK does have these roles and Joanie has requested they be used, I think it's fair enough that IA2 and ATK differ slightly here, especially because it's just the role: everything else would still be the same.
It's fair enough, let's do the log role for ATK only. 

Steps to fix:
* add ROLE_LOG into accessilbe/base/Roles.h
* add entry into accessilbe/base/RoleMaps.h
* add entry into getRoleCB in accessilbe/atk for backward compatibility
* fix tests located in accessilbe/tests/mochitest
Whiteboard: [mentor=:surkov]
Ping?
I'm working on this. Will do as described (i.e. no log role for IA2). However, it looks like all the other platforms are not using the native role: https://rawgit.com/w3c/aria/master/core-aam/core-aam.html#role-map-log

As a test, I used the following in Safari: data:text/html,<table border="1" role="log"><tr><th>log</th></tr><tr><td>foo</td></tr></table>

(The extra stuff is to ensure Safari concludes the table is a data table; layout tables have a role of AXGroup.)

If the log role is absent, Safari exposes the test case with role AXTable. But with the log role, it exposes the test case with role AXGroup. In contrast, Nightly has AXTable no matter what.
Having given more thought to the table-element, log-role issue, I've decided to ask on the ARIA mailing list: https://lists.w3.org/Archives/Public/public-aria/2017Jun/0031.html. As things stand right now, the expectation regarding whether tables that are logs should still be presented as tables is not specified. And AX API is definitely de-table-ing them. And from the mappings in the Core AAM, I'm pretty sure UIA is as well.

I created bug 1373786 so we can still fix the "article" mapping, which is incorrect for AX API in addition to ATK.
Summary: Expose ARIA "article" role as ROLE_ARTICLE and "log" role as ROLE_LOG → Expose ARIA "log" role as ROLE_LOG
This is something we should triage and fix but isn't among our most urgent bugs.(Contributions welcome as always!)
Priority: -- → P3
You need to log in before you can comment on or make changes to this bug.