[GTK] AccessibilityUIElement::role() should be consistent across platforms wherever...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Oct 2012 00:07:08 +0000 (00:07 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Oct 2012 00:07:08 +0000 (00:07 +0000)
https://bugs.webkit.org/show_bug.cgi?id=99640

Patch by Joanmarie Diggs <jdiggs@igalia.com> on 2012-10-17
Reviewed by Chris Fleizach.

Tools:

Convert AtkRole instances to the Mac/Safari-style AXRole string.

* DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
(roleToString): New method to convert AtkRole instances to the Mac/Safari-style AXRole string
(AccessibilityUIElement::role): Output the Mac/Safair-style AXRole string rather than the AtkRole's name

LayoutTests:

Updated tests and expectations to use the Mac/Safari-style AXRole strings

* platform/gtk/accessibility/adjacent-continuations-cause-assertion-failure-expected.txt:
* platform/gtk/accessibility/aria-combobox-expected.txt:
* platform/gtk/accessibility/aria-fallback-roles-expected.txt:
* platform/gtk/accessibility/aria-menubar-menuitems-expected.txt:
* platform/gtk/accessibility/aria-roles-expected.txt:
* platform/gtk/accessibility/aria-roles-unignored-expected.txt:
* platform/gtk/accessibility/aria-roles-unignored.html:
* platform/gtk/accessibility/aria-slider-required-attributes-expected.txt:
* platform/gtk/accessibility/aria-slider-required-attributes.html:
* platform/gtk/accessibility/aria-table-hierarchy-expected.txt:
* platform/gtk/accessibility/aria-table-hierarchy.html:
* platform/gtk/accessibility/aria-tables-expected.txt:
* platform/gtk/accessibility/aria-toggle-button-role-expected.txt:
* platform/gtk/accessibility/aria-toggle-button-role.html:
* platform/gtk/accessibility/aria-toggle-button-with-title-expected.txt:
* platform/gtk/accessibility/button-accessible-name-expected.txt:
* platform/gtk/accessibility/button-accessible-name.html:
* platform/gtk/accessibility/canvas-description-and-role-expected.txt:
* platform/gtk/accessibility/caret-browsing-text-focus-expected.txt:
* platform/gtk/accessibility/caret-browsing-text-focus.html:
* platform/gtk/accessibility/deleting-iframe-destroys-axcache-expected.txt:
* platform/gtk/accessibility/div-within-anchors-causes-crash-expected.txt:
* platform/gtk/accessibility/entry-and-password-expected.txt:
* platform/gtk/accessibility/input-slider-expected.txt:
* platform/gtk/accessibility/input-slider.html:
* platform/gtk/accessibility/legend-expected.txt:
* platform/gtk/accessibility/list-items-always-exposed-expected.txt:
* platform/gtk/accessibility/list-items-always-exposed.html:
* platform/gtk/accessibility/media-controls-panel-title-expected.txt:
* platform/gtk/accessibility/media-controls-panel-title.html:
* platform/gtk/accessibility/name-from-label-expected.txt:
* platform/gtk/accessibility/name-from-label.html:
* platform/gtk/accessibility/object-with-title-expected.txt:
* platform/gtk/accessibility/object-with-title.html:
* platform/gtk/accessibility/replaced-objects-in-anonymous-blocks-expected.txt:
* platform/gtk/accessibility/spans-expected.txt:
* platform/gtk/accessibility/spans-paragraphs-and-divs-expected.txt:
* platform/gtk/accessibility/spans-paragraphs-and-divs.html:
* platform/gtk/accessibility/spans.html:
* platform/gtk/accessibility/svg-image-expected.txt:
* platform/gtk/accessibility/table-hierarchy-expected.txt:
* platform/gtk/accessibility/table-hierarchy.html:

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

45 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/gtk/accessibility/adjacent-continuations-cause-assertion-failure-expected.txt
LayoutTests/platform/gtk/accessibility/aria-combobox-expected.txt
LayoutTests/platform/gtk/accessibility/aria-fallback-roles-expected.txt
LayoutTests/platform/gtk/accessibility/aria-menubar-menuitems-expected.txt
LayoutTests/platform/gtk/accessibility/aria-roles-expected.txt
LayoutTests/platform/gtk/accessibility/aria-roles-unignored-expected.txt
LayoutTests/platform/gtk/accessibility/aria-roles-unignored.html
LayoutTests/platform/gtk/accessibility/aria-slider-required-attributes-expected.txt
LayoutTests/platform/gtk/accessibility/aria-slider-required-attributes.html
LayoutTests/platform/gtk/accessibility/aria-table-hierarchy-expected.txt
LayoutTests/platform/gtk/accessibility/aria-table-hierarchy.html
LayoutTests/platform/gtk/accessibility/aria-tables-expected.txt
LayoutTests/platform/gtk/accessibility/aria-toggle-button-role-expected.txt
LayoutTests/platform/gtk/accessibility/aria-toggle-button-role.html
LayoutTests/platform/gtk/accessibility/aria-toggle-button-with-title-expected.txt
LayoutTests/platform/gtk/accessibility/button-accessible-name-expected.txt
LayoutTests/platform/gtk/accessibility/button-accessible-name.html
LayoutTests/platform/gtk/accessibility/canvas-description-and-role-expected.txt
LayoutTests/platform/gtk/accessibility/caret-browsing-text-focus-expected.txt
LayoutTests/platform/gtk/accessibility/caret-browsing-text-focus.html
LayoutTests/platform/gtk/accessibility/deleting-iframe-destroys-axcache-expected.txt
LayoutTests/platform/gtk/accessibility/div-within-anchors-causes-crash-expected.txt
LayoutTests/platform/gtk/accessibility/entry-and-password-expected.txt
LayoutTests/platform/gtk/accessibility/input-slider-expected.txt
LayoutTests/platform/gtk/accessibility/input-slider.html
LayoutTests/platform/gtk/accessibility/legend-expected.txt
LayoutTests/platform/gtk/accessibility/list-items-always-exposed-expected.txt
LayoutTests/platform/gtk/accessibility/list-items-always-exposed.html
LayoutTests/platform/gtk/accessibility/media-controls-panel-title-expected.txt
LayoutTests/platform/gtk/accessibility/media-controls-panel-title.html
LayoutTests/platform/gtk/accessibility/name-from-label-expected.txt
LayoutTests/platform/gtk/accessibility/name-from-label.html
LayoutTests/platform/gtk/accessibility/object-with-title-expected.txt
LayoutTests/platform/gtk/accessibility/object-with-title.html
LayoutTests/platform/gtk/accessibility/replaced-objects-in-anonymous-blocks-expected.txt
LayoutTests/platform/gtk/accessibility/spans-expected.txt
LayoutTests/platform/gtk/accessibility/spans-paragraphs-and-divs-expected.txt
LayoutTests/platform/gtk/accessibility/spans-paragraphs-and-divs.html
LayoutTests/platform/gtk/accessibility/spans.html
LayoutTests/platform/gtk/accessibility/svg-image-expected.txt
LayoutTests/platform/gtk/accessibility/table-hierarchy-expected.txt
LayoutTests/platform/gtk/accessibility/table-hierarchy.html
Tools/ChangeLog
Tools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp

index 706160a..0a21cb2 100644 (file)
@@ -1,3 +1,55 @@
+2012-10-17  Joanmarie Diggs  <jdiggs@igalia.com>
+
+        [GTK] AccessibilityUIElement::role() should be consistent across platforms wherever possible
+        https://bugs.webkit.org/show_bug.cgi?id=99640
+
+        Reviewed by Chris Fleizach.
+
+        Updated tests and expectations to use the Mac/Safari-style AXRole strings
+
+        * platform/gtk/accessibility/adjacent-continuations-cause-assertion-failure-expected.txt:
+        * platform/gtk/accessibility/aria-combobox-expected.txt:
+        * platform/gtk/accessibility/aria-fallback-roles-expected.txt:
+        * platform/gtk/accessibility/aria-menubar-menuitems-expected.txt:
+        * platform/gtk/accessibility/aria-roles-expected.txt:
+        * platform/gtk/accessibility/aria-roles-unignored-expected.txt:
+        * platform/gtk/accessibility/aria-roles-unignored.html:
+        * platform/gtk/accessibility/aria-slider-required-attributes-expected.txt:
+        * platform/gtk/accessibility/aria-slider-required-attributes.html:
+        * platform/gtk/accessibility/aria-table-hierarchy-expected.txt:
+        * platform/gtk/accessibility/aria-table-hierarchy.html:
+        * platform/gtk/accessibility/aria-tables-expected.txt:
+        * platform/gtk/accessibility/aria-toggle-button-role-expected.txt:
+        * platform/gtk/accessibility/aria-toggle-button-role.html:
+        * platform/gtk/accessibility/aria-toggle-button-with-title-expected.txt:
+        * platform/gtk/accessibility/button-accessible-name-expected.txt:
+        * platform/gtk/accessibility/button-accessible-name.html:
+        * platform/gtk/accessibility/canvas-description-and-role-expected.txt:
+        * platform/gtk/accessibility/caret-browsing-text-focus-expected.txt:
+        * platform/gtk/accessibility/caret-browsing-text-focus.html:
+        * platform/gtk/accessibility/deleting-iframe-destroys-axcache-expected.txt:
+        * platform/gtk/accessibility/div-within-anchors-causes-crash-expected.txt:
+        * platform/gtk/accessibility/entry-and-password-expected.txt:
+        * platform/gtk/accessibility/input-slider-expected.txt:
+        * platform/gtk/accessibility/input-slider.html:
+        * platform/gtk/accessibility/legend-expected.txt:
+        * platform/gtk/accessibility/list-items-always-exposed-expected.txt:
+        * platform/gtk/accessibility/list-items-always-exposed.html:
+        * platform/gtk/accessibility/media-controls-panel-title-expected.txt:
+        * platform/gtk/accessibility/media-controls-panel-title.html:
+        * platform/gtk/accessibility/name-from-label-expected.txt:
+        * platform/gtk/accessibility/name-from-label.html:
+        * platform/gtk/accessibility/object-with-title-expected.txt:
+        * platform/gtk/accessibility/object-with-title.html:
+        * platform/gtk/accessibility/replaced-objects-in-anonymous-blocks-expected.txt:
+        * platform/gtk/accessibility/spans-expected.txt:
+        * platform/gtk/accessibility/spans-paragraphs-and-divs-expected.txt:
+        * platform/gtk/accessibility/spans-paragraphs-and-divs.html:
+        * platform/gtk/accessibility/spans.html:
+        * platform/gtk/accessibility/svg-image-expected.txt:
+        * platform/gtk/accessibility/table-hierarchy-expected.txt:
+        * platform/gtk/accessibility/table-hierarchy.html:
+
 2012-10-17  Arpita Bahuguna  <arpitabahuguna@gmail.com>
 
         Incorrect rendering of borders on <col> with span > 1
index 97e8cf9..9fa28b1 100644 (file)
@@ -7,9 +7,9 @@ Make sure that a debug assert is not triggered when constructing the accessibili
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-AXRole: document frame 
-    AXRole: section AXValue: y
-    AXRole: section AXValue: End of test
+AXRole: AXWebArea 
+    AXRole: AXDiv AXValue: y
+    AXRole: AXDiv AXValue: End of test
 PASS successfullyParsed is true
 
 TEST COMPLETE
index c4278c1..8af0356 100644 (file)
@@ -5,10 +5,10 @@ This tests that the aria roles for combobox and aria-expanded work correctly in
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-Role: AXRole: combo box
+Role: AXRole: AXComboBox
 PASS combobox.isExpanded is false
 PASS combobox.isExpanded is false
-Role: AXRole: list
+Role: AXRole: AXList
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 0df2af5..a2f7d62 100644 (file)
@@ -4,5 +4,5 @@ This tests that aria fallback roles work correctly.
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-Role should be: AXRole: check box
+Role should be: AXRole: AXCheckBox
 
index 7990c81..4525c14 100644 (file)
@@ -8,15 +8,15 @@ This tests that ARIA menu items are properly exposed as children for menu bars
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-AXRole: menu bar
+AXRole: AXMenuBar
 PASS menuBar.childrenCount is 2
-AXRole: menu item
+AXRole: AXMenuItem
 PASS menuItem.childrenCount is 2
-AXRole: panel
+AXRole: AXGroup
 PASS menuSubItem1.childrenCount is 0
-AXRole: menu
+AXRole: AXMenu
 PASS menuSubItem2.childrenCount is 1
-AXRole: menu item
+AXRole: AXMenuItem
 PASS subMenuSubItem.childrenCount is 0
 PASS successfullyParsed is true
 
index 4c02fd9..f6a73fe 100644 (file)
@@ -6,7 +6,7 @@ Actual checkboxes:
 
 Broccoli
 Asparagus
-This test PASSES in DumpRenderTree. The role is AXRole: check box
+This test PASSES in DumpRenderTree. The role is AXRole: AXCheckBox
 
 The following should be a button:
 
@@ -14,7 +14,7 @@ X
 
 Actual button:
 
-Hello This test PASSES in DumpRenderTree. The role is AXRole: push button
+Hello This test PASSES in DumpRenderTree. The role is AXRole: AXButton
 
 The following should be a heading:
 
@@ -24,7 +24,7 @@ Actual heading:
 
 Hello
 
-This test PASSES in DumpRenderTree. The role is AXRole: heading
+This test PASSES in DumpRenderTree. The role is AXRole: AXHeading
 
 The following should be a link:
 
@@ -32,7 +32,7 @@ X
 
 Actual link:
 
-Hello This test PASSES in DumpRenderTree. The role is AXRole: link
+Hello This test PASSES in DumpRenderTree. The role is AXRole: AXLink
 
 The following should be a radio button:
 
@@ -42,7 +42,7 @@ Actual radio buttons:
 
 Broccoli
 Asparagus
-This test PASSES in DumpRenderTree. The role is AXRole: radio button
+This test PASSES in DumpRenderTree. The role is AXRole: AXRadioButton
 
 The following should be a text box:
 
@@ -50,7 +50,7 @@ X
 
 Actual text box:
 
- This test PASSES in DumpRenderTree. The role is AXRole: entry
+ This test PASSES in DumpRenderTree. The role is AXRole: AXTextField
 
 The following should be an image:
 
@@ -58,7 +58,7 @@ X
 
 Actual image:
 
- This test PASSES in DumpRenderTree. The role is AXRole: image
+ This test PASSES in DumpRenderTree. The role is AXRole: AXImage
 
 The following should be a list:
 
@@ -68,6 +68,6 @@ Actual list:
 
 Broccoli
 Beets
-This test PASSES in DumpRenderTree. The role is AXRole: list
+This test PASSES in DumpRenderTree. The role is AXRole: AXList
 
 
index f051c08..78b1905 100644 (file)
@@ -12,14 +12,14 @@ This tests that ARIA roles are not ignored for 'p','label', 'form' and 'div' ele
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS element.role is 'AXRole: paragraph'
-PASS element.role is 'AXRole: table'
-PASS element.role is 'AXRole: label'
-PASS element.role is 'AXRole: heading'
-PASS element.role is 'AXRole: form'
-PASS element.role is 'AXRole: push button'
-PASS element.role is 'AXRole: section'
-PASS element.role is 'AXRole: entry'
+PASS element.role is 'AXRole: AXParagraph'
+PASS element.role is 'AXRole: AXTable'
+PASS element.role is 'AXRole: AXLabel'
+PASS element.role is 'AXRole: AXHeading'
+PASS element.role is 'AXRole: AXForm'
+PASS element.role is 'AXRole: AXButton'
+PASS element.role is 'AXRole: AXDiv'
+PASS element.role is 'AXRole: AXTextField'
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 6aff032..825ad03 100644 (file)
@@ -32,28 +32,28 @@ if (window.accessibilityController) {
 
     // Paragraphs
     var element = webArea.childAtIndex(0);
-    shouldBe("element.role", "'AXRole: paragraph'");
+    shouldBe("element.role", "'AXRole: AXParagraph'");
     element = webArea.childAtIndex(1);
-    shouldBe("element.role", "'AXRole: table'");
+    shouldBe("element.role", "'AXRole: AXTable'");
 
     // Labels are exposed as inside a panel
     var labelsPanel = webArea.childAtIndex(2);
     element = labelsPanel.childAtIndex(0);
-    shouldBe("element.role", "'AXRole: label'");
+    shouldBe("element.role", "'AXRole: AXLabel'");
     element = labelsPanel.childAtIndex(1);
-    shouldBe("element.role", "'AXRole: heading'");
+    shouldBe("element.role", "'AXRole: AXHeading'");
 
     // Forms
     element = webArea.childAtIndex(3);
-    shouldBe("element.role", "'AXRole: form'");
+    shouldBe("element.role", "'AXRole: AXForm'");
     element = webArea.childAtIndex(4);
-    shouldBe("element.role", "'AXRole: push button'");
+    shouldBe("element.role", "'AXRole: AXButton'");
 
     // Divs
     element = webArea.childAtIndex(5);
-    shouldBe("element.role", "'AXRole: section'");
+    shouldBe("element.role", "'AXRole: AXDiv'");
     element = webArea.childAtIndex(6);
-    shouldBe("element.role", "'AXRole: entry'");
+    shouldBe("element.role", "'AXRole: AXTextField'");
 }
 
 </script>
index 0a63b96..4de89f9 100644 (file)
@@ -11,7 +11,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 PASS successfullyParsed is true
 
 TEST COMPLETE
-PASS axSlider.role is 'AXRole: slider'
+PASS axSlider.role is 'AXRole: AXSlider'
 PASS axSlider.intValue is 50
 PASS axSlider.minValue is 0
 PASS axSlider.maxValue is 100
index ee501fe..d52f6d5 100644 (file)
@@ -15,7 +15,7 @@ function runTest()
 
     axSlider = accessibilityController.focusedElement;
 
-    shouldBe("axSlider.role", "'AXRole: slider'");
+    shouldBe("axSlider.role", "'AXRole: AXSlider'");
     shouldBe("axSlider.intValue", "50");
     shouldBe("axSlider.minValue", "0");
     shouldBe("axSlider.maxValue", "100");
index 7a91efb..c1a528d 100644 (file)
@@ -23,38 +23,38 @@ This tests the Atk table hierarhy for an ARIA table.
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS table1.role is 'AXRole: table'
+PASS table1.role is 'AXRole: AXTable'
 PASS table1.rowCount is 1
 PASS table1.columnCount is 2
-PASS table2.role is 'AXRole: table'
+PASS table2.role is 'AXRole: AXTable'
 PASS table2.rowCount is 3
 PASS table2.columnCount is 2
-PASS table3.role is 'AXRole: table'
+PASS table3.role is 'AXRole: AXTable'
 PASS table3.rowCount is 1
 PASS table3.columnCount is 2
-PASS table4.role is 'AXRole: table'
+PASS table4.role is 'AXRole: AXTable'
 PASS table4.rowCount is 3
 PASS table4.columnCount is 2
 PASS children is 2
-PASS table1.childAtIndex(i).role is 'AXRole: table cell'
-PASS table1.childAtIndex(i).role is 'AXRole: table cell'
+PASS table1.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table1.childAtIndex(i).role is 'AXRole: AXCell'
 PASS children is 6
-PASS table2.childAtIndex(i).role is 'AXRole: table cell'
-PASS table2.childAtIndex(i).role is 'AXRole: table cell'
-PASS table2.childAtIndex(i).role is 'AXRole: table cell'
-PASS table2.childAtIndex(i).role is 'AXRole: table cell'
-PASS table2.childAtIndex(i).role is 'AXRole: table cell'
-PASS table2.childAtIndex(i).role is 'AXRole: table cell'
+PASS table2.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table2.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table2.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table2.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table2.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table2.childAtIndex(i).role is 'AXRole: AXCell'
 PASS children is 2
-PASS table3.childAtIndex(i).role is 'AXRole: table cell'
-PASS table3.childAtIndex(i).role is 'AXRole: table cell'
+PASS table3.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table3.childAtIndex(i).role is 'AXRole: AXCell'
 PASS children is 6
-PASS table4.childAtIndex(i).role is 'AXRole: table cell'
-PASS table4.childAtIndex(i).role is 'AXRole: table cell'
-PASS table4.childAtIndex(i).role is 'AXRole: table cell'
-PASS table4.childAtIndex(i).role is 'AXRole: table cell'
-PASS table4.childAtIndex(i).role is 'AXRole: table cell'
-PASS table4.childAtIndex(i).role is 'AXRole: table cell'
+PASS table4.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table4.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table4.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table4.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table4.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table4.childAtIndex(i).role is 'AXRole: AXCell'
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 4a30b9d..655372c 100644 (file)
         var webArea = accessibilityController.focusedElement;
 
         var table1 = webArea.childAtIndex(0);
-        shouldBe("table1.role", "'AXRole: table'");
+        shouldBe("table1.role", "'AXRole: AXTable'");
         shouldBe("table1.rowCount", "1");
         shouldBe("table1.columnCount", "2");
         var table2 = webArea.childAtIndex(1);
-        shouldBe("table2.role", "'AXRole: table'");
+        shouldBe("table2.role", "'AXRole: AXTable'");
         shouldBe("table2.rowCount", "3");
         shouldBe("table2.columnCount", "2");
         var table3 = webArea.childAtIndex(2);
-        shouldBe("table3.role", "'AXRole: table'");
+        shouldBe("table3.role", "'AXRole: AXTable'");
         shouldBe("table3.rowCount", "1");
         shouldBe("table3.columnCount", "2");
         var table4 = webArea.childAtIndex(3);
-        shouldBe("table4.role", "'AXRole: table'");
+        shouldBe("table4.role", "'AXRole: AXTable'");
         shouldBe("table4.rowCount", "3");
         shouldBe("table4.columnCount", "2");
 
         var children = table1.childrenCount;
         shouldBe("children", "2");
         for (i = 0; i < children; ++i) {
-            shouldBe("table1.childAtIndex(i).role", "'AXRole: table cell'");
+            shouldBe("table1.childAtIndex(i).role", "'AXRole: AXCell'");
         }
         children = table2.childrenCount;
         shouldBe("children", "6");
         for (i = 0; i < children; ++i) {
-            shouldBe("table2.childAtIndex(i).role", "'AXRole: table cell'");
+            shouldBe("table2.childAtIndex(i).role", "'AXRole: AXCell'");
         }
         children = table3.childrenCount;
         shouldBe("children", "2");
         for (i = 0; i < children; ++i) {
-            shouldBe("table3.childAtIndex(i).role", "'AXRole: table cell'");
+            shouldBe("table3.childAtIndex(i).role", "'AXRole: AXCell'");
         }
         children = table4.childrenCount;
         shouldBe("children", "6");
         for (i = 0; i < children; ++i) {
-            shouldBe("table4.childAtIndex(i).role", "'AXRole: table cell'");
+            shouldBe("table4.childAtIndex(i).role", "'AXRole: AXCell'");
         }
     }
 </script>
