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

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: 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..1458026385b54ac8a5e6c89f9232d5853ecdf4b0 100644
--- a/chrome/browser/ui/cocoa/tabs/tab_strip_view.mm
+++ b/chrome/browser/ui/cocoa/tabs/tab_strip_view.mm
@@ -227,13 +227,35 @@
return NO;
}
+// Returns AX children (tabs and new tab button), sorted from left to right.
+- (NSArray*)accessibilityChildren {
+ NSArray* children =
+ [super accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
Avi (use Gerrit) 2014/09/23 20:44:21 Oh, yikes, was it really returning them in Z order
+ 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];
+ } else if ([attribute isEqual:NSAccessibilityChildrenAttribute]) {
+ return [self accessibilityChildren];
+ } else if ([attribute isEqual:NSAccessibilityTabsAttribute]) {
+ NSArray* children = [self accessibilityChildren];
+ NSMutableArray* tabs = [NSMutableArray arrayWithCapacity:[children count]];
for (id child in children) {
if ([[child accessibilityAttributeValue:NSAccessibilityRoleAttribute]
isEqual:NSAccessibilityRadioButtonRole]) {
@@ -241,11 +263,11 @@
}
}
return tabs;
Avi (use Gerrit) 2014/09/23 20:44:20 If you're already introducing blocks code, you cou
Andre 2014/09/23 21:41:55 Done. I love programming with higher order functio
Avi (use Gerrit) 2014/09/23 23:24:54 I was honestly shocked that Apple didn't already h
- }
- if ([attribute isEqual:NSAccessibilityContentsAttribute])
- return [self accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
- if ([attribute isEqual:NSAccessibilityValueAttribute])
+ } 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