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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "ui/accessibility/platform/ax_platform_node_mac.h" 5 #import "ui/accessibility/platform/ax_platform_node_mac.h"
6 6
7 #import <Cocoa/Cocoa.h> 7 #import <Cocoa/Cocoa.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/strings/sys_string_conversions.h" 11 #include "base/strings/sys_string_conversions.h"
12 #include "ui/accessibility/ax_action_data.h" 12 #include "ui/accessibility/ax_action_data.h"
13 #include "ui/accessibility/ax_node_data.h" 13 #include "ui/accessibility/ax_node_data.h"
14 #include "ui/accessibility/ax_role_properties.h"
14 #include "ui/accessibility/platform/ax_platform_node_delegate.h" 15 #include "ui/accessibility/platform/ax_platform_node_delegate.h"
15 #include "ui/base/l10n/l10n_util.h" 16 #include "ui/base/l10n/l10n_util.h"
16 #import "ui/gfx/mac/coordinate_conversion.h" 17 #import "ui/gfx/mac/coordinate_conversion.h"
17 #include "ui/strings/grit/ui_strings.h" 18 #include "ui/strings/grit/ui_strings.h"
18 19
19 namespace { 20 namespace {
20 21
21 struct RoleMapEntry { 22 struct RoleMapEntry {
22 ui::AXRole value; 23 ui::AXRole value;
23 NSString* nativeValue; 24 NSString* nativeValue;
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 298
298 - (BOOL)accessibilityNotifiesWhenDestroyed { 299 - (BOOL)accessibilityNotifiesWhenDestroyed {
299 return YES; 300 return YES;
300 } 301 }
301 302
302 - (id)accessibilityFocusedUIElement { 303 - (id)accessibilityFocusedUIElement {
303 return node_->GetDelegate()->GetFocus(); 304 return node_->GetDelegate()->GetFocus();
304 } 305 }
305 306
306 - (NSArray*)accessibilityActionNames { 307 - (NSArray*)accessibilityActionNames {
307 return nil; 308 base::scoped_nsobject<NSMutableArray> axActions(
309 [[NSMutableArray alloc] init]);
310
311 // VoiceOver expects the "press" action to be first.
312 if (ui::IsRoleClickable(node_->GetData().role))
313 [axActions addObject:NSAccessibilityPressAction];
314
315 return axActions.autorelease();
316 }
317
318 - (void)accessibilityPerformAction:(NSString*)action {
319 DCHECK([[self accessibilityActionNames] containsObject:action]);
320 ui::AXActionData data;
321 if ([action isEqualToString:NSAccessibilityPressAction])
322 data.action = ui::AX_ACTION_DO_DEFAULT;
323
324 // Note ui::AX_ACTIONs which are just overwriting an accessibility attribute
325 // are already implemented in -accessibilitySetValue:forAttribute:, so ignore
326 // those here.
327
328 if (data.action != ui::AX_ACTION_NONE)
329 node_->GetDelegate()->AccessibilityPerformAction(data);
308 } 330 }
309 331
310 - (NSArray*)accessibilityAttributeNames { 332 - (NSArray*)accessibilityAttributeNames {
311 // These attributes are required on all accessibility objects. 333 // These attributes are required on all accessibility objects.
312 NSArray* const kAllRoleAttributes = @[ 334 NSArray* const kAllRoleAttributes = @[
313 NSAccessibilityChildrenAttribute, 335 NSAccessibilityChildrenAttribute,
314 NSAccessibilityParentAttribute, 336 NSAccessibilityParentAttribute,
315 NSAccessibilityPositionAttribute, 337 NSAccessibilityPositionAttribute,
316 NSAccessibilityRoleAttribute, 338 NSAccessibilityRoleAttribute,
317 NSAccessibilitySizeAttribute, 339 NSAccessibilitySizeAttribute,
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 } 653 }
632 NotifyMacEvent(native_node_, event_type); 654 NotifyMacEvent(native_node_, event_type);
633 } 655 }
634 656
635 int AXPlatformNodeMac::GetIndexInParent() { 657 int AXPlatformNodeMac::GetIndexInParent() {
636 // TODO(dmazzoni): implement this. http://crbug.com/396137 658 // TODO(dmazzoni): implement this. http://crbug.com/396137
637 return -1; 659 return -1;
638 } 660 }
639 661
640 } // namespace ui 662 } // namespace ui
OLDNEW
« 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