index ba9bda3..067c011 100644 (file)
@@ -10,11 +10,11 @@ cell
 header 1       header 2        header 2
 cell   cell    cell
 cell
-AXRole: table
-AXRole: table
-AXRole: table cell
-AXRole: table cell
-AXRole: table cell
-AXRole: table cell
+AXRole: AXTable
+AXRole: AXTable
+AXRole: AXCell
+AXRole: AXCell
+AXRole: AXCell
+AXRole: AXCell
 Test passed
 
index 7c0e2bf..927f242 100644 (file)
@@ -7,8 +7,8 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 PASS successfullyParsed is true
 
 TEST COMPLETE
-PASS obj.childAtIndex(0).childAtIndex(0).role is 'AXRole: list item'
-PASS obj1.role is 'AXRole: toggle button'
-PASS obj2.role is 'AXRole: toggle button'
-PASS obj3.role is 'AXRole: push button'
+PASS obj.childAtIndex(0).childAtIndex(0).role is 'AXRole: AXListItem'
+PASS obj1.role is 'AXRole: AXToggleButton'
+PASS obj2.role is 'AXRole: AXToggleButton'
+PASS obj3.role is 'AXRole: AXButton'
 
index db600c1..58d7c2e 100644 (file)
@@ -10,19 +10,19 @@ function runTest()
 
     document.getElementById("body").focus();
     obj = accessibilityController.focusedElement;
