Closed
Bug 482258
Opened 15 years ago
Closed 15 years ago
ARIA controls with STATE_MIXED must not have STATE_CHECKED set also
Categories
(Core :: Disability Access APIs, defect)
Core
Disability Access APIs
Tracking
()
RESOLVED
FIXED
People
(Reporter: MarcoZ, Assigned: davidb)
References
(Blocks 1 open bug)
Details
(Keywords: access)
Attachments
(1 file, 2 obsolete files)
Right now, ARIA controls with aria-checked="mixed" get STATE_CHECKED set. This was uncovered in fix for bug 477975 through the change in nsAccessible::GetActionName, where "uncheck" would be exposed on something that was "only" aria-checked="mixed".
Reporter | ||
Comment 1•15 years ago
|
||
Assignee | ||
Comment 2•15 years ago
|
||
Marco, thanks for the tests, which pass now. I think this is the right fix. An alternative would be to check for ! "true", but that would miss some common (mis)use cases like checked="checked" etc. This fix is slightly less performant, but more robust.
Assignee: nobody → david.bolter
Status: NEW → ASSIGNED
Attachment #366325 -
Flags: review?(marco.zehe)
Reporter | ||
Comment 3•15 years ago
|
||
Comment on attachment 366325 [details] [diff] [review] patch 1 r=me, thanks!
Attachment #366325 -
Flags: review?(marco.zehe) → review+
Assignee | ||
Comment 4•15 years ago
|
||
Marco, push at will :) (Suite passes for me)
Attachment #366323 -
Attachment is obsolete: true
Attachment #366325 -
Attachment is obsolete: true
Comment 5•15 years ago
|
||
Comment on attachment 366332 [details] [diff] [review] patch to go in (includes small perf tweak for bug 477975) > case eCheckUncheckAction: >- if (states & nsIAccessibleStates::STATE_MIXED) >+ if (states & nsIAccessibleStates::STATE_CHECKED) >+ aName.AssignLiteral("uncheck"); >+ else if (states & nsIAccessibleStates::STATE_MIXED) > aName.AssignLiteral("cycle"); >- else if (states & nsIAccessibleStates::STATE_CHECKED) >- aName.AssignLiteral("uncheck"); if I get right this is perf twak, what is this more performant?
Comment 6•15 years ago
|
||
Comment on attachment 366332 [details] [diff] [review] patch to go in (includes small perf tweak for bug 477975) > if (aStateMapEntry->attributeValue == kBoolState) { > // No attribute value map specified in state map entry indicates state cleared >- if (attribValue.EqualsLiteral("false")) { >+ if (attribValue.EqualsLiteral("false") || >+ attribValue.EqualsLiteral("mixed")) { > *aStateInOut &= ~aStateMapEntry->state; it doesn't go well with ARIAMap: {&nsAccessibilityAtoms::aria_checked, kBoolState, nsIAccessibleStates::STATE_CHECKED}, {&nsAccessibilityAtoms::aria_checked, "mixed", nsIAccessibleStates::STATE_MIXED}, I would suggest to rethink this approach. Btw, who set STATE_CHECKED so that we are forced to remove this state?
Reporter | ||
Comment 7•15 years ago
|
||
Pushed on Davidb's behalf in changeset: http://hg.mozilla.org/mozilla-central/rev/9e485bb3604e
Status: ASSIGNED → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•