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

Side by Side 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, 2 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/ui/cocoa/hover_close_button.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/ui/cocoa/tabs/tab_strip_view.h" 5 #import "chrome/browser/ui/cocoa/tabs/tab_strip_view.h"
6 6
7 #include <cmath> // floor 7 #include <cmath> // floor
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/mac/mac_util.h" 10 #include "base/mac/mac_util.h"
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 220
221 // (URLDropTarget protocol) 221 // (URLDropTarget protocol)
222 - (BOOL)performDragOperation:(id<NSDraggingInfo>)sender { 222 - (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
223 return [dropHandler_ performDragOperation:sender]; 223 return [dropHandler_ performDragOperation:sender];
224 } 224 }
225 225
226 - (BOOL)accessibilityIsIgnored { 226 - (BOOL)accessibilityIsIgnored {
227 return NO; 227 return NO;
228 } 228 }
229 229
230 // Returns AX children (tabs and new tab button), sorted from left to right.
231 - (NSArray*)accessibilityChildren {
232 NSArray* children =
233 [super accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
Avi (use Gerrit) 2014/09/23 20:44:21 Oh, yikes, was it really returning them in Z order
234 return [children sortedArrayUsingComparator:
235 ^NSComparisonResult(id first, id second) {
236 NSPoint firstPosition =
237 [[first accessibilityAttributeValue:
238 NSAccessibilityPositionAttribute] pointValue];
239 NSPoint secondPosition =
240 [[second accessibilityAttributeValue:
241 NSAccessibilityPositionAttribute] pointValue];
242 if (firstPosition.x < secondPosition.x)
243 return NSOrderedAscending;
244 else if (firstPosition.x > secondPosition.x)
245 return NSOrderedDescending;
246 else
247 return NSOrderedSame;
248 }];
249 }
250
230 - (id)accessibilityAttributeValue:(NSString*)attribute { 251 - (id)accessibilityAttributeValue:(NSString*)attribute {
231 if ([attribute isEqual:NSAccessibilityRoleAttribute]) 252 if ([attribute isEqual:NSAccessibilityRoleAttribute]) {
232 return NSAccessibilityTabGroupRole; 253 return NSAccessibilityTabGroupRole;
233 if ([attribute isEqual:NSAccessibilityTabsAttribute]) { 254 } else if ([attribute isEqual:NSAccessibilityChildrenAttribute]) {
234 NSMutableArray* tabs = [[[NSMutableArray alloc] init] autorelease]; 255 return [self accessibilityChildren];
235 NSArray* children = 256 } else if ([attribute isEqual:NSAccessibilityTabsAttribute]) {
236 [self accessibilityAttributeValue:NSAccessibilityChildrenAttribute]; 257 NSArray* children = [self accessibilityChildren];
258 NSMutableArray* tabs = [NSMutableArray arrayWithCapacity:[children count]];
237 for (id child in children) { 259 for (id child in children) {
238 if ([[child accessibilityAttributeValue:NSAccessibilityRoleAttribute] 260 if ([[child accessibilityAttributeValue:NSAccessibilityRoleAttribute]
239 isEqual:NSAccessibilityRadioButtonRole]) { 261 isEqual:NSAccessibilityRadioButtonRole]) {
240 [tabs addObject:child]; 262 [tabs addObject:child];
241 } 263 }
242 } 264 }
243 return tabs; 265 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
266 } else if ([attribute isEqual:NSAccessibilityContentsAttribute]) {
267 return [self accessibilityChildren];
268 } else if ([attribute isEqual:NSAccessibilityValueAttribute]) {
269 return [controller_ activeTabView];
244 } 270 }
245 if ([attribute isEqual:NSAccessibilityContentsAttribute])
246 return [self accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
247 if ([attribute isEqual:NSAccessibilityValueAttribute])
248 return [controller_ activeTabView];
249 271
250 return [super accessibilityAttributeValue:attribute]; 272 return [super accessibilityAttributeValue:attribute];
251 } 273 }
252 274
253 - (NSArray*)accessibilityAttributeNames { 275 - (NSArray*)accessibilityAttributeNames {
254 NSMutableArray* attributes = 276 NSMutableArray* attributes =
255 [[super accessibilityAttributeNames] mutableCopy]; 277 [[super accessibilityAttributeNames] mutableCopy];
256 [attributes addObject:NSAccessibilityTabsAttribute]; 278 [attributes addObject:NSAccessibilityTabsAttribute];
257 [attributes addObject:NSAccessibilityContentsAttribute]; 279 [attributes addObject:NSAccessibilityContentsAttribute];
258 [attributes addObject:NSAccessibilityValueAttribute]; 280 [attributes addObject:NSAccessibilityValueAttribute];
(...skipping 11 matching lines...) Expand all
270 292
271 - (void)setNewTabButton:(NewTabButton*)button { 293 - (void)setNewTabButton:(NewTabButton*)button {
272 newTabButton_.reset([button retain]); 294 newTabButton_.reset([button retain]);
273 } 295 }
274 296
275 - (void)setController:(TabStripController*)controller { 297 - (void)setController:(TabStripController*)controller {
276 controller_ = controller; 298 controller_ = controller;
277 } 299 }
278 300
279 @end 301 @end
OLDNEW
« 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