-    shouldBe("obj.childAtIndex(0).childAtIndex(0).role", "'AXRole: list item'");
+    shouldBe("obj.childAtIndex(0).childAtIndex(0).role", "'AXRole: AXListItem'");
 
     document.getElementById("obj1").focus();
     obj1 = accessibilityController.focusedElement;
-    shouldBe("obj1.role", "'AXRole: toggle button'");
+    shouldBe("obj1.role", "'AXRole: AXToggleButton'");
 
     document.getElementById("obj2").focus();
     obj2 = accessibilityController.focusedElement;
-    shouldBe("obj2.role", "'AXRole: toggle button'");
+    shouldBe("obj2.role", "'AXRole: AXToggleButton'");
 
     document.getElementById("obj3").focus();
     obj3 = accessibilityController.focusedElement;
-    shouldBe("obj3.role", "'AXRole: push button'");
+    shouldBe("obj3.role", "'AXRole: AXButton'");
   }
 }
 </script>
index aea3f6c..3079679 100644 (file)
@@ -5,8 +5,8 @@ This tests that a toggle button properly exposes the title when there isn't a di
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-Role: AXRole: toggle button
+Role: AXRole: AXToggleButton
 PASS tbutton1.title is 'AXTitle: Toggle button'
-Role: AXRole: push button
+Role: AXRole: AXButton
 PASS button.title is 'AXTitle: Button title'
 
