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 9781913557fe81c12b348564a5b04615cdbf4cb2..49883eefa65e65b4fbf81469addc8f273cc518e9 100644 |
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm |
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm |
@@ -108,6 +108,8 @@ NSDictionary* attributeToMethodNameMap = nil; |
{ @"AXARIAAtomic", @"ariaAtomic" }, |
{ @"AXARIABusy", @"ariaBusy" }, |
{ @"AXARIALive", @"ariaLive" }, |
+ { @"AXARIAPosInSet", @"ariaPosInSet" }, |
+ { @"AXARIASetSize", @"ariaSetSize" }, |
{ @"AXARIARelevant", @"ariaRelevant" }, |
{ @"AXDropEffects", @"dropeffect" }, |
{ @"AXGrabbed", @"grabbed" }, |
@@ -170,6 +172,24 @@ NSDictionary* attributeToMethodNameMap = nil; |
browserAccessibility_, ui::AX_ATTR_LIVE_RELEVANT); |
} |
+- (NSNumber*)ariaPosInSet { |
+ if (browserAccessibility_->HasIntAttribute(ui::AX_ATTR_SET_SIZE)) |
+ int pos = browserAccessibility_->GetIntAttribute(ui::AX_ATTR_POS_IN_SET); |
+ else |
+ int pos = GetIndexInParent() + 1; |
+ |
+ return [NSNumber numberWithInt:pos]; |
+} |
+ |
+- (NSNumber*)ariaSetSize { |
+ if (browserAccessibility_->HasIntAttribute(ui::AX_ATTR_SET_SIZE)) |
+ int size = browserAccessibility_->GetIntAttribute(ui::AX_ATTR_SET_SIZE); |
+ else |
+ int size = browserAccessibility_->PlatformChildCount(); |
+ |
+ return [NSNumber numberWithInt:size]; |
+} |
+ |
// Returns an array of BrowserAccessibilityCocoa objects, representing the |
// accessibility children of this object. |
- (NSArray*)children { |
@@ -1406,6 +1426,15 @@ NSDictionary* attributeToMethodNameMap = nil; |
nil]]; |
} |
+ if (browserAccessibility_->GetRole() == ui::AX_ROLE_LIST_BOX_OPTION && |
+ browserAccessibility_->GetParent() && |
+ browserAccessibility_->GetParent()->GetRole() == ui::AX_ROLE_LIST_BOX) { |
+ [ret addObjectsFromArray:[NSArray arrayWithObjects: |
+ @"AXARIAPosInSet", |
+ @"AXARIASetSize", |
+ nil]]; |
+ } |
+ |
// Live regions. |
if (browserAccessibility_->HasStringAttribute( |
ui::AX_ATTR_LIVE_STATUS)) { |