AX: [GTK] Implement computedRoleString in AccessibilityUIElement
authorjdiggs@igalia.com <jdiggs@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 22 May 2015 06:12:05 +0000 (06:12 +0000)
committerjdiggs@igalia.com <jdiggs@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 22 May 2015 06:12:05 +0000 (06:12 +0000)
https://bugs.webkit.org/show_bug.cgi?id=128420

Reviewed by Chris Fleizach.

Source/WebCore:

Expose all ARIA roles (not just landmark-related roles) via an "xml-roles" AtkObject
attribute as per http://www.w3.org/TR/core-aam-1.1/#roleMappingGeneralRules

Expose non-empty computed role strings via AtkObject attribute named "computed-role".
Currently the computed role and the ARIA role value happen to be the same string, but
that might not always be the case. And AtkObject attributes are cheap.

Test: platform/gtk/accessibility/xml-roles-exposed.html.

* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(webkitAccessibleGetAttributes):

Tools:

* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::computedRoleString): Implemented.

LayoutTests:

* platform/gtk/TestExpectations: Removed roles-computedRoleString from the failing test.
* platform/gtk/accessibility/image-link-expected.txt: Updated to reflect the new object attribute.
* platform/gtk/accessibility/image-map2-expected.txt: Updated to reflect the new object attribute.
* platform/gtk/accessibility/lists-expected.txt: Updated to reflect the new object attribute.
* platform/gtk/accessibility/roles-computedRoleString-expected.txt: Added.
* platform/gtk/accessibility/table-attributes-expected.txt: Updated to reflect the new object attribute.
* platform/gtk/accessibility/table-cell-spans-expected.txt: Updated to reflect the new object attribute.
* platform/gtk/accessibility/table-cells-expected.txt: Updated to reflect the new object attribute.
* platform/gtk/accessibility/table-detection-expected.txt: Updated to reflect the new object attribute.
* platform/gtk/accessibility/table-sections-expected.txt: Updated to reflect the new object attribute.
* platform/gtk/accessibility/table-with-rules-expected.txt: Updated to reflect the new object attribute.
* platform/gtk/accessibility/xml-roles-exposed-expected.txt: Added.
* platform/gtk/accessibility/xml-roles-exposed.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@184754 268f45cc-cd09-0410-ab3c-d52691b4dbfc

18 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/gtk/TestExpectations
LayoutTests/platform/gtk/accessibility/image-link-expected.txt
LayoutTests/platform/gtk/accessibility/image-map2-expected.txt
LayoutTests/platform/gtk/accessibility/lists-expected.txt
LayoutTests/platform/gtk/accessibility/roles-computedRoleString-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/accessibility/table-attributes-expected.txt
LayoutTests/platform/gtk/accessibility/table-cell-spans-expected.txt
LayoutTests/platform/gtk/accessibility/table-cells-expected.txt
LayoutTests/platform/gtk/accessibility/table-detection-expected.txt
LayoutTests/platform/gtk/accessibility/table-sections-expected.txt
LayoutTests/platform/gtk/accessibility/table-with-rules-expected.txt
LayoutTests/platform/gtk/accessibility/xml-roles-exposed-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/accessibility/xml-roles-exposed.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp
Tools/ChangeLog
Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp

index e73f50f..7ce94b9 100644 (file)
@@ -1,3 +1,24 @@
+2015-05-21  Joanmarie Diggs  <jdiggs@igalia.com>
+
+        AX: [GTK] Implement computedRoleString in AccessibilityUIElement
+        https://bugs.webkit.org/show_bug.cgi?id=128420
+
+        Reviewed by Chris Fleizach.
+
+        * platform/gtk/TestExpectations: Removed roles-computedRoleString from the failing test.
+        * platform/gtk/accessibility/image-link-expected.txt: Updated to reflect the new object attribute.
+        * platform/gtk/accessibility/image-map2-expected.txt: Updated to reflect the new object attribute.
+        * platform/gtk/accessibility/lists-expected.txt: Updated to reflect the new object attribute.
+        * platform/gtk/accessibility/roles-computedRoleString-expected.txt: Added.
+        * platform/gtk/accessibility/table-attributes-expected.txt: Updated to reflect the new object attribute.
+        * platform/gtk/accessibility/table-cell-spans-expected.txt: Updated to reflect the new object attribute.
+        * platform/gtk/accessibility/table-cells-expected.txt: Updated to reflect the new object attribute.
+        * platform/gtk/accessibility/table-detection-expected.txt: Updated to reflect the new object attribute.
+        * platform/gtk/accessibility/table-sections-expected.txt: Updated to reflect the new object attribute.
+        * platform/gtk/accessibility/table-with-rules-expected.txt: Updated to reflect the new object attribute.
+        * platform/gtk/accessibility/xml-roles-exposed-expected.txt: Added.
+        * platform/gtk/accessibility/xml-roles-exposed.html: Added.
+
 2015-05-21  Antti Koivisto  <antti@apple.com>
 
         MaskImageOperation code does not manage CachedImageClients correctly
