OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |