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

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

Issue 2671563002: MacViews: Implement NSAccessibilityPressAction for Views with clickable roles. (Closed)
Patch Set: Use method instead of private member. Created 3 years, 11 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
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..a7d41b4f98e78822d73637ac9df905fa1b4ac747 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_utils.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,25 @@ 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];
tapted 2017/02/09 02:45:18 Do we expect much more to appear in future? E.g. w
Patti Lor 2017/02/09 23:11:23 I think so, yes - "ConfirmAction" simulates pressi
tapted 2017/02/09 23:25:05 Ack.
+
+ return axActions.autorelease();
+}
+
+- (void)accessibilityPerformAction:(NSString*)action {
+ DCHECK([[self accessibilityActionNames] containsObject:action]);
+ ui::AXActionData data;
+ if ([action isEqualToString:NSAccessibilityPressAction]) {
tapted 2017/02/09 02:45:18 nit: curlies not required
Patti Lor 2017/02/09 23:11:23 Done.
+ data.action = ui::AX_ACTION_DO_DEFAULT;
+ }
+
+ if (data.action != ui::AX_ACTION_NONE)
+ node_->GetDelegate()->AccessibilityPerformAction(data);
}
- (NSArray*)accessibilityAttributeNames {

Powered by Google App Engine
This is Rietveld 408576698