index 6f42244..f229fa5 100644 (file)
@@ -1820,8 +1820,6 @@ webkit.org/b/39725 fast/events/drag-and-drop-autoscroll.html [ Skip ]
 # Leaking state into the next test.
 #webkit.org/b/85522 http/tests/security/sandboxed-iframe-form-top.html [ Skip ]
 
-webkit.org/b/128420 accessibility/roles-computedRoleString.html [ Skip ]
-
 webkit.org/b/103927 http/tests/w3c/webperf/submission/Intel/resource-timing/test_resource_timing_cross_origin_resource_request.html [ Failure ]
 webkit.org/b/103927 http/tests/w3c/webperf/submission/Intel/resource-timing/test_resource_timing_timing_allow_cross_origin_resource_request.html [ Failure ]
 webkit.org/b/103927 http/tests/w3c/webperf/submission/Google/resource-timing/html/test_resource_attribute_order.html [ Failure ]
index a83f7bc..e4ff3d8 100644 (file)
@@ -21,7 +21,7 @@ AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
 AXURL: http://www.wowhead.com/?item=33924
-AXPlatformAttributes: html-id:test, toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:link, html-id:test, toolkit:WebKitGtk
 
 Child 0:
 AXRole: AXImage
@@ -41,6 +41,6 @@ AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
 AXURL: LayoutTests/accessibility/resources/cake.png
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:img, toolkit:WebKitGtk
 
 
index 74fd194..a635918 100644 (file)
@@ -37,7 +37,7 @@ AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
 AXURL: http://www.apple.com/
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:link, toolkit:WebKitGtk
 ------------
 AXRole: AXLink
 AXParent: AXWebArea
@@ -57,7 +57,7 @@ AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
 AXURL: http://www.apple.com/
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:link, toolkit:WebKitGtk
 ------------
 
 
index 4afc12c..3ace804 100644 (file)
@@ -27,7 +27,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:list, toolkit:WebKitGtk
 ------------
 AXRole: AXList
 AXParent: AXWebArea
@@ -45,7 +45,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:list, toolkit:WebKitGtk
 ------------
 AXRole: AXDescriptionList
 AXParent: AXWebArea
@@ -82,7 +82,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:group, toolkit:WebKitGtk
 ------------
 
 
@@ -103,7 +103,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:listitem, toolkit:WebKitGtk
 ------------
 AXRole: AXListItem
 AXParent: AXList
@@ -122,7 +122,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:listitem, toolkit:WebKitGtk
 ------------
 
 
@@ -143,7 +143,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:listitem, toolkit:WebKitGtk
 ------------
 AXRole: AXListItem
 AXParent: AXList
@@ -162,7 +162,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:listitem, toolkit:WebKitGtk
 ------------
 
 
