Re: Summarizing the contentious history of re-opened PFWG-ISSUE-348: Consider renaming (now actually 'deprecating' in ARIA 1.1) role="presentation" to avoid avoid author confusion

Responses inline.

On Feb 1, 2014, at 9:36 AM, Joanmarie Diggs <jdiggs@igalia.com> wrote:

> On 02/01/2014 04:06 AM, James Craig wrote:
>> On Jan 31, 2014, at 11:14 AM, Joanmarie Diggs <jdiggs@igalia.com>
>> wrote:
>> 
>>> Silly question: Why not role="div"?
>> 
>> Three reasons for me:
> 
> <snip>
> 
> Thank you for the explanation. While I'm not sure I fully agree with
> those reasons, I will concede that they sound sufficiently reasonable.
> ;) But this:
> 
>> My top contenders so far are “none”, “null”, and the empty string
>> (“”).
> 
> continues to strike me as problematic. And I suspect going that route
> may further increase, rather than resolve, an issue you cited earlier in
> this thread:
> 
>    The following marking:
>    <h4 role="presentation">Foo</h4>
> 
>    is effectively the same as:
>    <div>Foo</div>
> 
>    But many authors are using it to mean this:
>    <h4 aria-hidden="true">Foo</h4>
> 
>    And that’s a major problem I hope we can resolve, regardless of the
>    solution.

One thing I failed to clarify, which may have added to the confusion, is that the following two variants are not the same, so “div” isn’t accurate.

<h4 role="presentation" aria-label="bar">Foo</h4> <!-- just the text content exposed -->
<div aria-label="bar">Foo</div> <!— node exposed, but w/o an explicit role, TBD by the UA (chef’s choice) -->

> I think we need a self-documenting role name which clearly communicates
> to web developers the fact that the use of this attribute will cause
> that element's contents to be exposed via the platform accessibility
> API(s) using some API-specific role and potentially presented to end
> users via their AT. A null/empty role fails to communicate that (IMHO).

I’m not sure I understand the confusion around why role="none" or role="null" would indicate that their is “no role” for the node. Perhaps you can help me understand the confusion? That’s effectively what role="presentation" means, but it’s just poorly named. 

> I think this self-documenting role name should also clearly communicate
> to user agent developers the fact that some valid, known role should be
> used when exposing that element via platform accessibility API(s).

I may be misunderstanding some platform-specific API mapping for the currently used role. On the AX API, role="presentation” means “there is no role for the current node, so don’t expose it to the tree, but expose all of the descendant contents as normal.”  

> Here, too, the null/empty role falls short. Taking ATK as an example, your
> contenders seem like they should map to either ATK_ROLE_UNKNOWN or
> ATK_ROLE_INVALID -- and the contents would likely be ignored by ATs as a
> result. After all, if the implementor doesn't know what the heck it is,
> all bets (and AT heuristics) are off.

I think the ATK mapping should just promote the child contents and not expose the parent DOM node, because it has no role.

> My top contender so far, given "div" seems problematic, is "plaintext.”

Plaintext does not work either, because it would seem to imply that the child contents included *nothing but plaintext* inside.

<!-- seems to imply the button is flattened to plain text -->
<h2 role="plaintext”><button>foo</button></h2>

<!— this one more clearly indicates (to me, anyway) that only the button is exposed -->
<h2 role="none"><button>foo</button></h2>

James

Received on Saturday, 1 February 2014 18:11:39 UTC