index a1f71d8..9c696bd 100644 (file)
@@ -4,7 +4,7 @@ This tests that the text of a button is exposed to Assistive Technologies.
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS axButton.role is 'AXRole: push button'
+PASS axButton.role is 'AXRole: AXButton'
 PASS axButton.title is 'AXTitle: The Button'
 PASS successfullyParsed is true
 
index 11038f8..fd5fca9 100644 (file)
@@ -20,7 +20,7 @@ if (window.accessibilityController) {
   button.focus();
 
   axButton = accessibilityController.focusedElement;
-  shouldBe("axButton.role", "'AXRole: push button'");
+  shouldBe("axButton.role", "'AXRole: AXButton'");
   shouldBe("axButton.title", "'AXTitle: The Button'");
 }
 </script>
index 2ec2f4d..8dafdc0 100644 (file)
@@ -5,9 +5,9 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 PASS axContainer.childrenCount is 2
 Canvas 1 description: AXDescription: Canvas label
-Canvas 1 role: AXRole: canvas
+Canvas 1 role: AXRole: AXCanvas
 Canvas 2 description: AXDescription: 
-Canvas 2 role: AXRole: canvas
+Canvas 2 role: AXRole: AXCanvas
 PASS successfullyParsed is true
 
 TEST COMPLETE
index b1c9f35..56290c4 100644 (file)
@@ -8,8 +8,8 @@ This tests the FOCUSABLE and FOCUSED states for text objects.
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS axPar1.role is 'AXRole: paragraph'
-PASS axPar2.role is 'AXRole: paragraph'
+PASS axPar1.role is 'AXRole: AXParagraph'
+PASS axPar2.role is 'AXRole: AXParagraph'
 PASS axPar1.isFocusable is true
 PASS axPar2.isFocusable is true
 PASS axPar1.isFocused is false
