- From: James Craig <jcraig@apple.com>
- Date: Sat, 01 Feb 2014 10:11:10 -0800
- To: Joanmarie Diggs <jdiggs@igalia.com>
- Cc: Cynthia Shelly <cyns@microsoft.com>, Bryan Garaventa <bryan.garaventa@whatsock.com>, "T.V Raman" <raman@google.com>, "jongund@illinois.edu" <jongund@illinois.edu>, "jason@jasonjgw.net" <jason@jasonjgw.net>, "wai-xtech@w3.org" <wai-xtech@w3.org>, "w3c-wai-pf@w3.org WAI-PFWG" <w3c-wai-pf@w3.org>
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