Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(777)

Unified Diff: chrome/browser/ui/cocoa/tabs/tab_strip_view.mm

Issue 588393002: Mac: Fix tab view accessibility. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix for Avi Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/cocoa/hover_close_button.mm ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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];
}
« no previous file with comments | « chrome/browser/ui/cocoa/hover_close_button.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698