index 68b3a64..1240e5e 100644 (file)
@@ -24,8 +24,8 @@ if (window.testRunner) {
     var axPar2 = webArea.childAtIndex(1);
 
     // Check roles and initial states
-    shouldBe("axPar1.role", "'AXRole: paragraph'");
-    shouldBe("axPar2.role", "'AXRole: paragraph'");
+    shouldBe("axPar1.role", "'AXRole: AXParagraph'");
+    shouldBe("axPar2.role", "'AXRole: AXParagraph'");
     shouldBe("axPar1.isFocusable", "true");
     shouldBe("axPar2.isFocusable", "true");
     shouldBe("axPar1.isFocused", "false");
index fc41d05..742abe1 100644 (file)
@@ -11,24 +11,24 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 Before:
-AXRole: scroll pane 
-    AXRole: document frame 
-        AXRole: paragraph AXValue: Before
-        AXRole: panel AXValue: <obj>
-            AXRole: scroll pane 
-                AXRole: document frame 
-                    AXRole: panel AXValue: <obj>Click me
-                        AXRole: push button 
-        AXRole: paragraph AXValue: After
-        AXRole: paragraph AXValue: End of test
+AXRole: AXScrollArea 
+    AXRole: AXWebArea 
+        AXRole: AXParagraph AXValue: Before
+        AXRole: AXGroup AXValue: <obj>
+            AXRole: AXScrollArea 
+                AXRole: AXWebArea 
+                    AXRole: AXGroup AXValue: <obj>Click me
+                        AXRole: AXButton 
+        AXRole: AXParagraph AXValue: After
+        AXRole: AXParagraph AXValue: End of test
 
 After:
-AXRole: scroll pane 
-    AXRole: document frame 
-        AXRole: paragraph AXValue: Before
-        AXRole: panel AXValue: 
-        AXRole: paragraph AXValue: After
-        AXRole: paragraph AXValue: End of test
+AXRole: AXScrollArea 
+    AXRole: AXWebArea 
+        AXRole: AXParagraph AXValue: Before
+        AXRole: AXGroup AXValue: 
+        AXRole: AXParagraph AXValue: After
+        AXRole: AXParagraph AXValue: End of test
 
 PASS frameBodyRole == frameBody.role is false
 PASS frameGroupRole == frameGroup.role is false
index c46ecc5..9288b82 100644 (file)
@@ -1,11 +1,11 @@
 End of test
 Before:
-AXRole: document frame 
-    AXRole: link AXValue: 
-    AXRole: section AXValue: End of test
+AXRole: AXWebArea 
+    AXRole: AXLink AXValue: 
+    AXRole: AXDiv AXValue: End of test
 After:
-AXRole: document frame 
-    AXRole: section AXValue: End of test
+AXRole: AXWebArea 
+    AXRole: AXDiv AXValue: End of test
 This can cause a crash.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
index 403d6a2..07c697e 100644 (file)
@@ -1,10 +1,10 @@
  
 End of test
-AXRole: document frame 
-    AXRole: form AXValue: <obj> <obj>
-        AXRole: entry AXValue: 123
-        AXRole: password text AXValue: •••
-    AXRole: section AXValue: End of test
+AXRole: AXWebArea 
+    AXRole: AXForm AXValue: <obj> <obj>
+        AXRole: AXTextField AXValue: 123
+        AXRole: AXPasswordField AXValue: •••
+    AXRole: AXDiv AXValue: End of test
 This tests that the text associated with entry and password fields is correct.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
index ffc494e..6b4fd6d 100644 (file)
@@ -7,7 +7,7 @@ RUN(sliderAXObject = accessibilityController.focusedElement)
 EXPECTED (sliderAXObject.minValue == '0') OK
 EXPECTED (sliderAXObject.maxValue == '100') OK
 EXPECTED (sliderAXObject.childrenCount == '0') OK
-EXPECTED (sliderAXObject.role == 'AXRole: slider') OK
+EXPECTED (sliderAXObject.role == 'AXRole: AXSlider') OK
 
 ** Increment the slider, test slider value and div set on 'update' event
 RUN(sliderAXObject.increment())
index d038d99..eff2e4b 100644 (file)
@@ -96,7 +96,7 @@
                 run("sliderAXObject = accessibilityController.focusedElement");
                 testRanges(0, 100);
                 testExpected("sliderAXObject.childrenCount", 0);
-                testExpected("sliderAXObject.role", "AXRole: slider");
+                testExpected("sliderAXObject.role", "AXRole: AXSlider");
 
                 consoleWrite("");
                 consoleWrite("** Increment the slider, test slider value and div set on 'update' event");
index 465ed1e..dd19292 100644 (file)
@@ -6,11 +6,11 @@ This tests that a fieldset's title ui element is the legend.
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-AXRole: document frame 
-    AXRole: panel 
-        AXRole: label AXValue: Choose a shipping method:     << fieldset's titleUIElement
-        AXRole: radio button AXValue: 
-    AXRole: section AXValue: End of test
+AXRole: AXWebArea 
+    AXRole: AXGroup 
+        AXRole: AXLabel AXValue: Choose a shipping method:     << fieldset's titleUIElement
+        AXRole: AXRadioButton AXValue: 
+    AXRole: AXDiv AXValue: End of test
 PASS titleUIElement != null is true
 PASS titleUIElementText.stringValue is 'AXValue: Choose a shipping method:'
 PASS successfullyParsed is true
index bab6481..939d10f 100644 (file)
@@ -6,10 +6,10 @@ This tests a list item is always exposed regardless of having inline children or
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS list.role is 'AXRole: list'
-PASS item1.role is 'AXRole: list item'
-PASS item2.role is 'AXRole: list item'
-PASS paragraph.role is 'AXRole: paragraph'
+PASS list.role is 'AXRole: AXList'
+PASS item1.role is 'AXRole: AXListItem'
+PASS item2.role is 'AXRole: AXListItem'
+PASS paragraph.role is 'AXRole: AXParagraph'
 PASS successfullyParsed is true
 
 TEST COMPLETE
index dc6c5a4..a7d7172 100644 (file)
@@ -26,10 +26,10 @@ if (window.testRunner) {
     var item2 = list.childAtIndex(1);
     var paragraph = item2.childAtIndex(0);
 
-    shouldBe("list.role", "'AXRole: list'");
-    shouldBe("item1.role", "'AXRole: list item'");
-    shouldBe("item2.role", "'AXRole: list item'");
-    shouldBe("paragraph.role", "'AXRole: paragraph'");
+    shouldBe("list.role", "'AXRole: AXList'");
+    shouldBe("item1.role", "'AXRole: AXListItem'");
+    shouldBe("item2.role", "'AXRole: AXListItem'");
+    shouldBe("paragraph.role", "'AXRole: AXParagraph'");
   }
 }
 
index b604fd3..e3e3cef 100644 (file)
@@ -3,9 +3,9 @@ This tests that the media controls panel has the correct name and role
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS element.role is 'AXRole: panel'
+PASS element.role is 'AXRole: AXGroup'
 PASS element.title is 'AXTitle: '
-PASS element.role is 'AXRole: tool bar'
+PASS element.role is 'AXRole: AXToolbar'
 PASS element.title is 'AXTitle: media controls'
 PASS successfullyParsed is true
 
index a56e623..1f7717a 100644 (file)
@@ -13,10 +13,10 @@ if (window.accessibilityController) {
     document.getElementById("body").focus();
     var webArea = accessibilityController.focusedElement;
     var element = webArea.childAtIndex(0);
-    shouldBe("element.role", "'AXRole: panel'");
+    shouldBe("element.role", "'AXRole: AXGroup'");
     shouldBe("element.title", "'AXTitle: '");
     element = element.childAtIndex(0);
-    shouldBe("element.role", "'AXRole: tool bar'");
+    shouldBe("element.role", "'AXRole: AXToolbar'");
     shouldBe("element.title", "'AXTitle: media controls'");
 }
 
index 903ac41..d097684 100644 (file)
@@ -4,7 +4,7 @@ This tests that AtkObjects derive their names from associated labels.
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS entry.role is 'AXRole: entry'
+PASS entry.role is 'AXRole: AXTextField'
 PASS entry.title is 'AXTitle: Full Name:'
 PASS successfullyParsed is true
 
index 65177ba..76e9df5 100644 (file)
@@ -17,7 +17,7 @@
   function checkResults() {
     // Actually check the results
     entry = form.childAtIndex(1);
-    shouldBe("entry.role", "'AXRole: entry'");
+    shouldBe("entry.role", "'AXRole: AXTextField'");
     shouldBe("entry.title", "'AXTitle: Full Name:'");
     finishJSTest();
   }
index 7d89d23..62abf19 100644 (file)
@@ -7,9 +7,9 @@ This tests the inclusion of objects with a title attribute.
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS child.role is 'AXRole: list'
-PASS child.role is 'AXRole: section'
-PASS child.role is 'AXRole: list'
+PASS child.role is 'AXRole: AXList'
+PASS child.role is 'AXRole: AXDiv'
+PASS child.role is 'AXRole: AXList'
 PASS successfullyParsed is true
 
 TEST COMPLETE
