Bug 117837

Summary: [Windows] AX: Radio buttons with "tab" role should describe themselves as tabs
Product: WebKit Reporter: Brent Fulgham <bfulgham>
Component: AccessibilityAssignee: Brent Fulgham <bfulgham>
Status: RESOLVED FIXED    
Severity: Normal CC: aboxhall, apinheiro, bfulgham, buildbot, cfleizach, commit-queue, dmazzoni, jdiggs, mario, rniwa
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Archive of layout-test-results from webkit-ews-06 for mac-mountainlion
none
Updated with Mac results
cfleizach: review+, buildbot: commit-queue-
Archive of layout-test-results from APPLE-EWS-4 for win-future none

Description Brent Fulgham 2013-06-20 10:39:07 PDT
The Windows accessibility layer is blindly reporting its accessibility role based on the specific rendering object used to implement the feature in the browser.  This breaks down in the specific case of a set of radio buttons contained in a 'role="tablist"' marked with an accessibility 'role="tab"'.  We should be speaking "tab" in this case, as that is the intent of the mark-up.

Currently we speak "radio button", which is inaccurate.
Comment 1 Brent Fulgham 2013-06-20 10:40:27 PDT
This is related to <rdar://problem/12476099>.
Comment 2 Brent Fulgham 2013-06-20 17:08:34 PDT
Before the attached patch, we would show the following result:
========================================================
Tab A  Tab B  Tab C
This tests that the aria roles for tab and tablist work as expected for buttons.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


tabList.role = page tab list
tab1.role = radio button
tab1.title = Tab A
PASS tab1.childrenCount is 0
tab2.role = radio button
tab2.title = Tab B
PASS successfullyParsed is true

TEST COMPLETE
========================================================
Tab A  Tab B  Tab C
This tests that the aria roles for tab and tablist work as expected for buttons.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


tabList.role = page tab list
tab1.role = page tab
tab1.title = Tab A
PASS tab1.childrenCount is 0
tab2.role = page tab
tab2.title = Tab B
PASS successfullyParsed is true

TEST COMPLETE
Comment 3 Brent Fulgham 2013-06-20 17:20:00 PDT
Created attachment 205131 [details]
Patch
Comment 4 chris fleizach 2013-06-20 17:50:43 PDT
Comment on attachment 205131 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=205131&action=review

> Source/WebCore/accessibility/AccessibilityNodeObject.h:103
> +    virtual bool canSetSelectedAttribute() const OVERRIDE;

I don't see anyone calling this method. Is it necessary?
Comment 5 Build Bot 2013-06-20 21:24:24 PDT
Comment on attachment 205131 [details]
Patch

Attachment 205131 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/918438

New failing tests:
accessibility/aria-tab-role-on-buttons.html
Comment 6 Build Bot 2013-06-20 21:24:25 PDT
Created attachment 205145 [details]
Archive of layout-test-results from webkit-ews-06 for mac-mountainlion

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: webkit-ews-06  Port: mac-mountainlion  Platform: Mac OS X 10.8.3
Comment 7 Brent Fulgham 2013-06-20 22:14:18 PDT
Created attachment 205147 [details]
Updated with Mac results
Comment 8 Brent Fulgham 2013-06-20 22:49:04 PDT
(In reply to comment #4)
> (From update of attachment 205131 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=205131&action=review
> 
> > Source/WebCore/accessibility/AccessibilityNodeObject.h:103
> > +    virtual bool canSetSelectedAttribute() const OVERRIDE;
> 
> I don't see anyone calling this method. Is it necessary?

Yes.  It's used by WebKit\win\AccessibleBase.cpp to expose the "Selectable" state to the accessibility layer.  Without this, NVDA and the accessibility inspector don't recognize that the tab pane is selectable, and don't properly support using the space bar to activate the tab.
Comment 9 Build Bot 2013-06-21 03:15:53 PDT
Comment on attachment 205147 [details]
Updated with Mac results

Attachment 205147 [details] did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/858835

New failing tests:
fast/frames/seamless/seamless-nested-crash.html
Comment 10 Build Bot 2013-06-21 03:15:55 PDT
Created attachment 205166 [details]
Archive of layout-test-results from APPLE-EWS-4 for win-future

The attached test failures were seen while running run-webkit-tests on the win-ews.
Bot: APPLE-EWS-4  Port: win-future  Platform: CYGWIN_NT-6.1-WOW64-1.7.20-0.266-5-3-i686-32bit
Comment 11 Brent Fulgham 2013-06-21 09:30:27 PDT
This EWS failure does not occur on local Windows builds.
Comment 12 Brent Fulgham 2013-06-21 09:37:05 PDT
Committed r151841: <http://trac.webkit.org/changeset/151841>