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 #include <execinfo.h> | 5 #include <execinfo.h> |
6 | 6 |
7 #import "content/browser/accessibility/browser_accessibility_cocoa.h" | 7 #import "content/browser/accessibility/browser_accessibility_cocoa.h" |
8 | 8 |
9 #include <map> | 9 #include <map> |
10 | 10 |
(...skipping 29 matching lines...) Expand all Loading... | |
40 return returnValue; | 40 return returnValue; |
41 } | 41 } |
42 | 42 |
43 struct MapEntry { | 43 struct MapEntry { |
44 AccessibilityNodeData::Role webKitValue; | 44 AccessibilityNodeData::Role webKitValue; |
45 NSString* nativeValue; | 45 NSString* nativeValue; |
46 }; | 46 }; |
47 | 47 |
48 typedef std::map<AccessibilityNodeData::Role, NSString*> RoleMap; | 48 typedef std::map<AccessibilityNodeData::Role, NSString*> RoleMap; |
49 | 49 |
50 struct AttributeToMethodNameEntry { | |
51 NSString* attribute; | |
52 NSString* methodName; | |
53 }; | |
54 | |
55 const AttributeToMethodNameEntry attributeToMethodNameContainer[] = { | |
56 { NSAccessibilityChildrenAttribute, @"children" }, | |
57 { NSAccessibilityColumnsAttribute, @"columns" }, | |
58 { NSAccessibilityDescriptionAttribute, @"description" }, | |
59 { NSAccessibilityEnabledAttribute, @"enabled" }, | |
60 { NSAccessibilityFocusedAttribute, @"focused" }, | |
61 { NSAccessibilityHelpAttribute, @"help" }, | |
62 { NSAccessibilityMaxValueAttribute, @"maxValue" }, | |
63 { NSAccessibilityMinValueAttribute, @"minValue" }, | |
64 { NSAccessibilityNumberOfCharactersAttribute, @"numberOfCharacters" }, | |
65 { NSAccessibilityParentAttribute, @"parent" }, | |
66 { NSAccessibilityPositionAttribute, @"position" }, | |
67 { NSAccessibilityRoleAttribute, @"role" }, | |
68 { NSAccessibilityRoleDescriptionAttribute, @"roleDescription" }, | |
69 { NSAccessibilityRowsAttribute, @"rows" }, | |
70 { NSAccessibilitySizeAttribute, @"size" }, | |
71 { NSAccessibilitySubroleAttribute, @"subrole" }, | |
72 { NSAccessibilityTabsAttribute, @"tabs" }, | |
73 { NSAccessibilityTitleAttribute, @"title" }, | |
74 { NSAccessibilityTitleUIElementAttribute, @"titleUIElement" }, | |
75 { NSAccessibilityTopLevelUIElementAttribute, @"window" }, | |
76 { NSAccessibilityURLAttribute, @"url" }, | |
77 { NSAccessibilityValueAttribute, @"value" }, | |
78 { NSAccessibilityVisibleCharacterRangeAttribute, @"visibleCharacterRange" }, | |
79 { NSAccessibilityWindowAttribute, @"window" }, | |
80 { @"AXAccessKey", @"accessKey" }, | |
81 { @"AXARIAAtomic", @"ariaAtomic" }, | |
82 { @"AXARIABusy", @"ariaBusy" }, | |
83 { @"AXARIALive", @"ariaLive" }, | |
84 { @"AXARIARelevant", @"ariaRelevant" }, | |
85 { @"AXLoaded", @"loaded" }, | |
86 { @"AXLoadingProgress", @"loadingProgress" }, | |
87 { @"AXRequired", @"required" }, | |
88 { @"AXVisited", @"visited" }, | |
89 }; | |
90 | |
91 // GetState checks the bitmask used in AccessibilityNodeData to check | 50 // GetState checks the bitmask used in AccessibilityNodeData to check |
92 // if the given state was set on the accessibility object. | 51 // if the given state was set on the accessibility object. |
93 bool GetState(BrowserAccessibility* accessibility, int state) { | 52 bool GetState(BrowserAccessibility* accessibility, int state) { |
94 return ((accessibility->state() >> state) & 1); | 53 return ((accessibility->state() >> state) & 1); |
95 } | 54 } |
96 | 55 |
97 RoleMap BuildRoleMap() { | 56 RoleMap BuildRoleMap() { |
98 const MapEntry roles[] = { | 57 const MapEntry roles[] = { |
99 { AccessibilityNodeData::ROLE_ALERT, NSAccessibilityGroupRole }, | 58 { AccessibilityNodeData::ROLE_ALERT, NSAccessibilityGroupRole }, |
100 { AccessibilityNodeData::ROLE_ALERT_DIALOG, NSAccessibilityGroupRole }, | 59 { AccessibilityNodeData::ROLE_ALERT_DIALOG, NSAccessibilityGroupRole }, |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
279 return nil; | 238 return nil; |
280 } | 239 } |
281 | 240 |
282 // A mapping from an accessibility attribute to its method name. | 241 // A mapping from an accessibility attribute to its method name. |
283 NSDictionary* attributeToMethodNameMap = nil; | 242 NSDictionary* attributeToMethodNameMap = nil; |
284 | 243 |
285 } // namespace | 244 } // namespace |
286 | 245 |
287 @implementation BrowserAccessibilityCocoa | 246 @implementation BrowserAccessibilityCocoa |
288 | 247 |
289 + (void)initialize { | 248 + (void)initialize { |
Nico
2012/07/29 06:09:07
(+initialize methods are effectively static initia
| |
249 const struct { | |
250 NSString* attribute; | |
251 NSString* methodName; | |
252 } attributeToMethodNameContainer[] = { | |
253 { NSAccessibilityChildrenAttribute, @"children" }, | |
254 { NSAccessibilityColumnsAttribute, @"columns" }, | |
255 { NSAccessibilityDescriptionAttribute, @"description" }, | |
256 { NSAccessibilityEnabledAttribute, @"enabled" }, | |
257 { NSAccessibilityFocusedAttribute, @"focused" }, | |
258 { NSAccessibilityHelpAttribute, @"help" }, | |
259 { NSAccessibilityMaxValueAttribute, @"maxValue" }, | |
260 { NSAccessibilityMinValueAttribute, @"minValue" }, | |
261 { NSAccessibilityNumberOfCharactersAttribute, @"numberOfCharacters" }, | |
262 { NSAccessibilityParentAttribute, @"parent" }, | |
263 { NSAccessibilityPositionAttribute, @"position" }, | |
264 { NSAccessibilityRoleAttribute, @"role" }, | |
265 { NSAccessibilityRoleDescriptionAttribute, @"roleDescription" }, | |
266 { NSAccessibilityRowsAttribute, @"rows" }, | |
267 { NSAccessibilitySizeAttribute, @"size" }, | |
268 { NSAccessibilitySubroleAttribute, @"subrole" }, | |
269 { NSAccessibilityTabsAttribute, @"tabs" }, | |
270 { NSAccessibilityTitleAttribute, @"title" }, | |
271 { NSAccessibilityTitleUIElementAttribute, @"titleUIElement" }, | |
272 { NSAccessibilityTopLevelUIElementAttribute, @"window" }, | |
273 { NSAccessibilityURLAttribute, @"url" }, | |
274 { NSAccessibilityValueAttribute, @"value" }, | |
275 { NSAccessibilityVisibleCharacterRangeAttribute, @"visibleCharacterRange" }, | |
276 { NSAccessibilityWindowAttribute, @"window" }, | |
277 { @"AXAccessKey", @"accessKey" }, | |
278 { @"AXARIAAtomic", @"ariaAtomic" }, | |
279 { @"AXARIABusy", @"ariaBusy" }, | |
280 { @"AXARIALive", @"ariaLive" }, | |
281 { @"AXARIARelevant", @"ariaRelevant" }, | |
282 { @"AXLoaded", @"loaded" }, | |
283 { @"AXLoadingProgress", @"loadingProgress" }, | |
284 { @"AXRequired", @"required" }, | |
285 { @"AXVisited", @"visited" }, | |
286 }; | |
287 | |
290 NSMutableDictionary* dict = [[NSMutableDictionary alloc] init]; | 288 NSMutableDictionary* dict = [[NSMutableDictionary alloc] init]; |
291 const size_t numAttributes = sizeof(attributeToMethodNameContainer) / | 289 const size_t numAttributes = sizeof(attributeToMethodNameContainer) / |
292 sizeof(attributeToMethodNameContainer[0]); | 290 sizeof(attributeToMethodNameContainer[0]); |
293 for (size_t i = 0; i < numAttributes; ++i) { | 291 for (size_t i = 0; i < numAttributes; ++i) { |
294 [dict setObject:attributeToMethodNameContainer[i].methodName | 292 [dict setObject:attributeToMethodNameContainer[i].methodName |
295 forKey:attributeToMethodNameContainer[i].attribute]; | 293 forKey:attributeToMethodNameContainer[i].attribute]; |
296 } | 294 } |
297 attributeToMethodNameMap = dict; | 295 attributeToMethodNameMap = dict; |
298 dict = nil; | 296 dict = nil; |
299 } | 297 } |
(...skipping 777 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1077 return [super hash]; | 1075 return [super hash]; |
1078 return browserAccessibility_->renderer_id(); | 1076 return browserAccessibility_->renderer_id(); |
1079 } | 1077 } |
1080 | 1078 |
1081 - (BOOL)accessibilityShouldUseUniqueId { | 1079 - (BOOL)accessibilityShouldUseUniqueId { |
1082 return YES; | 1080 return YES; |
1083 } | 1081 } |
1084 | 1082 |
1085 @end | 1083 @end |
1086 | 1084 |
OLD | NEW |