index bb64bc4..851554d 100644 (file)
         var webArea = accessibilityController.focusedElement;
 
         var child = webArea.childAtIndex(0);
-        shouldBe("child.role", "'AXRole: list'");
+        shouldBe("child.role", "'AXRole: AXList'");
 
         child = webArea.childAtIndex(1);
-        shouldBe("child.role", "'AXRole: section'");
+        shouldBe("child.role", "'AXRole: AXDiv'");
 
         child = child.childAtIndex(0);
-        shouldBe("child.role", "'AXRole: list'");
+        shouldBe("child.role", "'AXRole: AXList'");
     }
 </script>
 <script src="../../../fast/js/resources/js-test-post.js"></script>
index 4ca8cb9..8cae580 100644 (file)
@@ -10,21 +10,21 @@ button
 
 
 End of test
-AXRole: document frame 
-    AXRole: paragraph AXValue: Paragraph
-    AXRole: panel AXValue: <obj>button<\n>
-        AXRole: push button 
-    AXRole: panel AXValue: <obj>
-        AXRole: scroll pane 
-            AXRole: document frame 
-    AXRole: panel AXValue: <obj>text area<\n>
-        AXRole: entry AXValue: text area
-    AXRole: section AXValue: Div<\n><obj>button
-        AXRole: push button 
-    AXRole: heading AXValue: Heading<\n><obj>button<\n><obj>
-        AXRole: push button 
-        AXRole: image 
-    AXRole: section AXValue: End of test
+AXRole: AXWebArea 
+    AXRole: AXParagraph AXValue: Paragraph
+    AXRole: AXGroup AXValue: <obj>button<\n>
+        AXRole: AXButton 
+    AXRole: AXGroup AXValue: <obj>
+        AXRole: AXScrollArea 
+            AXRole: AXWebArea 
+    AXRole: AXGroup AXValue: <obj>text area<\n>
+        AXRole: AXTextField AXValue: text area
+    AXRole: AXDiv AXValue: Div<\n><obj>button
+        AXRole: AXButton 
+    AXRole: AXHeading AXValue: Heading<\n><obj>button<\n><obj>
+        AXRole: AXButton 
+        AXRole: AXImage 
+    AXRole: AXDiv AXValue: End of test
 This tests that the text associated with replaced objects in an anonymous block is correct.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
index 9294492..911da47 100644 (file)
@@ -16,19 +16,19 @@ This tests that both block spans and inline spans get folded into the parent obj
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS element.role is 'AXRole: heading'
+PASS element.role is 'AXRole: AXHeading'
 PASS element.childrenCount is 0
-PASS element.role is 'AXRole: heading'
+PASS element.role is 'AXRole: AXHeading'
 PASS element.childrenCount is 1
-PASS link.role is 'AXRole: link'
+PASS link.role is 'AXRole: AXLink'
 PASS link.childrenCount is 0
-PASS element.role is 'AXRole: list'
+PASS element.role is 'AXRole: AXList'
 PASS element.childrenCount is 2
-PASS item.role is 'AXRole: list item'
+PASS item.role is 'AXRole: AXListItem'
 PASS item.childrenCount is 0
-PASS item.role is 'AXRole: list item'
+PASS item.role is 'AXRole: AXListItem'
 PASS item.childrenCount is 1
-PASS link.role is 'AXRole: link'
+PASS link.role is 'AXRole: AXLink'
 PASS link.childrenCount is 0
 PASS successfullyParsed is true
 
index f599806..68086ff 100644 (file)
@@ -22,29 +22,29 @@ This tests that paragraphs and divs with anonymous block children are not ignore
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS element.role is 'AXRole: paragraph'
+PASS element.role is 'AXRole: AXParagraph'
 PASS element.childrenCount is 1
-PASS link.role is 'AXRole: link'
+PASS link.role is 'AXRole: AXLink'
 PASS link.childrenCount is 0
-PASS element.role is 'AXRole: paragraph'
+PASS element.role is 'AXRole: AXParagraph'
 PASS element.childrenCount is 0
-PASS element.role is 'AXRole: paragraph'
+PASS element.role is 'AXRole: AXParagraph'
 PASS element.childrenCount is 1
-PASS link.role is 'AXRole: link'
+PASS link.role is 'AXRole: AXLink'
 PASS link.childrenCount is 0
-PASS element.role is 'AXRole: paragraph'
+PASS element.role is 'AXRole: AXParagraph'
 PASS element.childrenCount is 0
-PASS element.role is 'AXRole: section'
+PASS element.role is 'AXRole: AXDiv'
 PASS element.childrenCount is 1
-PASS link.role is 'AXRole: link'
+PASS link.role is 'AXRole: AXLink'
 PASS link.childrenCount is 0
-PASS element.role is 'AXRole: section'
+PASS element.role is 'AXRole: AXDiv'
 PASS element.childrenCount is 0
-PASS element.role is 'AXRole: section'
+PASS element.role is 'AXRole: AXDiv'
 PASS element.childrenCount is 1
-PASS link.role is 'AXRole: link'
+PASS link.role is 'AXRole: AXLink'
 PASS link.childrenCount is 0
-PASS element.role is 'AXRole: section'
+PASS element.role is 'AXRole: AXDiv'
 PASS element.childrenCount is 0
 PASS successfullyParsed is true
 
index 8b23339..2fbbbf9 100644 (file)
@@ -59,51 +59,51 @@ if (window.accessibilityController) {
     var webArea = accessibilityController.focusedElement;
 
     var element = webArea.childAtIndex(0);
-    shouldBe("element.role", "'AXRole: paragraph'");
+    shouldBe("element.role", "'AXRole: AXParagraph'");
     shouldBe("element.childrenCount", "1");
 
     var link = element.childAtIndex(0);
-    shouldBe("link.role", "'AXRole: link'");
+    shouldBe("link.role", "'AXRole: AXLink'");
     shouldBe("link.childrenCount", "0");
 
     element = webArea.childAtIndex(1);
-    shouldBe("element.role", "'AXRole: paragraph'");
+    shouldBe("element.role", "'AXRole: AXParagraph'");
     shouldBe("element.childrenCount", "0");
 
     element = webArea.childAtIndex(2);
-    shouldBe("element.role", "'AXRole: paragraph'");
+    shouldBe("element.role", "'AXRole: AXParagraph'");
     shouldBe("element.childrenCount", "1");
 
     link = element.childAtIndex(0);
-    shouldBe("link.role", "'AXRole: link'");
+    shouldBe("link.role", "'AXRole: AXLink'");
     shouldBe("link.childrenCount", "0");
 
     element = webArea.childAtIndex(3);
-    shouldBe("element.role", "'AXRole: paragraph'");
+    shouldBe("element.role", "'AXRole: AXParagraph'");
     shouldBe("element.childrenCount", "0");
 
     element = webArea.childAtIndex(4);
-    shouldBe("element.role", "'AXRole: section'");
+    shouldBe("element.role", "'AXRole: AXDiv'");
     shouldBe("element.childrenCount", "1");
 
     link = element.childAtIndex(0);
-    shouldBe("link.role", "'AXRole: link'");
+    shouldBe("link.role", "'AXRole: AXLink'");
     shouldBe("link.childrenCount", "0");
 
     element = webArea.childAtIndex(5);
-    shouldBe("element.role", "'AXRole: section'");
+    shouldBe("element.role", "'AXRole: AXDiv'");
     shouldBe("element.childrenCount", "0");
 
     element = webArea.childAtIndex(6);
-    shouldBe("element.role", "'AXRole: section'");
+    shouldBe("element.role", "'AXRole: AXDiv'");
     shouldBe("element.childrenCount", "1");
 
     link = element.childAtIndex(0);
-    shouldBe("link.role", "'AXRole: link'");
+    shouldBe("link.role", "'AXRole: AXLink'");
     shouldBe("link.childrenCount", "0");
 
     element = webArea.childAtIndex(7);
-    shouldBe("element.role", "'AXRole: section'");
+    shouldBe("element.role", "'AXRole: AXDiv'");
     shouldBe("element.childrenCount", "0");
 }
 
