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

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

Issue 2671563002: MacViews: Implement NSAccessibilityPressAction for Views with clickable roles. (Closed)
Patch Set: Add TODO for "feed" ARIA role. Created 3 years, 10 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 | « ui/accessibility/ax_role_properties.cc ('k') | ui/views/widget/native_widget_mac_accessibility_unittest.mm » ('j') | 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 5bfa69c675fa5c1124ea5fcf8954307ef461170f..3cf4db2cbf039007eeb6202e62489804c1fe57ac 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:, so ignore
+ // those here.
+
+ if (data.action != ui::AX_ACTION_NONE)
+ node_->GetDelegate()->AccessibilityPerformAction(data);
}
- (NSArray*)accessibilityAttributeNames {
« no previous file with comments | « ui/accessibility/ax_role_properties.cc ('k') | ui/views/widget/native_widget_mac_accessibility_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698