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]; |
| 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]; |
237 for (id child in children) { | 258 NSIndexSet* indexes = [children indexesOfObjectsPassingTest: |
238 if ([[child accessibilityAttributeValue:NSAccessibilityRoleAttribute] | 259 ^BOOL(id child, NSUInteger idx, BOOL* stop) { |
239 isEqual:NSAccessibilityRadioButtonRole]) { | 260 NSString* role = [child |
240 [tabs addObject:child]; | 261 accessibilityAttributeValue:NSAccessibilityRoleAttribute]; |
241 } | 262 return [role isEqualToString:NSAccessibilityRadioButtonRole]; |
242 } | 263 }]; |
243 return tabs; | 264 return [children objectsAtIndexes:indexes]; |
| 265 } else if ([attribute isEqual:NSAccessibilityContentsAttribute]) { |
| 266 return [self accessibilityChildren]; |
| 267 } else if ([attribute isEqual:NSAccessibilityValueAttribute]) { |
| 268 return [controller_ activeTabView]; |
244 } | 269 } |
245 if ([attribute isEqual:NSAccessibilityContentsAttribute]) | |
246 return [self accessibilityAttributeValue:NSAccessibilityChildrenAttribute]; | |
247 if ([attribute isEqual:NSAccessibilityValueAttribute]) | |
248 return [controller_ activeTabView]; | |
249 | 270 |
250 return [super accessibilityAttributeValue:attribute]; | 271 return [super accessibilityAttributeValue:attribute]; |
251 } | 272 } |
252 | 273 |
253 - (NSArray*)accessibilityAttributeNames { | 274 - (NSArray*)accessibilityAttributeNames { |
254 NSMutableArray* attributes = | 275 NSMutableArray* attributes = |
255 [[super accessibilityAttributeNames] mutableCopy]; | 276 [[super accessibilityAttributeNames] mutableCopy]; |
256 [attributes addObject:NSAccessibilityTabsAttribute]; | 277 [attributes addObject:NSAccessibilityTabsAttribute]; |
257 [attributes addObject:NSAccessibilityContentsAttribute]; | 278 [attributes addObject:NSAccessibilityContentsAttribute]; |
258 [attributes addObject:NSAccessibilityValueAttribute]; | 279 [attributes addObject:NSAccessibilityValueAttribute]; |
(...skipping 11 matching lines...) Expand all Loading... |
270 | 291 |
271 - (void)setNewTabButton:(NewTabButton*)button { | 292 - (void)setNewTabButton:(NewTabButton*)button { |
272 newTabButton_.reset([button retain]); | 293 newTabButton_.reset([button retain]); |
273 } | 294 } |
274 | 295 |
275 - (void)setController:(TabStripController*)controller { | 296 - (void)setController:(TabStripController*)controller { |
276 controller_ = controller; | 297 controller_ = controller; |
277 } | 298 } |
278 | 299 |
279 @end | 300 @end |
OLD | NEW |