w3c/core-aam

Should form-with-name map to IA2_ROLE_LANDMARK?

carmacleod opened this issue · 6 comments

When working on #97, I noticed that the MSAA + IAccessible2 mapping for role="form" with an accessible name is IA2_ROLE_FORM. I would have thought it should be mapped to IA2_ROLE_LANDMARK with xml-roles: form, so that it is consistent with all of the other landmark role mappings in MSAA + IAccessible2. It would also be consistent with ATK/AT-SPI's ATK_ROLE_LANDMARK for forms with an accessible name.

Looking through the mailing list archives, it seems that this was discussed but as far as I can tell it was never really resolved?

The point of contention seems to be that HTML <form> has semantics, even if it doesn't have a name. Which is fine, but it doesn't make a nameless form a landmark - only a name can do that. Perhaps nameless HTML <form> should be mapped to IA2_ROLE_FORM so that semantics can be kept if desired. (It is currently mapped to generic role in HTML-AAM). But mapping nameless HTML <form> to IA2_ROLE_FORM would only work if the mapping for named ARIA form role is changed to IA2_ROLE_LANDMARK with xml-roles: form... which is what this issue is about.

@feerrenrut and @jcsteh: Thoughts? Thanks in advance!

Ok, I've done some further thinking on this, and here's what I think makes the most sense.

First, here are my assumptions for how User Agents generally determine the role mapping of an element:

  • If the element has an explicit role, then look up the mappings in CORE-AAM first. In certain specific cases, CORE-AAM may direct you to look at HTML-AAM. For example, "Use the native host language role of the element instead."
  • If the element does not have an explicit role, then look up the mappings in HTML-AAM first. HTML-AAM may direct you to look at CORE-AAM. For example, "Use WAI-ARIA mapping".

So, specifically for form element and form role... if they have a name, we want them to be a landmark. If they don't have a name, we want them to be "just a plain-old form", i.e. something more interesting and useful than "generic".

For role="form" with an accessible name, the CORE-AAM mapping for MSAA+IA2 needs to be IA2_ROLE_LANDMARK with xml-roles: form for consistency with all of the other platforms, as noted in the initial comment of this issue.

The HTML-AAM mappings for form with an accessible name are ok (all platforms map to role="form").

For form element or form role without a name, I think the mappings in CORE-AAM should be the same as they currently are for all platform APIs: "Do not expose the element as a landmark. Use the native host language role of the element instead."

However, I think HTML-AAM needs to provide detailed mappings so that form element without a name is exposed as "just a plain-old form". I think this can be done as follows:

Platform Mapping
[wai-aria-1.2] generic role (or maybe "No corresponding role"?)
MSAA + IAccessible2 Role: IA2_ROLE_FORM
UIA Control Type: Group, Localized Control Type: form
ATK/AT-SPI Role: ROLE_FORM
AX API AXRole: AXForm, AXSubrole: nil

The only one I'm unsure of is AX API, as I can only find references to AXForm role on non-Apple sites. @cookiecrook, could you please help with this? What would the role/subrole pairing be for a plain non-landmark form (other than AXGroup/nil, which could be the backup plan if AXForm doesn't exist, but Apple AT wouldn't know that the element was a form... unless they look at the DOM)? Do you have a current public URL I can go to to find the names for all AX roles and subroles? The closest I can find are NSAccessibility.Role and NSAccessibility.Subrole.

AXRole: AXGroup (already implemented)
AXSubrole: AXLandmarkForm (new)

@carmacleod @scottaohara Will you weigh in on the <form title="foo"> mapping ambiguity comment in https://webkit.org/b/233907?

@carmacleod @scottaohara Will you weigh in on the <form title="foo"> mapping ambiguity comment in https://webkit.org/b/233907?

I'm disappointed to realize today that of all the possible conversations I could have had with Carolyn, this mundane question was the last thing I asked her about. 😢

@cookiecrook per your response to Carolyn's question, should I infer that we should not use AXForm and instead stick with AXGroup?

edit: made some updates to html aam. i don't think there's actually anything needed to be updated in core aam at this point? but i just need confirmation per my above question and then i think we're ok?

Yes. WebKit change will be in https://webkit.org/b/233907

AXRole: AXGroup (already implemented)
AXSubrole: AXLandmarkForm (new)