index 2e72a0b..1e12542 100644 (file)
@@ -44,31 +44,31 @@ if (window.accessibilityController) {
     var webArea = accessibilityController.focusedElement;
 
     var element = webArea.childAtIndex(0);
-    shouldBe("element.role", "'AXRole: heading'");
+    shouldBe("element.role", "'AXRole: AXHeading'");
     shouldBe("element.childrenCount", "0");
 
     element = webArea.childAtIndex(1);
-    shouldBe("element.role", "'AXRole: heading'");
+    shouldBe("element.role", "'AXRole: AXHeading'");
     shouldBe("element.childrenCount", "1");
 
     var link = element.childAtIndex(0);
-    shouldBe("link.role", "'AXRole: link'");
+    shouldBe("link.role", "'AXRole: AXLink'");
     shouldBe("link.childrenCount", "0");
 
     element = webArea.childAtIndex(2);
-    shouldBe("element.role", "'AXRole: list'");
+    shouldBe("element.role", "'AXRole: AXList'");
     shouldBe("element.childrenCount", "2");
 
     var item = element.childAtIndex(0);
-    shouldBe("item.role", "'AXRole: list item'");
+    shouldBe("item.role", "'AXRole: AXListItem'");
     shouldBe("item.childrenCount", "0");
 
     item = element.childAtIndex(1);
-    shouldBe("item.role", "'AXRole: list item'");
+    shouldBe("item.role", "'AXRole: AXListItem'");
     shouldBe("item.childrenCount", "1");
 
     link = item.childAtIndex(0);
-    shouldBe("link.role", "'AXRole: link'");
+    shouldBe("link.role", "'AXRole: AXLink'");
     shouldBe("link.childrenCount", "0");
 }
 
index 0cca228..d0bffd7 100644 (file)
@@ -6,7 +6,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 PASS svgImage.role is realImage.role
 PASS svgImage.description is realImage.description
-SVG Image Role: AXRole: image
+SVG Image Role: AXRole: AXImage
 SVG Image Description: AXDescription: TestImage
 PASS successfullyParsed is true
 
index d57cf85..6424fb0 100644 (file)
@@ -17,38 +17,38 @@ This tests the Atk table hierarhy.
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS table1.role is 'AXRole: table'
+PASS table1.role is 'AXRole: AXTable'
 PASS table1.rowCount is 1
 PASS table1.columnCount is 2
-PASS table2.role is 'AXRole: table'
+PASS table2.role is 'AXRole: AXTable'
 PASS table2.rowCount is 3
 PASS table2.columnCount is 2
-PASS table3.role is 'AXRole: table'
+PASS table3.role is 'AXRole: AXTable'
 PASS table3.rowCount is 1
 PASS table3.columnCount is 2
-PASS table4.role is 'AXRole: table'
+PASS table4.role is 'AXRole: AXTable'
 PASS table4.rowCount is 3
 PASS table4.columnCount is 2
 PASS children is 2
-PASS table1.childAtIndex(i).role is 'AXRole: table cell'
-PASS table1.childAtIndex(i).role is 'AXRole: table cell'
+PASS table1.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table1.childAtIndex(i).role is 'AXRole: AXCell'
 PASS children is 6
-PASS table2.childAtIndex(i).role is 'AXRole: table cell'
-PASS table2.childAtIndex(i).role is 'AXRole: table cell'
-PASS table2.childAtIndex(i).role is 'AXRole: table cell'
-PASS table2.childAtIndex(i).role is 'AXRole: table cell'
-PASS table2.childAtIndex(i).role is 'AXRole: table cell'
-PASS table2.childAtIndex(i).role is 'AXRole: table cell'
+PASS table2.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table2.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table2.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table2.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table2.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table2.childAtIndex(i).role is 'AXRole: AXCell'
 PASS children is 2
-PASS table3.childAtIndex(i).role is 'AXRole: table cell'
-PASS table3.childAtIndex(i).role is 'AXRole: table cell'
+PASS table3.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table3.childAtIndex(i).role is 'AXRole: AXCell'
 PASS children is 6
-PASS table4.childAtIndex(i).role is 'AXRole: table cell'
-PASS table4.childAtIndex(i).role is 'AXRole: table cell'
-PASS table4.childAtIndex(i).role is 'AXRole: table cell'
-PASS table4.childAtIndex(i).role is 'AXRole: table cell'
-PASS table4.childAtIndex(i).role is 'AXRole: table cell'
-PASS table4.childAtIndex(i).role is 'AXRole: table cell'
+PASS table4.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table4.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table4.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table4.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table4.childAtIndex(i).role is 'AXRole: AXCell'
+PASS table4.childAtIndex(i).role is 'AXRole: AXCell'
 PASS successfullyParsed is true
 
 TEST COMPLETE
index f40b770..81ace18 100644 (file)
         var webArea = accessibilityController.focusedElement;
 
         var table1 = webArea.childAtIndex(0);
-        shouldBe("table1.role", "'AXRole: table'");
+        shouldBe("table1.role", "'AXRole: AXTable'");
         shouldBe("table1.rowCount", "1");
         shouldBe("table1.columnCount", "2");
         var table2 = webArea.childAtIndex(1);
-        shouldBe("table2.role", "'AXRole: table'");
+        shouldBe("table2.role", "'AXRole: AXTable'");
         shouldBe("table2.rowCount", "3");
         shouldBe("table2.columnCount", "2");
         var table3 = webArea.childAtIndex(2);
-        shouldBe("table3.role", "'AXRole: table'");
+        shouldBe("table3.role", "'AXRole: AXTable'");
         shouldBe("table3.rowCount", "1");
         shouldBe("table3.columnCount", "2");
         var table4 = webArea.childAtIndex(3);
-        shouldBe("table4.role", "'AXRole: table'");
+        shouldBe("table4.role", "'AXRole: AXTable'");
         shouldBe("table4.rowCount", "3");
         shouldBe("table4.columnCount", "2");
 
         var children = table1.childrenCount;
         shouldBe("children", "2");
         for (i = 0; i < children; ++i) {
-            shouldBe("table1.childAtIndex(i).role", "'AXRole: table cell'");
+            shouldBe("table1.childAtIndex(i).role", "'AXRole: AXCell'");
         }
         children = table2.childrenCount;
         shouldBe("children", "6");
         for (i = 0; i < children; ++i) {
-            shouldBe("table2.childAtIndex(i).role", "'AXRole: table cell'");
+            shouldBe("table2.childAtIndex(i).role", "'AXRole: AXCell'");
         }
         children = table3.childrenCount;
         shouldBe("children", "2");
         for (i = 0; i < children; ++i) {
-            shouldBe("table3.childAtIndex(i).role", "'AXRole: table cell'");
+            shouldBe("table3.childAtIndex(i).role", "'AXRole: AXCell'");
         }
         children = table4.childrenCount;
         shouldBe("children", "6");
         for (i = 0; i < children; ++i) {
-            shouldBe("table4.childAtIndex(i).role", "'AXRole: table cell'");
+            shouldBe("table4.childAtIndex(i).role", "'AXRole: AXCell'");
         }
     }
 </script>
