Chromium Code Reviews| Index: content/browser/accessibility/browser_accessibility_cocoa.mm |
| diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm |
| index 86a6934b9c72bb523a97244f5b31f958b105a748..96ca9dd7109fd262736b01ba1fee7a5b4ee454cb 100644 |
| --- a/content/browser/accessibility/browser_accessibility_cocoa.mm |
| +++ b/content/browser/accessibility/browser_accessibility_cocoa.mm |
| @@ -218,9 +218,44 @@ bool GetState(BrowserAccessibility* accessibility, int state) { |
| } |
| // A mapping of webkit roles to native roles. |
| -std::map<WebAccessibility::Role, NSString*> webAccessibilityToNativeRole; |
| +NSString* NativeRoleFromWebAccessibilityRole( |
| + const WebAccessibility::Role& role) { |
| + CR_DEFINE_STATIC_LOCAL(std::map<WebAccessibility::Role, NSString*>, |
| + webAccessibilityToNativeRole, ()); |
|
Mark Mentovai
2011/11/07 22:34:15
This would properly be named web_accessibility_to_
Nico
2011/11/07 23:29:21
Done.
|
| + if (webAccessibilityToNativeRole.empty()) { |
|
Mark Mentovai
2011/11/07 22:34:15
I don’t like this pattern, because it treats “empt
Nico
2011/11/07 23:29:21
Done-ish
|
| + for (size_t i = 0; i < arraysize(roles); ++i) { |
| + webAccessibilityToNativeRole[roles[i].webKitValue] = roles[i].nativeValue; |
| + } |
| + } |
| + |
| + std::map<WebAccessibility::Role, NSString*>::iterator it = |
| + webAccessibilityToNativeRole.find(role); |
| + if (it != webAccessibilityToNativeRole.end()) |
| + return it->second; |
| + else |
| + return NSAccessibilityUnknownRole; |
| +} |
| + |
| // A mapping of webkit roles to native subroles. |
| -std::map<WebAccessibility::Role, NSString*> webAccessibilityToNativeSubrole; |
| +NSString* NativeSubroleFromWebAccessibilityRole( |
| + const WebAccessibility::Role& role) { |
| + CR_DEFINE_STATIC_LOCAL(std::map<WebAccessibility::Role, NSString*>, |
| + webAccessibilityToNativeSubrole, ()); |
|
Mark Mentovai
2011/11/07 22:34:15
Same.
Nico
2011/11/07 23:29:21
Done.
|
| + if (webAccessibilityToNativeSubrole.empty()) { |
|
Mark Mentovai
2011/11/07 22:34:15
And same.
Nico
2011/11/07 23:29:21
Done.
|
| + for (size_t i = 0; i < arraysize(subroles); ++i) { |
| + webAccessibilityToNativeSubrole[subroles[i].webKitValue] = |
| + subroles[i].nativeValue; |
| + } |
| + } |
| + |
| + std::map<WebAccessibility::Role, NSString*>::iterator it = |
| + webAccessibilityToNativeSubrole.find(role); |
| + if (it != webAccessibilityToNativeSubrole.end()) |
| + return it->second; |
| + else |
| + return nil; |
| +} |
| + |
| // A mapping from an accessibility attribute to its method name. |
| NSDictionary* attributeToMethodNameMap = nil; |
| @@ -229,17 +264,6 @@ NSDictionary* attributeToMethodNameMap = nil; |
| @implementation BrowserAccessibilityCocoa |
| + (void)initialize { |
| - const size_t numRoles = sizeof(roles) / sizeof(roles[0]); |
| - for (size_t i = 0; i < numRoles; ++i) { |
| - webAccessibilityToNativeRole[roles[i].webKitValue] = roles[i].nativeValue; |
| - } |
| - |
| - const size_t numSubroles = sizeof(subroles) / sizeof(subroles[0]); |
| - for (size_t i = 0; i < numSubroles; ++i) { |
| - webAccessibilityToNativeSubrole[subroles[i].webKitValue] = |
| - subroles[i].nativeValue; |
| - } |
| - |
| NSMutableDictionary* dict = [[NSMutableDictionary alloc] init]; |
| const size_t numAttributes = sizeof(attributeToMethodNameContainer) / |
| sizeof(attributeToMethodNameContainer[0]); |
| @@ -450,13 +474,7 @@ NSDictionary* attributeToMethodNameMap = nil; |
| static_cast<WebAccessibility::Role>( browserAccessibility_->role()); |
| // Roles that we only determine at runtime. |
| - std::map<WebAccessibility::Role, NSString*>::iterator it = |
| - webAccessibilityToNativeRole.find(browserAccessibilityRole); |
| - |
| - if (it != webAccessibilityToNativeRole.end()) |
| - return it->second; |
| - else |
| - return NSAccessibilityUnknownRole; |
| + return NativeRoleFromWebAccessibilityRole(browserAccessibilityRole); |
| } |
| // Returns a string indicating the role description of this object. |
| @@ -543,12 +561,7 @@ NSDictionary* attributeToMethodNameMap = nil; |
| } |
| } |
| - std::map<WebAccessibility::Role, NSString*>::iterator it = |
| - webAccessibilityToNativeSubrole.find(browserAccessibilityRole); |
| - if (it != webAccessibilityToNativeSubrole.end()) |
| - return it->second; |
| - else |
| - return nil; |
| + return NativeSubroleFromWebAccessibilityRole(browserAccessibilityRole); |
| } |
| // Returns all tabs in this subtree. |