RESOLVED FIXED 120322
AX: Cancel button in search field not accessible.
https://bugs.webkit.org/show_bug.cgi?id=120322
Summary AX: Cancel button in search field not accessible.
Samuel White
Reported 2013-08-26 12:10:01 PDT
The cancel button that becomes visible when an input element of type 'search' has text in it is not accessible. <rdar://problem/14700018 >
Attachments
Preliminary patch for feedback. (14.84 KB, patch)
2013-08-26 16:50 PDT, Samuel White
eflews.bot: commit-queue-
Updated patch. (23.12 KB, patch)
2013-08-27 13:54 PDT, Samuel White
eflews.bot: commit-queue-
Fixing localization. (25.11 KB, patch)
2013-08-27 15:50 PDT, Samuel White
buildbot: commit-queue-
Updated patch with build fix. (25.26 KB, patch)
2013-08-28 11:06 PDT, Samuel White
no flags
Samuel White
Comment 1 2013-08-26 16:50:54 PDT
Created attachment 209692 [details] Preliminary patch for feedback. No review needed, just looking for feedback. Thanks. This button is rather hard to uniquely identify. For this patch I've used the shadowPseudoId which seems a bit fragile. Would adding isSearchFieldCancelButton() or something similar to Element be acceptable? I see other methods with this purpose: isFormControlElement isSpinButtonElement isTextFormControl I see that the way accessible text is derived is changing at some point (see the comment "Accessibility Text - (To be deprecated)" in AccessibilityObject.h). I've structured my implementation to satisfy all platforms (I believe) with the thought that the OVERRIDE macro will make sure my implementation is updated when this move finished. Thoughts?
Babak Shafiei
Comment 2 2013-08-26 16:52:21 PDT
chris fleizach
Comment 3 2013-08-26 17:10:49 PDT
Comment on attachment 209692 [details] Preliminary patch for feedback. View in context: https://bugs.webkit.org/attachment.cgi?id=209692&action=review where's the change log? also you need a layout test i've submitted to EWS so we'll find out which platforms break by not including the files in their make files > Source/WebCore/accessibility/AccessibilitySearchFieldButtons.cpp:52 > + if (!description.isEmpty()) since you know the description won't be empty (since it's a localized string) you could make this one line of code > Source/WebCore/accessibility/AccessibilitySearchFieldButtons.cpp:58 > + if (!m_renderer || !m_renderer->node() || !m_renderer->node()->isElementNode()) You should be able to ask for Node* node = this->node() directly and AXRenderObject should return m_renderer->node() for you if you cache that value you'll also save a few calls > Source/WebCore/accessibility/AccessibilitySearchFieldButtons.cpp:63 > + element->accessKeyAction(true); you should probably add a comment explaining why you need to call setHovered > Source/WebCore/accessibility/AccessibilitySearchFieldButtons.cpp:69 > + return ButtonRole; this can be moved into the header > Source/WebCore/accessibility/AccessibilitySearchFieldButtons.cpp:74 > + if (!m_renderer || !m_renderer->style() || m_renderer->style()->visibility() != VISIBLE) is this the default accessibilityIsIgnored value? is there a baseAccessibilityIsIgnored() that you can call?
chris fleizach
Comment 4 2013-08-26 17:11:33 PDT
Comment on attachment 209692 [details] Preliminary patch for feedback. otherwise looking good
EFL EWS Bot
Comment 5 2013-08-26 17:27:21 PDT
Comment on attachment 209692 [details] Preliminary patch for feedback. Attachment 209692 [details] did not pass efl-wk2-ews (efl-wk2): Output: http://webkit-queues.appspot.com/results/1586079
EFL EWS Bot
Comment 6 2013-08-26 17:33:26 PDT
Comment on attachment 209692 [details] Preliminary patch for feedback. Attachment 209692 [details] did not pass efl-ews (efl): Output: http://webkit-queues.appspot.com/results/1591089
kov's GTK+ EWS bot
Comment 7 2013-08-26 17:41:17 PDT
Comment on attachment 209692 [details] Preliminary patch for feedback. Attachment 209692 [details] did not pass gtk-ews (gtk): Output: http://webkit-queues.appspot.com/results/1584101
Build Bot
Comment 8 2013-08-27 03:15:35 PDT
Comment on attachment 209692 [details] Preliminary patch for feedback. Attachment 209692 [details] did not pass win-ews (win): Output: http://webkit-queues.appspot.com/results/1585223
Samuel White
Comment 9 2013-08-27 13:54:06 PDT
Created attachment 209796 [details] Updated patch. Thanks for the feedback Chris. I've updated the patch as requested with one exception about visibility. It looks to me like accessibilityIsIgnored calls into computeAccessibilityIsIgnored. So this seems like the correct place to make visibility additions.
chris fleizach
Comment 10 2013-08-27 14:33:42 PDT
Comment on attachment 209796 [details] Updated patch. View in context: https://bugs.webkit.org/attachment.cgi?id=209796&action=review > Source/WebCore/accessibility/AccessibilitySearchFieldButtons.cpp:69 > + if (!m_renderer || !m_renderer->style() || m_renderer->style()->visibility() != VISIBLE) i think this (visibility check) is already handled by accessibilityIsIgnoredByDefault(), which calls defaultObjectInclusion(), which has the appropriate check in AXRenderObject > LayoutTests/platform/mac/accessibility/search-field-cancel-button.html:21 > + accessibilityController.accessibleElementById("search").childAtIndex(1).press(); you should also output the role and role description for this object as part of your test > LayoutTests/platform/mac/accessibility/search-field-cancel-button.html:25 > + } i think you're missing a succesfullyParsed = true; call at the bottom. that should be present in other tests
EFL EWS Bot
Comment 11 2013-08-27 14:47:59 PDT
Comment on attachment 209796 [details] Updated patch. Attachment 209796 [details] did not pass efl-wk2-ews (efl-wk2): Output: http://webkit-queues.appspot.com/results/1628042
EFL EWS Bot
Comment 12 2013-08-27 14:55:55 PDT
Samuel White
Comment 13 2013-08-27 15:50:34 PDT
Created attachment 209815 [details] Fixing localization.
Samuel White
Comment 14 2013-08-27 15:51:48 PDT
(In reply to comment #10) > (From update of attachment 209796 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=209796&action=review > > > Source/WebCore/accessibility/AccessibilitySearchFieldButtons.cpp:69 > > + if (!m_renderer || !m_renderer->style() || m_renderer->style()->visibility() != VISIBLE) > > i think this (visibility check) is already handled by > accessibilityIsIgnoredByDefault(), which calls defaultObjectInclusion(), which has the appropriate check in AXRenderObject Good catch, thanks. > > > LayoutTests/platform/mac/accessibility/search-field-cancel-button.html:21 > > + accessibilityController.accessibleElementById("search").childAtIndex(1).press(); > > you should also output the role and role description for this object as part of your test > Added. > > LayoutTests/platform/mac/accessibility/search-field-cancel-button.html:25 > > + } > > i think you're missing a succesfullyParsed = true; call at the bottom. that should be present in other tests This is handled in the post script that runs.
chris fleizach
Comment 15 2013-08-27 15:53:04 PDT
Comment on attachment 209815 [details] Fixing localization. View in context: https://bugs.webkit.org/attachment.cgi?id=209815&action=review > LayoutTests/platform/mac/accessibility/search-field-cancel-button-expected.txt:8 > +PASS button.roleDescription is 'AXRoleDescription: button' And i forgot to say you should also output the description to ensure that it stays as cancel. pretty much any functionality you add we should test to ensure it doesn't break
Build Bot
Comment 16 2013-08-28 02:58:30 PDT
Comment on attachment 209815 [details] Fixing localization. Attachment 209815 [details] did not pass win-ews (win): Output: http://webkit-queues.appspot.com/results/1591528
Samuel White
Comment 17 2013-08-28 11:06:50 PDT
Created attachment 209905 [details] Updated patch with build fix. Updated layout test and fixed build issue (hopefully). Will mark for review if everything is green.
WebKit Commit Bot
Comment 18 2013-08-28 15:18:20 PDT
Comment on attachment 209905 [details] Updated patch with build fix. Clearing flags on attachment: 209905 Committed r154778: <http://trac.webkit.org/changeset/154778>
WebKit Commit Bot
Comment 19 2013-08-28 15:18:24 PDT
All reviewed patches have been landed. Closing bug.
David Kilzer (:ddkilzer)
Comment 20 2013-08-29 08:46:32 PDT
(In reply to comment #18) > (From update of attachment 209905 [details]) > Clearing flags on attachment: 209905 > > Committed r154778: <http://trac.webkit.org/changeset/154778> iOS build fix in r154812: <http://trac.webkit.org/r154812>
Note You need to log in before you can comment on or make changes to this bug.