Chromium Code Reviews| 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 { |