Index: content/browser/accessibility/browser_accessibility_cocoa.mm |
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm |
index a5176c3650730dea1e639d3bef232bdd9cc37c6f..257ea65fa59ae452b84f2db719785cee45916a0d 100644 |
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm |
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm |
@@ -387,10 +387,14 @@ bool InitializeAccessibilityTreeSearch( |
{ @"AXAccessKey", @"accessKey" }, |
{ @"AXARIAAtomic", @"ariaAtomic" }, |
{ @"AXARIABusy", @"ariaBusy" }, |
+ { @"AXARIAColumnCount", @"ariaColumnCount" }, |
+ { @"AXARIAColumnIndex", @"ariaColumnIndex" }, |
{ @"AXARIALive", @"ariaLive" }, |
{ @"AXARIASetSize", @"ariaSetSize" }, |
{ @"AXARIAPosInSet", @"ariaPosInSet" }, |
{ @"AXARIARelevant", @"ariaRelevant" }, |
+ { @"AXARIARowCount", @"ariaRowCount" }, |
+ { @"AXARIARowIndex", @"ariaRowIndex" }, |
{ @"AXDropEffects", @"dropeffect" }, |
{ @"AXGrabbed", @"grabbed" }, |
{ @"AXInvalid", @"invalid" }, |
@@ -441,6 +445,26 @@ bool InitializeAccessibilityTreeSearch( |
GetState(browserAccessibility_, ui::AX_STATE_BUSY)]; |
} |
+- (NSNumber*)ariaColumnCount { |
+ if (!browserAccessibility_->IsTableOrGridOrTreeGridRole()) |
+ return nil; |
+ int count = -1; |
+ if (!browserAccessibility_->GetIntAttribute( |
+ ui::AX_ATTR_ARIA_COL_COUNT, &count)) |
+ return nil; |
+ return [NSNumber numberWithInt:count]; |
+} |
+ |
+- (NSNumber*)ariaColumnIndex { |
+ if (!browserAccessibility_->IsCellOrTableHeaderRole()) |
+ return nil; |
+ int index = -1; |
+ if (!browserAccessibility_->GetIntAttribute( |
+ ui::AX_ATTR_ARIA_COL_INDEX, &index)) |
+ return nil; |
+ return [NSNumber numberWithInt:index]; |
+} |
+ |
- (NSString*)ariaLive { |
return NSStringForStringAttribute( |
browserAccessibility_, ui::AX_ATTR_LIVE_STATUS); |
@@ -451,6 +475,26 @@ bool InitializeAccessibilityTreeSearch( |
browserAccessibility_, ui::AX_ATTR_LIVE_RELEVANT); |
} |
+- (NSNumber*)ariaRowCount { |
+ if (!browserAccessibility_->IsTableOrGridOrTreeGridRole()) |
+ return nil; |
+ int count = -1; |
+ if (!browserAccessibility_->GetIntAttribute( |
+ ui::AX_ATTR_ARIA_ROW_COUNT, &count)) |
+ return nil; |
+ return [NSNumber numberWithInt:count]; |
+} |
+ |
+- (NSNumber*)ariaRowIndex { |
+ if (!browserAccessibility_->IsCellOrTableHeaderRole()) |
+ return nil; |
+ int index = -1; |
+ if (!browserAccessibility_->GetIntAttribute( |
+ ui::AX_ATTR_ARIA_ROW_INDEX, &index)) |
+ return nil; |
+ return [NSNumber numberWithInt:index]; |
+} |
+ |
- (NSNumber*)ariaPosInSet { |
return [NSNumber numberWithInt: |
browserAccessibility_->GetIntAttribute(ui::AX_ATTR_POS_IN_SET)]; |
@@ -1649,8 +1693,7 @@ bool InitializeAccessibilityTreeSearch( |
@"AXUIElementsForSearchPredicate", |
nil]; |
- if ([[self role] isEqualToString:NSAccessibilityTableRole] || |
- [[self role] isEqualToString:NSAccessibilityGridRole]) { |
+ if (browserAccessibility_->IsTableOrGridOrTreeGridRole()) { |
[ret addObjectsFromArray:[NSArray arrayWithObjects: |
NSAccessibilityCellForColumnAndRowParameterizedAttribute, |
nil]]; |
@@ -1764,8 +1807,7 @@ bool InitializeAccessibilityTreeSearch( |
// Specific role attributes. |
NSString* role = [self role]; |
NSString* subrole = [self subrole]; |
- if ([role isEqualToString:NSAccessibilityTableRole] || |
- [role isEqualToString:NSAccessibilityGridRole]) { |
+ if (browserAccessibility_->IsTableOrGridOrTreeGridRole()) { |
[ret addObjectsFromArray:[NSArray arrayWithObjects: |
NSAccessibilityColumnsAttribute, |
NSAccessibilityVisibleColumnsAttribute, |
@@ -1775,6 +1817,8 @@ bool InitializeAccessibilityTreeSearch( |
NSAccessibilityHeaderAttribute, |
NSAccessibilityColumnHeaderUIElementsAttribute, |
NSAccessibilityRowHeaderUIElementsAttribute, |
+ @"AXARIAColumnCount", |
+ @"AXARIARowCount", |
nil]]; |
} else if ([role isEqualToString:NSAccessibilityColumnRole]) { |
[ret addObjectsFromArray:[NSArray arrayWithObjects: |
@@ -1783,10 +1827,12 @@ bool InitializeAccessibilityTreeSearch( |
NSAccessibilityRowsAttribute, |
NSAccessibilityVisibleRowsAttribute, |
nil]]; |
- } else if ([role isEqualToString:NSAccessibilityCellRole]) { |
+ } else if (browserAccessibility_->IsCellOrTableHeaderRole()) { |
[ret addObjectsFromArray:[NSArray arrayWithObjects: |
NSAccessibilityColumnIndexRangeAttribute, |
NSAccessibilityRowIndexRangeAttribute, |
+ @"AXARIAColumnIndex", |
+ @"AXARIARowIndex", |
@"AXSortDirection", |
nil]]; |
} else if ([role isEqualToString:@"AXWebArea"]) { |