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

Side by Side Diff: content/browser/accessibility/browser_accessibility_cocoa.mm

Issue 8493016: content: Remove 16 exit time destructors and 15 static initializers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 30 matching lines...) Expand all
41 struct MapEntry { 41 struct MapEntry {
42 WebAccessibility::Role webKitValue; 42 WebAccessibility::Role webKitValue;
43 NSString* nativeValue; 43 NSString* nativeValue;
44 }; 44 };
45 45
46 struct AttributeToMethodNameEntry { 46 struct AttributeToMethodNameEntry {
47 NSString* attribute; 47 NSString* attribute;
48 NSString* methodName; 48 NSString* methodName;
49 }; 49 };
50 50
51 static const MapEntry roles[] = { 51 static const MapEntry roles[] = {
Mark Mentovai 2011/11/07 22:34:15 While poking through here, I noticed… This is bot
52 { WebAccessibility::ROLE_ALERT, NSAccessibilityGroupRole }, 52 { WebAccessibility::ROLE_ALERT, NSAccessibilityGroupRole },
53 { WebAccessibility::ROLE_ALERT_DIALOG, NSAccessibilityGroupRole }, 53 { WebAccessibility::ROLE_ALERT_DIALOG, NSAccessibilityGroupRole },
54 { WebAccessibility::ROLE_ANNOTATION, NSAccessibilityUnknownRole }, 54 { WebAccessibility::ROLE_ANNOTATION, NSAccessibilityUnknownRole },
55 { WebAccessibility::ROLE_APPLICATION, NSAccessibilityGroupRole }, 55 { WebAccessibility::ROLE_APPLICATION, NSAccessibilityGroupRole },
56 { WebAccessibility::ROLE_ARTICLE, NSAccessibilityGroupRole }, 56 { WebAccessibility::ROLE_ARTICLE, NSAccessibilityGroupRole },
57 { WebAccessibility::ROLE_BROWSER, NSAccessibilityBrowserRole }, 57 { WebAccessibility::ROLE_BROWSER, NSAccessibilityBrowserRole },
58 { WebAccessibility::ROLE_BUSY_INDICATOR, NSAccessibilityBusyIndicatorRole }, 58 { WebAccessibility::ROLE_BUSY_INDICATOR, NSAccessibilityBusyIndicatorRole },
59 { WebAccessibility::ROLE_BUTTON, NSAccessibilityButtonRole }, 59 { WebAccessibility::ROLE_BUTTON, NSAccessibilityButtonRole },
60 { WebAccessibility::ROLE_CELL, @"AXCell" }, 60 { WebAccessibility::ROLE_CELL, @"AXCell" },
61 { WebAccessibility::ROLE_CHECKBOX, NSAccessibilityCheckBoxRole }, 61 { WebAccessibility::ROLE_CHECKBOX, NSAccessibilityCheckBoxRole },
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 { @"AXVisited", @"visited" }, 211 { @"AXVisited", @"visited" },
212 }; 212 };
213 213
214 // GetState checks the bitmask used in webaccessibility.h to check 214 // GetState checks the bitmask used in webaccessibility.h to check
215 // if the given state was set on the accessibility object. 215 // if the given state was set on the accessibility object.
216 bool GetState(BrowserAccessibility* accessibility, int state) { 216 bool GetState(BrowserAccessibility* accessibility, int state) {
217 return ((accessibility->state() >> state) & 1); 217 return ((accessibility->state() >> state) & 1);
218 } 218 }
219 219
220 // A mapping of webkit roles to native roles. 220 // A mapping of webkit roles to native roles.
221 std::map<WebAccessibility::Role, NSString*> webAccessibilityToNativeRole; 221 NSString* NativeRoleFromWebAccessibilityRole(
222 const WebAccessibility::Role& role) {
223 CR_DEFINE_STATIC_LOCAL(std::map<WebAccessibility::Role, NSString*>,
224 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.
225 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
226 for (size_t i = 0; i < arraysize(roles); ++i) {
227 webAccessibilityToNativeRole[roles[i].webKitValue] = roles[i].nativeValue;
228 }
229 }
230
231 std::map<WebAccessibility::Role, NSString*>::iterator it =
232 webAccessibilityToNativeRole.find(role);
233 if (it != webAccessibilityToNativeRole.end())
234 return it->second;
235 else
236 return NSAccessibilityUnknownRole;
237 }
238
222 // A mapping of webkit roles to native subroles. 239 // A mapping of webkit roles to native subroles.
223 std::map<WebAccessibility::Role, NSString*> webAccessibilityToNativeSubrole; 240 NSString* NativeSubroleFromWebAccessibilityRole(
241 const WebAccessibility::Role& role) {
242 CR_DEFINE_STATIC_LOCAL(std::map<WebAccessibility::Role, NSString*>,
243 webAccessibilityToNativeSubrole, ());
Mark Mentovai 2011/11/07 22:34:15 Same.
Nico 2011/11/07 23:29:21 Done.
244 if (webAccessibilityToNativeSubrole.empty()) {
Mark Mentovai 2011/11/07 22:34:15 And same.
Nico 2011/11/07 23:29:21 Done.
245 for (size_t i = 0; i < arraysize(subroles); ++i) {
246 webAccessibilityToNativeSubrole[subroles[i].webKitValue] =
247 subroles[i].nativeValue;
248 }
249 }
250
251 std::map<WebAccessibility::Role, NSString*>::iterator it =
252 webAccessibilityToNativeSubrole.find(role);
253 if (it != webAccessibilityToNativeSubrole.end())
254 return it->second;
255 else
256 return nil;
257 }
258
224 // A mapping from an accessibility attribute to its method name. 259 // A mapping from an accessibility attribute to its method name.
225 NSDictionary* attributeToMethodNameMap = nil; 260 NSDictionary* attributeToMethodNameMap = nil;
226 261
227 } // namespace 262 } // namespace
228 263
229 @implementation BrowserAccessibilityCocoa 264 @implementation BrowserAccessibilityCocoa
230 265
231 + (void)initialize { 266 + (void)initialize {
232 const size_t numRoles = sizeof(roles) / sizeof(roles[0]);
233 for (size_t i = 0; i < numRoles; ++i) {
234 webAccessibilityToNativeRole[roles[i].webKitValue] = roles[i].nativeValue;
235 }
236
237 const size_t numSubroles = sizeof(subroles) / sizeof(subroles[0]);
238 for (size_t i = 0; i < numSubroles; ++i) {
239 webAccessibilityToNativeSubrole[subroles[i].webKitValue] =
240 subroles[i].nativeValue;
241 }
242
243 NSMutableDictionary* dict = [[NSMutableDictionary alloc] init]; 267 NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
244 const size_t numAttributes = sizeof(attributeToMethodNameContainer) / 268 const size_t numAttributes = sizeof(attributeToMethodNameContainer) /
245 sizeof(attributeToMethodNameContainer[0]); 269 sizeof(attributeToMethodNameContainer[0]);
246 for (size_t i = 0; i < numAttributes; ++i) { 270 for (size_t i = 0; i < numAttributes; ++i) {
247 [dict setObject:attributeToMethodNameContainer[i].methodName 271 [dict setObject:attributeToMethodNameContainer[i].methodName
248 forKey:attributeToMethodNameContainer[i].attribute]; 272 forKey:attributeToMethodNameContainer[i].attribute];
249 } 273 }
250 attributeToMethodNameMap = dict; 274 attributeToMethodNameMap = dict;
251 dict = nil; 275 dict = nil;
252 } 276 }
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 return [NSNumber numberWithBool: 467 return [NSNumber numberWithBool:
444 GetState(browserAccessibility_, WebAccessibility::STATE_REQUIRED)]; 468 GetState(browserAccessibility_, WebAccessibility::STATE_REQUIRED)];
445 } 469 }
446 470
447 // Returns a string indicating the role of this object. 471 // Returns a string indicating the role of this object.
448 - (NSString*)role { 472 - (NSString*)role {
449 WebAccessibility::Role browserAccessibilityRole = 473 WebAccessibility::Role browserAccessibilityRole =
450 static_cast<WebAccessibility::Role>( browserAccessibility_->role()); 474 static_cast<WebAccessibility::Role>( browserAccessibility_->role());
451 475
452 // Roles that we only determine at runtime. 476 // Roles that we only determine at runtime.
453 std::map<WebAccessibility::Role, NSString*>::iterator it = 477 return NativeRoleFromWebAccessibilityRole(browserAccessibilityRole);
454 webAccessibilityToNativeRole.find(browserAccessibilityRole);
455
456 if (it != webAccessibilityToNativeRole.end())
457 return it->second;
458 else
459 return NSAccessibilityUnknownRole;
460 } 478 }
461 479
462 // Returns a string indicating the role description of this object. 480 // Returns a string indicating the role description of this object.
463 - (NSString*)roleDescription { 481 - (NSString*)roleDescription {
464 NSString* role = [self role]; 482 NSString* role = [self role];
465 483
466 content::ContentClient* content_client = content::GetContentClient(); 484 content::ContentClient* content_client = content::GetContentClient();
467 485
468 // The following descriptions are specific to webkit. 486 // The following descriptions are specific to webkit.
469 if ([role isEqualToString:@"AXWebArea"]) { 487 if ([role isEqualToString:@"AXWebArea"]) {
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 554
537 if (browserAccessibilityRole == WebAccessibility::ROLE_LIST) { 555 if (browserAccessibilityRole == WebAccessibility::ROLE_LIST) {
538 if ([htmlTag isEqualToString:@"ul"] || 556 if ([htmlTag isEqualToString:@"ul"] ||
539 [htmlTag isEqualToString:@"ol"]) { 557 [htmlTag isEqualToString:@"ol"]) {
540 return @"AXContentList"; 558 return @"AXContentList";
541 } else if ([htmlTag isEqualToString:@"dl"]) { 559 } else if ([htmlTag isEqualToString:@"dl"]) {
542 return @"AXDefinitionList"; 560 return @"AXDefinitionList";
543 } 561 }
544 } 562 }
545 563
546 std::map<WebAccessibility::Role, NSString*>::iterator it = 564 return NativeSubroleFromWebAccessibilityRole(browserAccessibilityRole);
547 webAccessibilityToNativeSubrole.find(browserAccessibilityRole);
548 if (it != webAccessibilityToNativeSubrole.end())
549 return it->second;
550 else
551 return nil;
552 } 565 }
553 566
554 // Returns all tabs in this subtree. 567 // Returns all tabs in this subtree.
555 - (NSArray*)tabs { 568 - (NSArray*)tabs {
556 NSMutableArray* tabSubtree = [[[NSMutableArray alloc] init] autorelease]; 569 NSMutableArray* tabSubtree = [[[NSMutableArray alloc] init] autorelease];
557 570
558 if (browserAccessibility_->role() == WebAccessibility::ROLE_TAB) 571 if (browserAccessibility_->role() == WebAccessibility::ROLE_TAB)
559 [tabSubtree addObject:self]; 572 [tabSubtree addObject:self];
560 573
561 for (uint i=0; i < [[self children] count]; ++i) { 574 for (uint i=0; i < [[self children] count]; ++i) {
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
989 return [super hash]; 1002 return [super hash];
990 return browserAccessibility_->renderer_id(); 1003 return browserAccessibility_->renderer_id();
991 } 1004 }
992 1005
993 - (BOOL)accessibilityShouldUseUniqueId { 1006 - (BOOL)accessibilityShouldUseUniqueId {
994 return YES; 1007 return YES;
995 } 1008 }
996 1009
997 @end 1010 @end
998 1011
OLDNEW
« no previous file with comments | « no previous file | content/browser/browser_thread_impl.h » ('j') | content/browser/browsing_instance.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698