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 5bfa69c675fa5c1124ea5fcf8954307ef461170f..1c4e781c28954bc3eb25bf8c8a0f87de3011acbb 100644 |
| --- a/ui/accessibility/platform/ax_platform_node_mac.mm |
| +++ b/ui/accessibility/platform/ax_platform_node_mac.mm |
| @@ -11,6 +11,7 @@ |
| #include "base/strings/sys_string_conversions.h" |
| #include "ui/accessibility/ax_action_data.h" |
| #include "ui/accessibility/ax_node_data.h" |
| +#include "ui/accessibility/ax_role_properties.h" |
| #include "ui/accessibility/platform/ax_platform_node_delegate.h" |
| #include "ui/base/l10n/l10n_util.h" |
| #import "ui/gfx/mac/coordinate_conversion.h" |
| @@ -304,7 +305,28 @@ void NotifyMacEvent(AXPlatformNodeCocoa* target, ui::AXEvent event_type) { |
| } |
| - (NSArray*)accessibilityActionNames { |
| - return nil; |
| + base::scoped_nsobject<NSMutableArray> axActions( |
| + [[NSMutableArray alloc] init]); |
| + |
| + // VoiceOver expects the "press" action to be first. |
| + if (ui::IsRoleClickable(node_->GetData().role)) |
| + [axActions addObject:NSAccessibilityPressAction]; |
| + |
| + return axActions.autorelease(); |
| +} |
| + |
| +- (void)accessibilityPerformAction:(NSString*)action { |
| + DCHECK([[self accessibilityActionNames] containsObject:action]); |
| + ui::AXActionData data; |
| + if ([action isEqualToString:NSAccessibilityPressAction]) |
| + data.action = ui::AX_ACTION_DO_DEFAULT; |
| + |
| + // Note ui::AX_ACTIONs which are just overwriting an accessibility attribute |
| + // are already implemented in - accessibilitySetValue:forAttribute:, |
|
tapted
2017/02/09 23:25:05
nit remove space between "- accessibilitySetValue"
Patti Lor
2017/02/10 00:05:58
Done.
|
| + // so ignore those here. |
| + |
| + if (data.action != ui::AX_ACTION_NONE) |
| + node_->GetDelegate()->AccessibilityPerformAction(data); |
| } |
| - (NSArray*)accessibilityAttributeNames { |