Closed
Bug 1136563
Opened 10 years ago
Closed 10 years ago
ARIA 1.1: Add support for 'switch' role
Categories
(Core :: Disability Access APIs, defect)
Core
Disability Access APIs
Tracking
()
RESOLVED
FIXED
mozilla39
People
(Reporter: MarcoZ, Assigned: MarcoZ)
References
(Blocks 1 open bug)
Details
(Keywords: dev-doc-complete)
Attachments
(1 file, 1 obsolete file)
(deleted),
patch
|
surkov
:
review+
|
Details | Diff | Splinter Review |
ARIA 1.1 gets a new role 'switch' that needs to be supported:
http://rawgit.com/w3c/aria/master/aria/aria.html#switch
Joanie just landed support for it in Webkit:
http://trac.webkit.org/changeset/180600
Assignee | ||
Comment 1•10 years ago
|
||
Mapped switch to toggle_button role, made it react to aria-checked without the "mixed" part, and check for actions and events as well as roles and expected states.
I realize that there are differences to the traditional toggle_button implementation that you get when you add aria-pressed to a html:button element, for example, and these are intentional. For one, aria-pressed is not mentioned in the specification, but aria-checked is. Second, mixed state is not supported, which is logical. And third, I decided to go with the checked/checkable stuff to be consistent with aria-checked. It felt totally wrong to map aria-checked to pressed states in this scenario.
Assignee: nobody → mzehe
Status: NEW → ASSIGNED
Attachment #8569108 -
Flags: review?(surkov.alexander)
Assignee | ||
Comment 2•10 years ago
|
||
Comment 3•10 years ago
|
||
I suggest to add SWITCH role to internal layer that is mapped to TOGGLE_BUTTON on ATK and IA2 and to AXCheckBox on OS X. Also OS X it should have AXSwitch subrole [1] per [2].
Otherwise it's good. (I don't see aria-readonly in the spec which should be considered as a bug I think)
[1] https://www.w3.org/WAI/PF/Group/track/actions/1563
[2] http://mxr.mozilla.org/mozilla-central/source/accessible/mac/mozAccessible.mm#428
Comment 4•10 years ago
|
||
Comment on attachment 8569108 [details] [diff] [review]
Patch
Review of attachment 8569108 [details] [diff] [review]:
-----------------------------------------------------------------
::: dom/base/nsGkAtomList.h
@@ +2296,5 @@
> GK_ATOM(setsize, "setsize")
> GK_ATOM(spelling, "spelling")
> GK_ATOM(spinbutton, "spinbutton")
> GK_ATOM(status, "status")
> +GK_ATOM(switchrole, "switch")
I think it should be "_switch" similar to "_false" for "_for". I can see "svgSwitch" but that's rather bad naming (if nothing has been changed)
Assignee | ||
Comment 5•10 years ago
|
||
Added new role and mappings for it and the subrole (for Mac), adjusted the constant in NSGKAtoms.
Attachment #8569108 -
Attachment is obsolete: true
Attachment #8569108 -
Flags: review?(surkov.alexander)
Attachment #8569338 -
Flags: review?(surkov.alexander)
Comment 6•10 years ago
|
||
Comment on attachment 8569338 [details] [diff] [review]
Patch v2
Review of attachment 8569338 [details] [diff] [review]:
-----------------------------------------------------------------
awesome! thanks, Marco! r=me
::: accessible/base/RoleMap.h
@@ +1059,5 @@
> +ROLE(SWITCH,
> + "switch",
> + ATK_ROLE_TOGGLE_BUTTON,
> + NSAccessibilityCheckBoxRole,
> + ROLE_SYSTEM_PUSHBUTTON,
not big deal but probably ROLE_SYSTEM_CHECKBUTTON would be more reasonable than pushbutton for MSAA
@@ +1061,5 @@
> + ATK_ROLE_TOGGLE_BUTTON,
> + NSAccessibilityCheckBoxRole,
> + ROLE_SYSTEM_PUSHBUTTON,
> + IA2_ROLE_TOGGLE_BUTTON,
> + eNameFromSubtreeRule)
I see we do that for checkbox as well but it's a bit weird since they don't really have name valueable subtrees.
::: accessible/tests/mochitest/role/test_aria.html
@@ +181,5 @@
> </a>
> + <a target="_blank"
> + href="https://bugzilla.mozilla.org/show_bug.cgi?id=1136563"
> + title="Support ARIA 1.1 switch role"
> + Mozilla Bug 1136563
nit: no 'Mozilla' please
::: accessible/tests/mochitest/states/test_aria.html
@@ +92,5 @@
> // aria-checked
> testStates("aria_checked_checkbox", STATE_CHECKED);
> testStates("aria_mixed_checkbox", STATE_MIXED);
> + testStates("aria_checked_switch", STATE_CHECKED);
> + testStates("aria_mixed_switch", 0, 0, STATE_MIXED); // unsupported
side comment: I think it is mapped to STATE_CHECKED, that doesn't go with spec
Attachment #8569338 -
Flags: review?(surkov.alexander) → review+
Updated•10 years ago
|
Keywords: dev-doc-needed
Assignee | ||
Comment 7•10 years ago
|
||
(In reply to alexander :surkov from comment #6)
> not big deal but probably ROLE_SYSTEM_CHECKBUTTON would be more reasonable
> than pushbutton for MSAA
Done.
> @@ +1061,5 @@
> > + ATK_ROLE_TOGGLE_BUTTON,
> > + NSAccessibilityCheckBoxRole,
> > + ROLE_SYSTEM_PUSHBUTTON,
> > + IA2_ROLE_TOGGLE_BUTTON,
> > + eNameFromSubtreeRule)
>
> I see we do that for checkbox as well but it's a bit weird since they don't
> really have name valueable subtrees.
Filed bug 1137146 for this since it's a separate bug with its own scope.
> ::: accessible/tests/mochitest/states/test_aria.html
> @@ +92,5 @@
> > // aria-checked
> > testStates("aria_checked_checkbox", STATE_CHECKED);
> > testStates("aria_mixed_checkbox", STATE_MIXED);
> > + testStates("aria_checked_switch", STATE_CHECKED);
> > + testStates("aria_mixed_switch", 0, 0, STATE_MIXED); // unsupported
>
> side comment: I think it is mapped to STATE_CHECKED, that doesn't go with
> spec
Confirmed. I thought the eARIACheckableBool state type took care of this? I mean why else would we have an item for "mixed" as well? Do radio and menuitemradio roles suffer from the same problem? How do we solve it?
http://mxr.mozilla.org/mozilla-central/source/accessible/base/ARIAStateMap.cpp#118
Assignee | ||
Updated•10 years ago
|
Flags: needinfo?(surkov.alexander)
Comment 8•10 years ago
|
||
(In reply to Marco Zehe (:MarcoZ) from comment #7)
> Confirmed. I thought the eARIACheckableBool state type took care of this? I
> mean why else would we have an item for "mixed" as well? Do radio and
> menuitemradio roles suffer from the same problem? How do we solve it?
> http://mxr.mozilla.org/mozilla-central/source/accessible/base/ARIAStateMap.
> cpp#118
same problem, we don't follow the spec here. I filed an ARIA thread [1] btw, so that's a separate issue I think.
[1] https://lists.w3.org/Archives/Public/public-pfwg/2015Feb/0117.html
Flags: needinfo?(surkov.alexander)
Assignee | ||
Comment 9•10 years ago
|
||
OK I'll just land it with the nits/MSAA role fixed, then.
Assignee | ||
Comment 10•10 years ago
|
||
Flags: in-testsuite+
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
status-firefox39:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla39
Release Note Request (optional, but appreciated)
[Why is this notable]: Useful support for screen readers
[Suggested wording]: Support for 'switch' role in ARIA 1.1
[Links (documentation, blog post, etc)]: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA
Marco, if you have suggestions for better wording for this release note, need-info me. Thanks!
relnote-firefox:
--- → 39+
Flags: needinfo?(mzehe)
Comment 14•9 years ago
|
||
I've added a brief page about switch here:
https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_switch_role
but in the future we'll have to look at restructuring the ARIA docs and improving things.
Keywords: dev-doc-needed → dev-doc-complete
You need to log in
before you can comment on or make changes to this bug.
Description
•