<rdar://problem/6224222> AX: should not expose a <table> as an AXTable if ARIA role...
authorcfleizach@apple.com <cfleizach@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Sep 2008 22:54:37 +0000 (22:54 +0000)
committercfleizach@apple.com <cfleizach@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Sep 2008 22:54:37 +0000 (22:54 +0000)
If a <table> tag has an aria role, it should not appear as an AXTable
Likewise, it's rows and cells should not appear as AXRow or AXCell

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

14 files changed:
LayoutTests/ChangeLog
LayoutTests/accessibility/table-detection-expected.txt
LayoutTests/accessibility/table-with-aria-role-expected.txt [new file with mode: 0644]
LayoutTests/accessibility/table-with-aria-role.html [new file with mode: 0644]
LayoutTests/accessibility/table-with-rules-expected.txt
LayoutTests/platform/mac-snowleopard/accessibility/table-detection-expected.txt
LayoutTests/platform/mac-snowleopard/accessibility/table-with-aria-role-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac-snowleopard/accessibility/table-with-rules-expected.txt
WebCore/ChangeLog
WebCore/page/AccessibilityTable.cpp
WebCore/page/AccessibilityTableCell.cpp
WebCore/page/AccessibilityTableCell.h
WebCore/page/AccessibilityTableRow.cpp
WebCore/page/AccessibilityTableRow.h

index 63c8a729152f4e46cca69bc6940b724ff3047055..e84d78656ba8abd4688c9de68adafe3e1c8abb2b 100644 (file)
@@ -1,3 +1,21 @@
+2008-09-18  Chris Fleizach  <cfleizach@apple.com>
+
+        Reviewed by Beth Dakin
+
+        Tests for <rdar://problem/6224222> AX: should not expose a <table> as an AXTable if 
+        ARIA role specifies otherwise
+        
+        Updated other tests so that rows and cells default to AccessibilityRenderObject
+        when not part of an AXTable
+
+        * accessibility/table-detection-expected.txt:
+        * accessibility/table-with-aria-role-expected.txt: Added.
+        * accessibility/table-with-aria-role.html: Added.
+        * accessibility/table-with-rules-expected.txt:
+        * platform/mac-snowleopard/accessibility/table-detection-expected.txt:
+        * platform/mac-snowleopard/accessibility/table-with-aria-role-expected.txt: Added.
+        * platform/mac-snowleopard/accessibility/table-with-rules-expected.txt:
+
 2008-09-18  Beth Dakin  <bdakin@apple.com>
 
         Reviewed by Dave Hyatt.
index fc90ec0941717c84b4c29a7a3ded1aac1bd0a7e3..a2d612a1a29cade7c92cbbb311c7dad98f0fdce3 100644 (file)
@@ -45,96 +45,96 @@ AXBlockQuoteLevel: 0
 AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {28, 20}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {28, 20}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {28, 20}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {28, 20}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
 AXRole: AXGroup
@@ -160,50 +160,50 @@ AXBlockQuoteLevel: 0
 AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {30, 22}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {30, 22}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
 AXRole: AXGroup
@@ -229,50 +229,50 @@ AXBlockQuoteLevel: 0
 AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {28, 20}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {28, 20}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
 AXRole: AXGroup
@@ -298,50 +298,50 @@ AXBlockQuoteLevel: 0
 AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
 AXRole: AXGroup
@@ -367,50 +367,50 @@ AXBlockQuoteLevel: 0
 AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
 AXRole: AXGroup
@@ -436,96 +436,96 @@ AXBlockQuoteLevel: 0
 AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
 AXRole: AXGroup
@@ -551,50 +551,50 @@ AXBlockQuoteLevel: 0
 AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
 AXRole: AXGroup
@@ -620,50 +620,50 @@ AXBlockQuoteLevel: 0
 AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
 AXRole: AXGroup
@@ -689,50 +689,50 @@ AXBlockQuoteLevel: 0
 AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
 AXRole: AXGroup
