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

Unified Diff: ui/accessibility/platform/ax_platform_node_mac.mm

Issue 2016243002: Mac a11y: Add RoleDescription and Value attributes to accessibility information. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/accessibility/platform/ax_platform_node_mac.mm
diff --git a/ui/accessibility/platform/ax_platform_node_mac.mm b/ui/accessibility/platform/ax_platform_node_mac.mm
index 620841889eae237edc5ee3a5a3f4f237f6de4a33..931a76be95c405137a30f21ffcdc0480d4a4c267 100644
--- a/ui/accessibility/platform/ax_platform_node_mac.mm
+++ b/ui/accessibility/platform/ax_platform_node_mac.mm
@@ -223,43 +223,6 @@ RoleMap BuildSubroleMap() {
return gfx::ScreenRectToNSRect(node_->GetBoundsInScreen());
}
-- (NSArray*)AXChildren {
- if (!node_)
- return nil;
- int count = node_->GetChildCount();
- NSMutableArray* children = [NSMutableArray arrayWithCapacity:count];
- for (int i = 0; i < count; ++i)
- [children addObject:node_->ChildAtIndex(i)];
- return NSAccessibilityUnignoredChildren(children);
-}
-
-- (id)AXParent {
- if (!node_)
- return nil;
- return NSAccessibilityUnignoredAncestor(node_->GetParent());
-}
-
-- (NSValue*)AXPosition {
- return [NSValue valueWithPoint:self.boundsInScreen.origin];
-}
-
-- (NSString*)AXRole {
- if (!node_)
- return nil;
- return [[self class] nativeRoleFromAXRole:node_->GetData().role];
-}
-
-- (NSValue*)AXSize {
- return [NSValue valueWithSize:self.boundsInScreen.size];
-}
-
-- (NSString*)AXTitle {
- std::string value;
- if (node_->GetStringAttribute(ui::AX_ATTR_NAME, &value))
- return base::SysUTF8ToNSString(value);
- return nil;
-}
-
// NSAccessibility informal protocol implementation.
- (BOOL)accessibilityIsIgnored {
@@ -290,6 +253,10 @@ RoleMap BuildSubroleMap() {
// Title is required for most elements. Cocoa asks for the value even if it
// is omitted here, but won't present it to accessibility APIs without this.
NSAccessibilityTitleAttribute,
+
+ // Attributes which are not required, but are general to all roles.
+ NSAccessibilityRoleDescriptionAttribute,
+ NSAccessibilityValueAttribute,
];
// TODO(tapted): Add additional attributes based on role.
}
@@ -305,6 +272,58 @@ RoleMap BuildSubroleMap() {
return nil;
}
+// NSAccessibility attributes.
+
+// Helper function for string attributes that don't require extra processing.
+- (NSString*)retrieveAXStringAttribute:(ui::AXStringAttribute)attribute {
tapted 2016/05/30 11:30:21 Since this essentially wraps node_->GetStringAttri
Patti Lor 2016/06/03 04:51:03 Done.
+ std::string attributeValue;
+ if (node_->GetStringAttribute(attribute, &attributeValue))
+ return base::SysUTF8ToNSString(attributeValue);
+ return nil;
+}
+
+- (NSArray*)AXChildren {
+ if (!node_)
+ return nil;
+ int count = node_->GetChildCount();
+ NSMutableArray* children = [NSMutableArray arrayWithCapacity:count];
+ for (int i = 0; i < count; ++i)
+ [children addObject:node_->ChildAtIndex(i)];
+ return NSAccessibilityUnignoredChildren(children);
+}
+
+- (id)AXParent {
+ if (!node_)
+ return nil;
+ return NSAccessibilityUnignoredAncestor(node_->GetParent());
+}
+
+- (NSValue*)AXPosition {
+ return [NSValue valueWithPoint:self.boundsInScreen.origin];
+}
+
+- (NSString*)AXRole {
+ if (!node_)
+ return nil;
+ return [[self class] nativeRoleFromAXRole:node_->GetData().role];
+}
+
+- (NSValue*)AXSize {
+ return [NSValue valueWithSize:self.boundsInScreen.size];
+}
+
+- (NSString*)AXTitle {
+ return [self retrieveAXStringAttribute:ui::AX_ATTR_NAME];
+}
+
+- (NSString*)AXRoleDescription {
+ return [self retrieveAXStringAttribute:ui::AX_ATTR_DESCRIPTION];
+}
+
+- (NSString*)AXValue {
+ return [self retrieveAXStringAttribute:ui::AX_ATTR_VALUE];
+}
+
@end
namespace ui {
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698