index e5b49e3..809ba64 100644 (file)
@@ -1,3 +1,16 @@
+2012-10-17  Joanmarie Diggs  <jdiggs@igalia.com>
+
+        [GTK] AccessibilityUIElement::role() should be consistent across platforms wherever possible
+        https://bugs.webkit.org/show_bug.cgi?id=99640
+
+        Reviewed by Chris Fleizach.
+
+        Convert AtkRole instances to the Mac/Safari-style AXRole string.
+
+        * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
+        (roleToString): New method to convert AtkRole instances to the Mac/Safari-style AXRole string
+        (AccessibilityUIElement::role): Output the Mac/Safair-style AXRole string rather than the AtkRole's name
+
 2012-10-17  Anders Carlsson  <andersca@apple.com>
 
         Clean up Vector.h
index 25c49e3..b00c583 100644 (file)
 #include <wtf/text/WTFString.h>
 #include <wtf/unicode/CharacterNames.h>
 
+static inline String roleToString(AtkRole role)
+{
+    switch (role) {
+    case ATK_ROLE_ALERT:
+        return "AXRole: AXAlert";
+    case ATK_ROLE_CANVAS:
+        return "AXRole: AXCanvas";
+    case ATK_ROLE_CHECK_BOX:
+        return "AXRole: AXCheckBox";
+    case ATK_ROLE_COLUMN_HEADER:
+        return "AXRole: AXColumnHeader";
+    case ATK_ROLE_COMBO_BOX:
+        return "AXRole: AXComboBox";
+    case ATK_ROLE_DOCUMENT_FRAME:
+        return "AXRole: AXWebArea";
+    case ATK_ROLE_ENTRY:
+        return "AXRole: AXTextField";
+    case ATK_ROLE_FOOTER:
+        return "AXRole: AXFooter";
+    case ATK_ROLE_FORM:
+        return "AXRole: AXForm";
+    case ATK_ROLE_GROUPING:
+        return "AXRole: AXGroup";
+    case ATK_ROLE_HEADING:
+        return "AXRole: AXHeading";
+    case ATK_ROLE_IMAGE:
+        return "AXRole: AXImage";
+    case ATK_ROLE_IMAGE_MAP:
+        return "AXRole: AXImageMap";
+    case ATK_ROLE_LABEL:
+        return "AXRole: AXLabel";
+    case ATK_ROLE_LINK:
+        return "AXRole: AXLink";
+    case ATK_ROLE_LIST:
+        return "AXRole: AXList";
+    case ATK_ROLE_LIST_BOX:
+        return "AXRole: AXListBox";
+    case ATK_ROLE_LIST_ITEM:
+        return "AXRole: AXListItem";
+    case ATK_ROLE_MENU:
+        return "AXRole: AXMenu";
+    case ATK_ROLE_MENU_BAR:
+        return "AXRole: AXMenuBar";
+    case ATK_ROLE_MENU_ITEM:
+        return "AXRole: AXMenuItem";
+    case ATK_ROLE_PAGE_TAB:
+        return "AXRole: AXTab";
+    case ATK_ROLE_PAGE_TAB_LIST:
+        return "AXRole: AXTabGroup";
+    case ATK_ROLE_PANEL:
+        return "AXRole: AXGroup";
+    case ATK_ROLE_PARAGRAPH:
+        return "AXRole: AXParagraph";
+    case ATK_ROLE_PASSWORD_TEXT:
+        return "AXRole: AXPasswordField";
+    case ATK_ROLE_PUSH_BUTTON:
+        return "AXRole: AXButton";
+    case ATK_ROLE_RADIO_BUTTON:
+        return "AXRole: AXRadioButton";
+    case ATK_ROLE_ROW_HEADER:
+        return "AXRole: AXRowHeader";
+    case ATK_ROLE_RULER:
+        return "AXRole: AXRuler";
+    case ATK_ROLE_SCROLL_BAR:
+        return "AXRole: AXScrollBar";
+    case ATK_ROLE_SCROLL_PANE:
+        return "AXRole: AXScrollArea";
+    case ATK_ROLE_SECTION:
+        return "AXRole: AXDiv";
+    case ATK_ROLE_SEPARATOR:
+        return "AXRole: AXHorizontalRule";
+    case ATK_ROLE_SLIDER:
+        return "AXRole: AXSlider";
+    case ATK_ROLE_SPIN_BUTTON:
+        return "AXRole: AXSpinButton";
+    case ATK_ROLE_TABLE:
+        return "AXRole: AXTable";
+    case ATK_ROLE_TABLE_CELL:
+        return "AXRole: AXCell";
+    case ATK_ROLE_TABLE_COLUMN_HEADER:
+        return "AXRole: AXColumnHeader";
+    case ATK_ROLE_TABLE_ROW:
+        return "AXRole: AXRow";
+    case ATK_ROLE_TABLE_ROW_HEADER:
+        return "AXRole: AXRowHeader";
+    case ATK_ROLE_TOGGLE_BUTTON:
+        return "AXRole: AXToggleButton";
+    case ATK_ROLE_TOOL_BAR:
+        return "AXRole: AXToolbar";
+    case ATK_ROLE_TOOL_TIP:
+        return "AXRole: AXUserInterfaceTooltip";
+    case ATK_ROLE_TREE:
+        return "AXRole: AXTree";
+    case ATK_ROLE_TREE_TABLE:
+        return "AXRole: AXTreeGrid";
+    case ATK_ROLE_TREE_ITEM:
+        return "AXRole: AXTreeItem";
+    case ATK_ROLE_WINDOW:
+        return "AXRole: AXWindow";
+    case ATK_ROLE_UNKNOWN:
+        return "AXRole: AXUnknown";
+    default:
+        // We want to distinguish ATK_ROLE_UNKNOWN from a known AtkRole which
+        // our DRT isn't properly handling.
+        return "AXRole: FIXME not identified";
+    }
+}
+
 static inline gchar* replaceCharactersForResults(gchar* str)
 {
     String uString = String::fromUTF8(str);
@@ -246,14 +354,11 @@ JSStringRef AccessibilityUIElement::parameterizedAttributeNames()
 JSStringRef AccessibilityUIElement::role()
 {
     AtkRole role = atk_object_get_role(ATK_OBJECT(m_element));
-
     if (!role)
         return JSStringCreateWithCharacters(0, 0);
 
-    const gchar* roleName = atk_role_get_name(role);
-    GOwnPtr<gchar> axRole(g_strdup_printf("AXRole: %s", roleName));
-
-    return JSStringCreateWithUTF8CString(axRole.get());
+    String roleString = roleToString(role);
+    return JSStringCreateWithUTF8CString(roleString.utf8().data());
 }
 
 JSStringRef AccessibilityUIElement::subrole()