@@ -758,50 +758,50 @@ AXBlockQuoteLevel: 0
 AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {27, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {27, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
 AXRole: AXGroup
diff --git a/LayoutTests/accessibility/table-with-aria-role-expected.txt b/LayoutTests/accessibility/table-with-aria-role-expected.txt
new file mode 100644 (file)
index 0000000..e8a2e6f
--- /dev/null
@@ -0,0 +1,179 @@
+test   test    test
+test   test    test
+test   test    test
+test   test    test
+AXRole: AXButton
+AXSubrole: (null)
+AXRoleDescription: button
+AXChildren: <array of size 0>
+AXHelp: 
+AXParent: <AXButton: 'test     test    test
+test   test    test
+'>
+AXSize: NSSize: {85, 52}
+AXTitle: test  test    test
+test   test    test
+
+AXDescription: 
+AXValue: 
+AXFocused: 0
+AXEnabled: 1
+AXWindow: <AXButton: 'test     test    test
+test   test    test
+'>
+AXSelectedTextMarkerRange: (null)
+AXStartTextMarker: <AXButton: 'test    test    test
+test   test    test
+'>
+AXEndTextMarker: <AXButton: 'test      test    test
+test   test    test
+'>
+AXVisited: 0
+AXLinkedUIElements: (null)
+AXSelected: 0
+AXBlockQuoteLevel: 0
+AXTopLevelUIElement: <AXButton: 'test  test    test
+test   test    test
+'>
+AXTitleUIElement: (null)
+
+------------
+AXRole: AXGroup
+AXSubrole: (null)
+AXRoleDescription: group
+AXChildren: <array of size 1>
+AXHelp: 
+AXParent: <AXGroup>
+AXSize: NSSize: {25, 22}
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocused: 0
+AXEnabled: 1
+AXWindow: <AXGroup>
+AXSelectedTextMarkerRange: (null)
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
+AXVisited: 0
+AXLinkedUIElements: (null)
+AXSelected: 0
+AXBlockQuoteLevel: 0
+AXTopLevelUIElement: <AXGroup>
+
+------------
+AXRole: AXGroup
+AXSubrole: (null)
+AXRoleDescription: group
+AXChildren: <array of size 1>
+AXHelp: 
+AXParent: <AXGroup>
+AXSize: NSSize: {25, 22}
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocused: 0
+AXEnabled: 1
+AXWindow: <AXGroup>
+AXSelectedTextMarkerRange: (null)
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
+AXVisited: 0
+AXLinkedUIElements: (null)
+AXSelected: 0
+AXBlockQuoteLevel: 0
+AXTopLevelUIElement: <AXGroup>
+
+------------
+AXRole: AXGroup
+AXSubrole: (null)
+AXRoleDescription: group
+AXChildren: <array of size 1>
+AXHelp: 
+AXParent: <AXGroup>
+AXSize: NSSize: {25, 22}
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocused: 0
+AXEnabled: 1
+AXWindow: <AXGroup>
+AXSelectedTextMarkerRange: (null)
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
+AXVisited: 0
+AXLinkedUIElements: (null)
+AXSelected: 0
+AXBlockQuoteLevel: 0
+AXTopLevelUIElement: <AXGroup>
+
+------------
+AXRole: AXGroup
+AXSubrole: (null)
+AXRoleDescription: group
+AXChildren: <array of size 1>
+AXHelp: 
+AXParent: <AXGroup>
+AXSize: NSSize: {25, 22}
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocused: 0
+AXEnabled: 1
+AXWindow: <AXGroup>
+AXSelectedTextMarkerRange: (null)
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
+AXVisited: 0
+AXLinkedUIElements: (null)
+AXSelected: 0
+AXBlockQuoteLevel: 0
+AXTopLevelUIElement: <AXGroup>
+
+------------
+AXRole: AXGroup
+AXSubrole: (null)
+AXRoleDescription: group
+AXChildren: <array of size 1>
+AXHelp: 
+AXParent: <AXGroup>
+AXSize: NSSize: {25, 22}
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocused: 0
+AXEnabled: 1
+AXWindow: <AXGroup>
+AXSelectedTextMarkerRange: (null)
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
+AXVisited: 0
+AXLinkedUIElements: (null)
+AXSelected: 0
+AXBlockQuoteLevel: 0
+AXTopLevelUIElement: <AXGroup>
+
+------------
+AXRole: AXGroup
+AXSubrole: (null)
+AXRoleDescription: group
+AXChildren: <array of size 1>
+AXHelp: 
+AXParent: <AXGroup>
+AXSize: NSSize: {25, 22}
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocused: 0
+AXEnabled: 1
+AXWindow: <AXGroup>
+AXSelectedTextMarkerRange: (null)
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
+AXVisited: 0
+AXLinkedUIElements: (null)
+AXSelected: 0
+AXBlockQuoteLevel: 0
+AXTopLevelUIElement: <AXGroup>
+
+------------
+
diff --git a/LayoutTests/accessibility/table-with-aria-role.html b/LayoutTests/accessibility/table-with-aria-role.html
new file mode 100644 (file)
index 0000000..7c68689
--- /dev/null
@@ -0,0 +1,28 @@
+<html>
+<script>
+    if (window.layoutTestController)
+        layoutTestController.dumpAsText();
+</script>
+<body id="body">
+
+    <table border=1 role="button">
+       <tr><td>test</td><td>test</td><td>test</td></tr>
+       <tr><td>test</td><td>test</td><td>test</td></tr>
+    </table>
+
+    <table border=1 role="table">
+       <tr><td>test</td><td>test</td><td>test</td></tr>
+       <tr><td>test</td><td>test</td><td>test</td></tr>
+    </table>
+
+    <div id="result"></div>
+    
+    <script>
+        if (window.accessibilityController) {
+            var body = document.getElementById("body");
+            body.focus();
+            result.innerText += accessibilityController.focusedElement.attributesOfChildren();
+        }
+    </script>
+</body>
+</html>
index 4a449641e4d050d7429cf0233e156d8950a640eb..f904d787edbdc348acc59ca8af444ddf5f3249d7 100644 (file)
@@ -5,119 +5,119 @@ asdf        asdf
 asdf   asdf
 
 ------------------------------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {28, 21}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {29, 21}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {29, 21}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {28, 20}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {28, 20}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 
 
index 28c2492b7e3275474bc99550982d567075822cea..92cd7db913e58c20382f9e28926af7024401c452 100644 (file)
@@ -153,50 +153,50 @@ AXBlockQuoteLevel: 0
 AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {28, 20}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {28, 20}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
 AXRole: AXGroup
@@ -438,50 +438,50 @@ AXBlockQuoteLevel: 0
 AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
 AXRole: AXGroup
@@ -507,50 +507,50 @@ AXBlockQuoteLevel: 0
 AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
+AXParent: <AXGroup>
 AXSize: NSSize: {26, 18}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 ------------
 AXRole: AXGroup
diff --git a/LayoutTests/platform/mac-snowleopard/accessibility/table-with-aria-role-expected.txt b/LayoutTests/platform/mac-snowleopard/accessibility/table-with-aria-role-expected.txt
new file mode 100644 (file)
index 0000000..bd339e8
--- /dev/null
@@ -0,0 +1,72 @@
+test   test    test
+test   test    test
+test   test    test
+test   test    test
+AXRole: AXButton
+AXSubrole: (null)
+AXRoleDescription: button
+AXChildren: <array of size 0>
+AXHelp: 
+AXParent: <AXButton: 'test     test    test
+test   test    test
+'>
+AXSize: NSSize: {85, 52}
+AXTitle: test  test    test
+test   test    test
+
+AXDescription: 
+AXValue: 
+AXFocused: 0
+AXEnabled: 1
+AXWindow: <AXButton: 'test     test    test
+test   test    test
+'>
+AXSelectedTextMarkerRange: (null)
+AXStartTextMarker: <AXButton: 'test    test    test
+test   test    test
+'>
+AXEndTextMarker: <AXButton: 'test      test    test
+test   test    test
+'>
+AXVisited: 0
+AXLinkedUIElements: (null)
+AXSelected: 0
+AXBlockQuoteLevel: 0
+AXTopLevelUIElement: <AXButton: 'test  test    test
+test   test    test
+'>
+AXTitleUIElement: (null)
+
+------------
+AXRole: AXTable
+AXSubrole: (null)
+AXRoleDescription: table
+AXChildren: <array of size 6>
+AXHelp: 
+AXParent: <AXTable>
+AXSize: NSSize: {85, 52}
+AXTitle: 
+AXDescription: 
+AXValue: 
+AXFocused: 0
+AXEnabled: 1
+AXWindow: <AXTable>
+AXSelectedTextMarkerRange: (null)
+AXStartTextMarker: <AXTable>
+AXEndTextMarker: <AXTable>
+AXVisited: 0
+AXLinkedUIElements: (null)
+AXSelected: 0
+AXBlockQuoteLevel: 0
+AXTopLevelUIElement: <AXTable>
+AXRows: <array of size 2>
+AXVisibleRows: <array of size 2>
+AXColumns: <array of size 3>
+AXVisibleColumns: <array of size 3>
+AXVisibleCells: <array of size 6>
+AXColumnHeaderUIElements: <array of size 0>
+AXRowHeaderUIElements: <array of size 0>
+AXHeader: <AXTable>
+
+------------
+
index 640a601349de04931d5e1474c95b7efc012b01bf..24241d0f3a614d321b5dce28b5744aace2698549 100644 (file)
@@ -98,50 +98,50 @@ AXRowHeaderUIElements: <array of size 0>
 AXHeader: <AXTable>
 
 
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {28, 20}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 
-AXRole: AXStaticText
+AXRole: AXGroup
 AXSubrole: (null)
-AXRoleDescription: text
-AXChildren: <array of size 0>
+AXRoleDescription: group
+AXChildren: <array of size 1>
 AXHelp: 
-AXParent: <AXStaticText>
-AXSize: NSSize: {26, 18}
+AXParent: <AXGroup>
+AXSize: NSSize: {28, 20}
 AXTitle: 
 AXDescription: 
-AXValue: asdf
+AXValue: 
 AXFocused: 0
 AXEnabled: 1
-AXWindow: <AXStaticText>
+AXWindow: <AXGroup>
 AXSelectedTextMarkerRange: (null)
-AXStartTextMarker: <AXStaticText>
-AXEndTextMarker: <AXStaticText>
+AXStartTextMarker: <AXGroup>
+AXEndTextMarker: <AXGroup>
 AXVisited: 0
 AXLinkedUIElements: (null)
 AXSelected: 0
 AXBlockQuoteLevel: 0
-AXTopLevelUIElement: <AXStaticText>
+AXTopLevelUIElement: <AXGroup>
 
 
 
index 96008cde102837da0ac3d3a439777b322e308940..fe0c33af685697af9495acd65d9df6f34c1ce562 100644 (file)
@@ -1,3 +1,31 @@
+2008-09-18  Chris Fleizach  <cfleizach@apple.com>
+
+        Reviewed by Beth Dakin
+
+        <rdar://problem/6224222> AX: should not expose a <table> as an AXTable if ARIA 
+        role specifies otherwise
+
+        If a <table> isn't an AXTable, the rows and cells should default to AccessibilityRenderObject
+
+        Test: accessibility/table-with-aria-role.html
+
+        * page/AccessibilityTable.cpp:
+        (WebCore::AccessibilityTable::isTableExposableThroughAccessibility):
+        (WebCore::AccessibilityTable::addChildren):
+        (WebCore::AccessibilityTable::roleValue):
+        (WebCore::AccessibilityTable::accessibilityIsIgnored):
+        (WebCore::AccessibilityTable::title):
+        * page/AccessibilityTableCell.cpp:
+        (WebCore::AccessibilityTableCell::accessibilityIsIgnored):
+        (WebCore::AccessibilityTableCell::isTableCell):
+        (WebCore::AccessibilityTableCell::roleValue):
+        * page/AccessibilityTableCell.h:
+        * page/AccessibilityTableRow.cpp:
+        (WebCore::AccessibilityTableRow::roleValue):
+        (WebCore::AccessibilityTableRow::isTableRow):
+        (WebCore::AccessibilityTableRow::accessibilityIsIgnored):
+        * page/AccessibilityTableRow.h:
+
 2008-09-18  Steve Falkenburg  <sfalken@apple.com>
 
         Use higher-resolution timers on all variants of Windows.
index db4b8707dc7f2e9a7b32d41bc70b475459607214..22c724696926df454ee9707a74e5c61c6ad58d1e 100644 (file)
@@ -76,6 +76,14 @@ bool AccessibilityTable::isTableExposableThroughAccessibility()
     if (!m_renderer || !m_renderer->isTable())
         return false;
     
+    // if the developer assigned an aria role to this, then we shouldn't 
+    // expose it as a table, unless, of course, the aria role is a table
+    AccessibilityRole ariaRole = ariaRoleAttribute();
+    if (ariaRole == TableRole)
+        return true;
+    if (ariaRole != UnknownRole)
+        return false;
+    
     RenderTable* table = static_cast<RenderTable*>(m_renderer);
     
     // this employs a heuristic to determine if this table should appear. 
@@ -389,16 +397,25 @@ AccessibilityTableCell* AccessibilityTable::cellForColumnAndRow(unsigned column,
 
 AccessibilityRole AccessibilityTable::roleValue() const
 {
-    return isDataTable() ? TableRole : GroupRole;
+    if (!isDataTable())
+        return AccessibilityRenderObject::roleValue();
+
+    return TableRole;
 }
     
 bool AccessibilityTable::accessibilityIsIgnored() const
 {
-    return !isDataTable();
+    if (!isDataTable())
+        return AccessibilityRenderObject::accessibilityIsIgnored();
+    
+    return false;
 }
     
 String AccessibilityTable::title() const
 {
+    if (!isDataTable())
+        return AccessibilityRenderObject::title();
+    
     String title;
     if (!m_renderer)
         return title;
index 222df4e35e72c773e1d634827814e8326fdde80d..2062a881a3074565395c1d5e94af4c6029815f60 100644 (file)
@@ -52,12 +52,31 @@ PassRefPtr<AccessibilityTableCell> AccessibilityTableCell::create(RenderObject*
 }
 
 bool AccessibilityTableCell::accessibilityIsIgnored() const
+{
+    if (!isTableCell())
+        return AccessibilityRenderObject::accessibilityIsIgnored();
+    
+    return false;
+}
+    
+bool AccessibilityTableCell::isTableCell() const
 {
     if (!m_renderer)
-        return true;
+        return false;
     
     AccessibilityObject* renderTable = axObjectCache()->get(static_cast<RenderTableCell*>(m_renderer)->table());
-    return renderTable->accessibilityIsIgnored();
+    if (!renderTable->isDataTable())
+        return false;
+    
+    return true;
+}
+    
+AccessibilityRole AccessibilityTableCell::roleValue() const
+{
+    if (!isTableCell())
+        return AccessibilityRenderObject::roleValue();
+    
+    return CellRole;
 }
     
 void AccessibilityTableCell::rowIndexRange(pair<int, int>& rowRange)
index ccde1f4e642229eadd025c0311e5b52223d391cc..e77dfb2da94cd9f9c8b0192d2a9aada64cceeb2b 100644 (file)
@@ -41,8 +41,8 @@ public:
     static PassRefPtr<AccessibilityTableCell> create(RenderObject*);
     virtual ~AccessibilityTableCell();
     
-    virtual bool isTableCell() const { return true; };
-    virtual AccessibilityRole roleValue() const { return CellRole; };
+    virtual bool isTableCell() const;
+    virtual AccessibilityRole roleValue() const;
     
     virtual bool accessibilityIsIgnored() const;
 
index 3d80dffb030bd17982c62bac1a25c5e888313403..caccff57ae0a1b06127933aa3bfc5e2f680b0ad3 100644 (file)
@@ -57,13 +57,32 @@ PassRefPtr<AccessibilityTableRow> AccessibilityTableRow::create(RenderObject* re
     return adoptRef(new AccessibilityTableRow(renderer));
 }
 
-bool AccessibilityTableRow::accessibilityIsIgnored() const
+AccessibilityRole AccessibilityTableRow::roleValue() const
+{
+    if (!isTableRow())
+        return AccessibilityRenderObject::roleValue();
+    
+    return RowRole;
+}
+
+bool AccessibilityTableRow::isTableRow() const
 {
     if (!m_renderer)
         return true;
     
     AccessibilityObject* renderTable = axObjectCache()->get(static_cast<RenderTableRow*>(m_renderer)->table());
-    return renderTable->accessibilityIsIgnored();
+    if (!renderTable->isDataTable())
+        return false;
+    
+    return true;
+}
+    
+bool AccessibilityTableRow::accessibilityIsIgnored() const
+{    
+    if (!isTableRow())
+        return AccessibilityRenderObject::accessibilityIsIgnored();
+
+    return false;
 }
     
 AccessibilityObject* AccessibilityTableRow::headerObject()
index ea5c619c0dc77037f73d80b18b9653023492cef9..0ec7f0404f835e864226cdfd8b807ff46ce0a86b 100644 (file)
@@ -41,8 +41,8 @@ public:
     static PassRefPtr<AccessibilityTableRow> create(RenderObject*);
     virtual ~AccessibilityTableRow();
     
-    virtual bool isTableRow() const { return true; };
-    virtual AccessibilityRole roleValue() const { return RowRole; }
+    virtual bool isTableRow() const;
+    virtual AccessibilityRole roleValue() const;
 
     // retrieves the "row" header (a th tag in the rightmost column)
     AccessibilityObject* headerObject();