| Index: chrome/browser/ui/cocoa/tabs/tab_strip_view.mm
|
| diff --git a/chrome/browser/ui/cocoa/tabs/tab_strip_view.mm b/chrome/browser/ui/cocoa/tabs/tab_strip_view.mm
|
| index 86ac8ce7399bb5bec11f6f9fea33447cbffd92d8..2d546af69bd18affe5a033e632a363dd4e70ce96 100644
|
| --- a/chrome/browser/ui/cocoa/tabs/tab_strip_view.mm
|
| +++ b/chrome/browser/ui/cocoa/tabs/tab_strip_view.mm
|
| @@ -227,25 +227,46 @@
|
| return NO;
|
| }
|
|
|
| +// Returns AX children (tabs and new tab button), sorted from left to right.
|
| +- (NSArray*)accessibilityChildren {
|
| + NSArray* children =
|
| + [super accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
|
| + return [children sortedArrayUsingComparator:
|
| + ^NSComparisonResult(id first, id second) {
|
| + NSPoint firstPosition =
|
| + [[first accessibilityAttributeValue:
|
| + NSAccessibilityPositionAttribute] pointValue];
|
| + NSPoint secondPosition =
|
| + [[second accessibilityAttributeValue:
|
| + NSAccessibilityPositionAttribute] pointValue];
|
| + if (firstPosition.x < secondPosition.x)
|
| + return NSOrderedAscending;
|
| + else if (firstPosition.x > secondPosition.x)
|
| + return NSOrderedDescending;
|
| + else
|
| + return NSOrderedSame;
|
| + }];
|
| +}
|
| +
|
| - (id)accessibilityAttributeValue:(NSString*)attribute {
|
| - if ([attribute isEqual:NSAccessibilityRoleAttribute])
|
| + if ([attribute isEqual:NSAccessibilityRoleAttribute]) {
|
| return NSAccessibilityTabGroupRole;
|
| - if ([attribute isEqual:NSAccessibilityTabsAttribute]) {
|
| - NSMutableArray* tabs = [[[NSMutableArray alloc] init] autorelease];
|
| - NSArray* children =
|
| - [self accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
|
| - for (id child in children) {
|
| - if ([[child accessibilityAttributeValue:NSAccessibilityRoleAttribute]
|
| - isEqual:NSAccessibilityRadioButtonRole]) {
|
| - [tabs addObject:child];
|
| - }
|
| - }
|
| - return tabs;
|
| - }
|
| - if ([attribute isEqual:NSAccessibilityContentsAttribute])
|
| - return [self accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
|
| - if ([attribute isEqual:NSAccessibilityValueAttribute])
|
| + } else if ([attribute isEqual:NSAccessibilityChildrenAttribute]) {
|
| + return [self accessibilityChildren];
|
| + } else if ([attribute isEqual:NSAccessibilityTabsAttribute]) {
|
| + NSArray* children = [self accessibilityChildren];
|
| + NSIndexSet* indexes = [children indexesOfObjectsPassingTest:
|
| + ^BOOL(id child, NSUInteger idx, BOOL* stop) {
|
| + NSString* role = [child
|
| + accessibilityAttributeValue:NSAccessibilityRoleAttribute];
|
| + return [role isEqualToString:NSAccessibilityRadioButtonRole];
|
| + }];
|
| + return [children objectsAtIndexes:indexes];
|
| + } else if ([attribute isEqual:NSAccessibilityContentsAttribute]) {
|
| + return [self accessibilityChildren];
|
| + } else if ([attribute isEqual:NSAccessibilityValueAttribute]) {
|
| return [controller_ activeTabView];
|
| + }
|
|
|
| return [super accessibilityAttributeValue:attribute];
|
| }
|
|
|