diff --git a/LayoutTests/platform/gtk/accessibility/roles-computedRoleString-expected.txt b/LayoutTests/platform/gtk/accessibility/roles-computedRoleString-expected.txt
new file mode 100644 (file)
index 0000000..5309f58
--- /dev/null
@@ -0,0 +1,171 @@
+ X
+This tests that native elements and ARIA overrides result in the same ARIA computed role, regardless of platform.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS: a[href] -> link. 
+PASS: article -> article. 
+PASS: aside -> complementary. 
+PASS: button -> button. 
+PASS: dfn -> definition. 
+PASS: dl -> . 
+PASS: footer -> . 
+PASS: form -> form. 
+PASS: header -> banner. 
+PASS: h1 -> heading. 
+PASS: h2 -> heading. 
+PASS: h3 -> heading. 
+PASS: h4 -> heading. 
+PASS: h5 -> heading. 
+PASS: h5 -> heading. 
+PASS: hr -> separator. 
+PASS: img[alt='X'] -> img. 
+PASS: input[type='button'] -> button. 
+PASS: input[type='checkbox'] -> checkbox. 
+PASS: input[type='date'] -> . 
+PASS: input[type='datetime'] -> . 
+PASS: input[type='datetime-local'] -> . 
+PASS: input[type='email'] -> . 
+PASS: input[type='file'] -> button. 
+PASS: input[type='image'] -> button. 
+PASS: input[type='month'] -> . 
+PASS: input[type='number'] -> . 
+PASS: input[type='password'] -> . 
+PASS: input[type='radio'] -> radio. 
+PASS: input[type='range'] -> slider. 
+PASS: input[type='reset'] -> button. 
+PASS: input[type='search'] -> searchbox. 
+PASS: input[type='submit'] -> button. 
+PASS: input[type='tel'] -> . 
+PASS: input[type='text'] -> . 
+PASS: input[type='time'] -> . 
+PASS: input[type='url'] -> . 
+PASS: input[type='week'] -> . 
+PASS: math -> math. 
+PASS: meter -> progressbar. 
+PASS: nav -> navigation. 
+PASS: ol -> list. 
+PASS: li -> listitem. 
+PASS: p -> . 
+PASS: pre -> . 
+PASS: progress -> progressbar. 
+PASS: section -> region. 
+PASS: select:not([multiple]) -> . 
+PASS: option -> . 
+PASS: option -> . 
+PASS: select[multiple] -> listbox. 
+PASS: option -> option. 
+PASS: optgroup -> option. 
+PASS: option -> option. 
+PASS: option -> option. 
+PASS: table -> grid. 
+PASS: caption -> . 
+PASS: tr -> row. 
+PASS: th -> columnheader. 
+PASS: tr -> row. 
+PASS: td -> gridcell. 
+PASS: tr -> row. 
+PASS: td -> gridcell. 
+PASS: textarea -> textbox. 
+PASS: ul -> list. 
+PASS: li -> listitem. 
+PASS: div[role="command"] -> . 
+PASS: div[role="composite"] -> . 
+PASS: div[role="input"] -> . 
+PASS: div[role="landmark"] -> . 
+PASS: div[role="range"] -> . 
+PASS: div[role="roletype"] -> . 
+PASS: div[role="section"] -> . 
+PASS: div[role="sectionhead"] -> . 
+PASS: div[role="select"] -> . 
+PASS: div[role="structure"] -> . 
+PASS: div[role="widget"] -> . 
+PASS: div[role="window"] -> . 
+PASS: div[role="alert"] -> alert. 
+PASS: div[role="alertdialog"] -> alertdialog. 
+PASS: div[role="application"] -> application. 
+PASS: div[role="article"] -> article. 
+PASS: div[role="banner"] -> banner. 
+PASS: div[role="button"] -> button. 
+PASS: div[role="checkbox"] -> checkbox. 
+PASS: div[role="combobox"] -> combobox. 
+PASS: div[role="complementary"] -> complementary. 
+PASS: div[role="contentinfo"] -> contentinfo. 
+PASS: div[role="definition"] -> definition. 
+PASS: div[role="dialog"] -> dialog. 
+PASS: div[role="directory"] -> list. 
+PASS: div[role="document"] -> document. 
+PASS: div[role="form"] -> form. 
+PASS: div[role="grid"] -> grid. 
+PASS: div[role="row"] -> row. 
+PASS: div[role="rowheader"] -> rowheader. 
+PASS: div[role="columnheader"] -> columnheader. 
+PASS: div[role="gridcell"] -> gridcell. 
+PASS: div[role="group"] -> group. 
+PASS: div[role="heading"] -> heading. 
+PASS: div[role="img"] -> img. 
+PASS: div[role="link"] -> link. 
+PASS: div[role="list"] -> list. 
+PASS: div[role="listitem"] -> listitem. 
+PASS: div[role="listbox"] -> listbox. 
+PASS: div[role="option"] -> option. 
+PASS: div[role="log"] -> log. 
+PASS: div[role="main"] -> main. 
+PASS: div[role="marquee"] -> marquee. 
+PASS: div[role="math"] -> math. 
+PASS: div[role="menu"] -> menu. 
+PASS: div[role="menuitem"] -> menuitem. 
+PASS: div[role="menuitemcheckbox"] -> menuitemcheckbox. 
+PASS: div[role="menuitemradio"] -> menuitemradio. 
+PASS: div[role="menubar"] -> menubar. 
+PASS: div[role="menuitem"] -> menuitem. 
+PASS: div[role="menuitemcheckbox"] -> menuitemcheckbox. 
+PASS: div[role="menuitemradio"] -> menuitemradio. 
+PASS: div[role="navigation"] -> navigation. 
+PASS: div[role="note"] -> note. 
+PASS: div[role="progressbar"] -> progressbar. 
+PASS: div[role="radiogroup"] -> radiogroup. 
+PASS: div[role="radio"] -> radio. 
+PASS: div[role="region"] -> region. 
+PASS: div[role="scrollbar"] -> scrollbar. 
+PASS: div[role="search"] -> search. 
+PASS: div[role="separator"] -> separator. 
+PASS: div[role="slider"] -> slider. 
+PASS: div[role="spinbutton"] -> spinbutton. 
+PASS: div[role="status"] -> status. 
+PASS: div[role="tablist"] -> tablist. 
+PASS: div[role="tab"] -> tab. 
+PASS: div[role="tabpanel"] -> tabpanel. 
+PASS: div[role="textbox"] -> . 
+PASS: div[role="timer"] -> timer. 
+PASS: div[role="toolbar"] -> toolbar. 
+PASS: div[role="tooltip"] -> tooltip. 
+PASS: div[role="tree"] -> tree. 
+PASS: div[role="treeitem"] -> treeitem. 
+PASS: div[role="treeitem"] -> treeitem. 
+PASS: div[role="treegrid"] -> grid. 
+PASS: div[role="row"] -> row. 
+PASS: div[role="rowheader"] -> rowheader. 
+PASS: div[role="columnheader"] -> columnheader. 
+PASS: div[role="gridcell"] -> gridcell. 
+PASS: div[role="button foo"] -> button. 
+PASS: div[role="foo button bar"] -> button. 
+PASS: div[role="foo  button  bar"] -> button. 
+PASS: div[role="foo    button  bar"] -> . 
+PASS: div[role="foo
+button
+bar"] -> . 
+PASS: img[role="foo"] -> img. 
+PASS: img[role="foo bar"] -> img. 
+PASS: img[role="foo  bar"] -> img. 
+PASS: img[role="foo    bar"] -> img. 
+PASS: img[role="foo    
+bar"] -> img. 
+PASS: img[role="img text"] -> img. 
+PASS: img[role="presentation"][aria-label] -> img. 
+PASS: a[role="foo bar"] -> link. 
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
index 79a3661..7109445 100644 (file)
@@ -25,7 +25,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -44,7 +44,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -63,7 +63,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -82,7 +82,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -101,7 +101,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 
 
@@ -124,7 +124,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -143,7 +143,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXRowHeader
 AXParent: AXRow
@@ -162,7 +162,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:rowheader, toolkit:WebKitGtk
 ------------
 AXRole: AXRowHeader
 AXParent: AXRow
@@ -181,7 +181,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:rowheader, toolkit:WebKitGtk
 ------------
 
 
@@ -212,7 +212,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -231,7 +231,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -250,7 +250,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -269,7 +269,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -288,7 +288,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -307,7 +307,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -326,7 +326,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -345,7 +345,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -364,7 +364,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -383,7 +383,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXRowHeader
 AXParent: AXRow
@@ -402,7 +402,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:rowheader, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -421,7 +421,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -440,7 +440,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -459,7 +459,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -478,7 +478,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXRowHeader
 AXParent: AXRow
@@ -497,7 +497,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:rowheader, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -516,7 +516,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -535,7 +535,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -554,7 +554,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -573,7 +573,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 
 
index 31327b1..adac3c5 100644 (file)
@@ -25,7 +25,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 {0, 2}, {0, 2}
 
 ----------------------
@@ -47,7 +47,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 {0, 2}, {0, 2}
 
 ----------------------
@@ -69,7 +69,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 {2, 2}, {0, 1}
 
 ----------------------
@@ -91,7 +91,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 {2, 2}, {0, 1}
 
 ----------------------
@@ -113,7 +113,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 {2, 1}, {3, 1}
 
 ----------------------
index 44ffd74..df2b73a 100644 (file)
@@ -27,7 +27,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------------------
 [3,1]
 AXRole: AXCell
@@ -47,7 +47,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------------------
 [1,1]
 AXRole: AXColumnHeader
@@ -67,7 +67,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------------------
 [2,2]
 AXRole: AXCell
@@ -87,7 +87,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------------------
 [3,5]
 AXRole: AXCell
@@ -107,7 +107,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------------------
 [100,0]
 
index b1242af..5a9dbfd 100644 (file)
@@ -17,7 +17,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, toolkit:WebKitGtk
 
 asdf   asdf
 asdf   asdf
@@ -40,7 +40,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, toolkit:WebKitGtk
 
 asdf   asdf
 
@@ -85,7 +85,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, toolkit:WebKitGtk
 
 asdf   asdf
 
@@ -107,7 +107,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, toolkit:WebKitGtk
 
 asdf   asdf
 
@@ -129,7 +129,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, toolkit:WebKitGtk
 
 asdf   asdf
 asdf   asdf
@@ -152,7 +152,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, toolkit:WebKitGtk
 
 asdf   asdf
 
@@ -220,7 +220,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, toolkit:WebKitGtk
 
 asdf   asdf
 
@@ -294,7 +294,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, toolkit:WebKitGtk
 
 asdf   asdf
 
@@ -316,7 +316,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, toolkit:WebKitGtk
 
 asdf   asdf
 asdf   asdf
@@ -363,7 +363,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, toolkit:WebKitGtk
 
 asdf   asdf
 asdf
@@ -387,7 +387,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, toolkit:WebKitGtk
 
 asdf   asdf
 asdf
@@ -411,7 +411,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, toolkit:WebKitGtk
 
 asdf   asdf
 asdf   asdf
@@ -434,7 +434,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, toolkit:WebKitGtk
 
 asdf
 asdf
@@ -479,7 +479,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, toolkit:WebKitGtk
 
 head   head2
 asdf   asdf
index 620eff1..48ae5b3 100644 (file)
@@ -34,7 +34,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -53,7 +53,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -72,7 +72,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 
 
@@ -95,7 +95,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXRowHeader
 AXParent: AXRow
@@ -114,7 +114,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:rowheader, toolkit:WebKitGtk
 ------------
 AXRole: AXRowHeader
 AXParent: AXRow
@@ -133,7 +133,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:rowheader, toolkit:WebKitGtk
 ------------
 
 AXParent: (null)
@@ -180,7 +180,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -199,7 +199,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -218,7 +218,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXRowHeader
 AXParent: AXRow
@@ -237,7 +237,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:rowheader, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -256,7 +256,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -275,7 +275,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXRowHeader
 AXParent: AXRow
@@ -294,7 +294,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:rowheader, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -313,7 +313,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -332,7 +332,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -351,7 +351,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -370,7 +370,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -389,7 +389,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 
 
@@ -420,7 +420,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -439,7 +439,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -458,7 +458,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 
 
@@ -481,7 +481,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXRowHeader
 AXParent: AXRow
@@ -500,7 +500,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:rowheader, toolkit:WebKitGtk
 ------------
 AXRole: AXRowHeader
 AXParent: AXRow
@@ -519,7 +519,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:rowheader, toolkit:WebKitGtk
 ------------
 
 AXParent: (null)
@@ -566,7 +566,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXColumnHeader
 AXParent: AXRow
@@ -585,7 +585,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:columnheader, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -604,7 +604,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXRowHeader
 AXParent: AXRow
@@ -623,7 +623,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:rowheader, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -642,7 +642,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -661,7 +661,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXRowHeader
 AXParent: AXRow
@@ -680,7 +680,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:rowheader, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -699,7 +699,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -718,7 +718,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -737,7 +737,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -756,7 +756,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 AXRole: AXCell
 AXParent: AXRow
@@ -775,7 +775,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:gridcell, toolkit:WebKitGtk
 ------------
 
 
index 97168c4..5be4842 100644 (file)
@@ -21,7 +21,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: html-id:testTable2, toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, html-id:testTable2, toolkit:WebKitGtk
 
 AXRole: AXTable
 AXParent: AXWebArea
@@ -39,7 +39,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: html-id:testTable3, toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, html-id:testTable3, toolkit:WebKitGtk
 
 AXRole: AXTable
 AXParent: AXWebArea
@@ -57,7 +57,7 @@ AXEnabled: 1
 AXExpanded: 0
 AXRequired: 0
 AXChecked: 0
-AXPlatformAttributes: html-id:testTable4, toolkit:WebKitGtk
+AXPlatformAttributes: computed-role:grid, html-id:testTable4, toolkit:WebKitGtk
 
 AXRole: AXSection
 AXParent: AXWebArea
diff --git a/LayoutTests/platform/gtk/accessibility/xml-roles-exposed-expected.txt b/LayoutTests/platform/gtk/accessibility/xml-roles-exposed-expected.txt
new file mode 100644 (file)
index 0000000..1ceb9d4
--- /dev/null
@@ -0,0 +1,791 @@
+
+Verify exposure of ARIA role values via the 'xml-roles' object attribute.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+AXRole: AXAlert
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:alert, xml-roles:alert, toolkit:WebKitGtk
+------------
+AXRole: AXAlert
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:alertdialog, xml-roles:alertdialog, toolkit:WebKitGtk
+------------
+AXRole: AXEmbedded
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:application, xml-roles:application, toolkit:WebKitGtk
+------------
+AXRole: AXArticle
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:article, xml-roles:article, toolkit:WebKitGtk
+------------
+AXRole: AXLandmarkBanner
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:banner, xml-roles:banner, toolkit:WebKitGtk
+------------
+AXRole: AXButton
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:button, xml-roles:button, toolkit:WebKitGtk
+------------
+AXRole: AXCheckBox
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:checkbox, xml-roles:checkbox, toolkit:WebKitGtk
+------------
+AXRole: AXComboBox
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:combobox, xml-roles:combobox, toolkit:WebKitGtk
+------------
+AXRole: AXLandmarkComplementary
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:complementary, xml-roles:complementary, toolkit:WebKitGtk
+------------
+AXRole: AXLandmarkContentInfo
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:contentinfo, xml-roles:contentinfo, toolkit:WebKitGtk
+------------
+AXRole: AXDefinition
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:definition, xml-roles:definition, toolkit:WebKitGtk
+------------
+AXRole: AXDialog
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:dialog, xml-roles:dialog, toolkit:WebKitGtk
+------------
+AXRole: AXList
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:list, xml-roles:list, toolkit:WebKitGtk
+------------
+AXRole: AXDocument
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:document, xml-roles:document, toolkit:WebKitGtk
+------------
+AXRole: AXForm
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:form, xml-roles:form, toolkit:WebKitGtk
+------------
+AXRole: AXGroup
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:group, xml-roles:group, toolkit:WebKitGtk
+------------
+AXRole: AXHeading
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:heading, xml-roles:heading, toolkit:WebKitGtk
+------------
+AXRole: AXImage
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:img, xml-roles:img, toolkit:WebKitGtk
+------------
+AXRole: AXLink
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXURL: (null)
+AXPlatformAttributes: computed-role:link, xml-roles:link, toolkit:WebKitGtk
+------------
+AXRole: AXLog
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:log, xml-roles:log, toolkit:WebKitGtk
+------------
+AXRole: AXLandmarkMain
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:main, xml-roles:main, toolkit:WebKitGtk
+------------
+AXRole: AXMarquee
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:marquee, xml-roles:marquee, toolkit:WebKitGtk
+------------
+AXRole: AXMath
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:math, xml-roles:math, toolkit:WebKitGtk
+------------
+AXRole: AXLandmarkNavigation
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:navigation, xml-roles:navigation, toolkit:WebKitGtk
+------------
+AXRole: AXComment
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:note, xml-roles:note, toolkit:WebKitGtk
+------------
+AXRole: AXProgressIndicator
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:progressbar, xml-roles:progressbar, toolkit:WebKitGtk
+------------
+AXRole: AXRadioButton
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 1
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:radio, xml-roles:radio, toolkit:WebKitGtk
+------------
+AXRole: AXGroup
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:region, xml-roles:region, toolkit:WebKitGtk
+------------
+AXRole: AXScrollBar
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:scrollbar, xml-roles:scrollbar, toolkit:WebKitGtk
+------------
+AXRole: AXLandmarkSearch
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:search, xml-roles:search, toolkit:WebKitGtk
+------------
+AXRole: AXTextField
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:searchbox, xml-roles:searchbox, toolkit:WebKitGtk
+------------
+AXRole: AXSeparator
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:separator, xml-roles:separator, toolkit:WebKitGtk
+------------
+AXRole: AXSlider
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:slider, xml-roles:slider, toolkit:WebKitGtk
+------------
+AXRole: AXSpinButton
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:spinbutton, xml-roles:spinbutton, toolkit:WebKitGtk
+------------
+AXRole: AXStatusBar
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:status, xml-roles:status, toolkit:WebKitGtk
+------------
+AXRole: AXToggleButton
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:switch, xml-roles:switch, toolkit:WebKitGtk
+------------
+AXRole: AXTextField
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: toolkit:WebKitGtk
+------------
+AXRole: AXTimer
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:timer, xml-roles:timer, toolkit:WebKitGtk
+------------
+AXRole: AXToolbar
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:toolbar, xml-roles:toolbar, toolkit:WebKitGtk
+------------
+AXRole: AXUserInterfaceTooltip
+AXParent: AXWebArea
+AXChildren: 0
+AXPosition: { 0.000000, 0.000000 }
+AXSize: { 0.000000, 0.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocusable: 0
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: computed-role:tooltip, xml-roles:tooltip, toolkit:WebKitGtk
+------------
+AXRole: AXParagraph
+AXParent: AXWebArea
+AXChildren: 2
+AXPosition: { 8.000000, 8.000000 }
+AXSize: { 784.000000, 50.000000 }
+AXTitle: 
+AXDescription: 
+AXValue: Verify exposure of ARIA role values via the 'xml-roles' object attribute.<\n><\n>On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".<\n><\n><\n>
+AXFocusable: 1
+AXFocused: 0
+AXSelectable: 0
+AXSelected: 0
+AXMultiSelectable: 0
+AXEnabled: 1
+AXExpanded: 0
+AXRequired: 0
+AXChecked: 0
+AXPlatformAttributes: html-id:description, toolkit:WebKitGtk
+------------
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/gtk/accessibility/xml-roles-exposed.html b/LayoutTests/platform/gtk/accessibility/xml-roles-exposed.html
new file mode 100644 (file)
index 0000000..e658e36
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../../../resources/js-test-pre.js"></script>
+</head>
+<body id="body">
+<div id="test">
+ <div role="alert"></div>
+ <div role="alertdialog"></div>
+ <div role="application"></div>
+ <div role="article"></div>
+ <div role="banner"></div>
+ <div role="button"></div>
+ <div role="checkbox"></div>
+ <div role="combobox"></div>
+ <div role="complementary"></div>
+ <div role="contentinfo"></div>
+ <div role="definition"></div>
+ <div role="dialog"></div>
+ <div role="directory"></div>
+ <div role="document"></div>
+ <div role="form"></div>
+ <div role="group"></div>
+ <div role="heading"></div>
+ <div role="img"></div>
+ <div role="link"></div>
+ <div role="log"></div>
+ <div role="main"></div>
+ <div role="marquee"></div>
+ <div role="math"></div>
+ <div role="navigation"></div>
+ <div role="note"></div>
+ <div role="presentation"></div>
+ <div role="progressbar"></div>
+ <div role="radio"></div>
+ <div role="region"></div>
+ <div role="scrollbar"></div>
+ <div role="search"></div>
+ <div role="searchbox"></div>
+ <div role="separator"></div>
+ <div role="slider"></div>
+ <div role="spinbutton"></div>
+ <div role="status"></div>
+ <div role="switch"></div>
+ <div role="textbox"></div>
+ <div role="timer"></div>
+ <div role="toolbar"></div>
+ <div role="tooltip"></div>
+</div>
+<p id="description"></p>
+<div id="console"></div>
+<script>
+description("Verify exposure of ARIA role values via the 'xml-roles' object attribute.");
+if (window.accessibilityController) {
+    document.getElementById("body").focus();
+    debug(accessibilityController.focusedElement.attributesOfChildren());
+}
+</script>
+<script src="../../../resources/js-test-post.js"></script>
+</body>
+</html>
index e514929..bdabc05 100644 (file)
@@ -1,3 +1,22 @@
+2015-05-21  Joanmarie Diggs  <jdiggs@igalia.com>
+
+        AX: [GTK] Implement computedRoleString in AccessibilityUIElement
+        https://bugs.webkit.org/show_bug.cgi?id=128420
+
+        Reviewed by Chris Fleizach.
+
+        Expose all ARIA roles (not just landmark-related roles) via an "xml-roles" AtkObject
+        attribute as per http://www.w3.org/TR/core-aam-1.1/#roleMappingGeneralRules
+
+        Expose non-empty computed role strings via AtkObject attribute named "computed-role".
+        Currently the computed role and the ARIA role value happen to be the same string, but
+        that might not always be the case. And AtkObject attributes are cheap.
+
+        Test: platform/gtk/accessibility/xml-roles-exposed.html.
+
+        * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
+        (webkitAccessibleGetAttributes):
+
 2015-05-21  Antti Koivisto  <antti@apple.com>
 
         MaskImageOperation code does not manage CachedImageClients correctly
index a9c2ba4..b472935 100644 (file)
@@ -451,30 +451,18 @@ static AtkAttributeSet* webkitAccessibleGetAttributes(AtkObject* object)
     if (coreObject->supportsARIASetSize())
         attributeSet = addToAtkAttributeSet(attributeSet, "setsize", String::number(coreObject->ariaSetSize()).utf8().data());
 
-    // Landmarks will be exposed with xml-roles object attributes, with the exception
-    // of LandmarkApplicationRole, which will be exposed with ATK_ROLE_EMBEDDED.
-    AccessibilityRole role = coreObject->roleValue();
-    switch (role) {
-    case LandmarkBannerRole:
-        attributeSet = addToAtkAttributeSet(attributeSet, "xml-roles", "banner");
-        break;
-    case LandmarkComplementaryRole:
-        attributeSet = addToAtkAttributeSet(attributeSet, "xml-roles", "complementary");
-        break;
-    case LandmarkContentInfoRole:
-        attributeSet = addToAtkAttributeSet(attributeSet, "xml-roles", "contentinfo");
-        break;
-    case LandmarkMainRole:
-        attributeSet = addToAtkAttributeSet(attributeSet, "xml-roles", "main");
-        break;
-    case LandmarkNavigationRole:
-        attributeSet = addToAtkAttributeSet(attributeSet, "xml-roles", "navigation");
-        break;
-    case LandmarkSearchRole:
-        attributeSet = addToAtkAttributeSet(attributeSet, "xml-roles", "search");
-        break;
-    default:
-        break;
+    // According to the W3C Core Accessibility API Mappings 1.1, section 5.4.1 General Rules:
+    // "User agents must expose the WAI-ARIA role string if the API supports a mechanism to do so."
+    // In the case of ATK, the mechanism to do so is an object attribute pair (xml-roles:"string").
+    // The computedRoleString is primarily for testing, and not limited to elements with ARIA roles.
+    // Because the computedRoleString currently contains the ARIA role string, we'll use it for
+    // both purposes, as the "computed-role" object attribute for all elements which have a value
+    // and also via the "xml-roles" attribute for elements with ARIA, as well as for landmarks.
+    String roleString = coreObject->computedRoleString();
+    if (!roleString.isEmpty()) {
+        if (coreObject->ariaRoleAttribute() != UnknownRole || coreObject->isLandmark())
+            attributeSet = addToAtkAttributeSet(attributeSet, "xml-roles", roleString.utf8().data());
+        attributeSet = addToAtkAttributeSet(attributeSet, "computed-role", roleString.utf8().data());
     }
 
     return attributeSet;
index c574a46..0690719 100644 (file)
@@ -1,3 +1,13 @@
+2015-05-21  Joanmarie Diggs  <jdiggs@igalia.com>
+
+        AX: [GTK] Implement computedRoleString in AccessibilityUIElement
+        https://bugs.webkit.org/show_bug.cgi?id=128420
+
+        Reviewed by Chris Fleizach.
+
+        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
+        (WTR::AccessibilityUIElement::computedRoleString): Implemented.
+
 2015-05-21  Csaba Osztrogon√°c  <ossy@webkit.org>
 
         [EFL] Bump libsoup version to 2.50.0
index 8620f13..3822c6d 100644 (file)
@@ -1070,7 +1070,10 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::roleDescription()
 
 JSRetainPtr<JSStringRef> AccessibilityUIElement::computedRoleString()
 {
-    // FIXME: implement http://webkit.org/b/128420
+    String role = getAttributeSetValueForId(ATK_OBJECT(m_element.get()), ObjectAttributeType, "computed-role");
+    if (!role.isEmpty())
+        return JSStringCreateWithUTF8CString(role.utf8().data());
+
     return JSStringCreateWithCharacters(0, 0);
 }