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

Side by Side Diff: ui/accessibility/platform/ax_platform_node_mac.mm

Issue 2474363002: MacViews/a11y: Accessibility actions use AXActionData in AXPlatformNodeDelegate. (Closed)
Patch Set: Review comments. Created 4 years 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_node_data.h" 13 #include "ui/accessibility/ax_node_data.h"
13 #include "ui/accessibility/platform/ax_platform_node_delegate.h" 14 #include "ui/accessibility/platform/ax_platform_node_delegate.h"
14 #import "ui/gfx/mac/coordinate_conversion.h" 15 #import "ui/gfx/mac/coordinate_conversion.h"
15 16
16 namespace { 17 namespace {
17 18
18 struct RoleMapEntry { 19 struct RoleMapEntry {
19 ui::AXRole value; 20 ui::AXRole value;
20 NSString* nativeValue; 21 NSString* nativeValue;
21 }; 22 };
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 isEqualToString:NSAccessibilitySelectedChildrenAttribute] || 373 isEqualToString:NSAccessibilitySelectedChildrenAttribute] ||
373 [attributeName 374 [attributeName
374 isEqualToString:NSAccessibilitySelectedTextRangeAttribute] || 375 isEqualToString:NSAccessibilitySelectedTextRangeAttribute] ||
375 [attributeName 376 [attributeName
376 isEqualToString:NSAccessibilityVisibleCharacterRangeAttribute]) { 377 isEqualToString:NSAccessibilityVisibleCharacterRangeAttribute]) {
377 return NO; 378 return NO;
378 } 379 }
379 380
380 if ([attributeName isEqualToString:NSAccessibilityValueAttribute] || 381 if ([attributeName isEqualToString:NSAccessibilityValueAttribute] ||
381 [attributeName isEqualToString:NSAccessibilitySelectedTextAttribute]) 382 [attributeName isEqualToString:NSAccessibilitySelectedTextAttribute])
382 return node_->GetDelegate()->CanSetStringValue(); 383 return !ui::AXNodeData::IsFlagSet(node_->GetData().state,
384 ui::AX_STATE_READ_ONLY);
383 385
384 if ([attributeName isEqualToString:NSAccessibilityFocusedAttribute]) { 386 if ([attributeName isEqualToString:NSAccessibilityFocusedAttribute]) {
385 return ui::AXNodeData::IsFlagSet(node_->GetData().state, 387 return ui::AXNodeData::IsFlagSet(node_->GetData().state,
386 ui::AX_STATE_FOCUSABLE); 388 ui::AX_STATE_FOCUSABLE);
387 } 389 }
388 390
389 // TODO(patricialor): Add callbacks for updating the above attributes except 391 // TODO(patricialor): Add callbacks for updating the above attributes except
390 // NSAccessibilityValueAttribute and return YES. 392 // NSAccessibilityValueAttribute and return YES.
391 return NO; 393 return NO;
392 } 394 }
393 395
394 - (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute { 396 - (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute {
397 ui::AXActionData data;
395 if ([value isKindOfClass:[NSString class]]) { 398 if ([value isKindOfClass:[NSString class]]) {
399 data.value = base::SysNSStringToUTF16(value);
396 if ([attribute isEqualToString:NSAccessibilityValueAttribute]) { 400 if ([attribute isEqualToString:NSAccessibilityValueAttribute]) {
397 node_->GetDelegate()->SetStringValue(base::SysNSStringToUTF16(value), 401 data.action = ui::AX_ACTION_SET_VALUE;
398 true);
399 } else if ([attribute 402 } else if ([attribute
400 isEqualToString:NSAccessibilitySelectedTextAttribute]) { 403 isEqualToString:NSAccessibilitySelectedTextAttribute]) {
401 node_->GetDelegate()->SetStringValue(base::SysNSStringToUTF16(value), 404 data.action = ui::AX_ACTION_REPLACE_SELECTED_TEXT;
402 false);
403 } 405 }
404 } else if ([value isKindOfClass:[NSNumber class]]) { 406 } else if ([value isKindOfClass:[NSNumber class]]) {
405 if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) { 407 if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) {
406 node_->GetDelegate()->SetFocused([value boolValue]); 408 data.action =
409 [value boolValue] ? ui::AX_ACTION_FOCUS : ui::AX_ACTION_BLUR;
407 } 410 }
408 } 411 }
409 412
413 if (data.action != ui::AX_ACTION_NONE)
414 node_->GetDelegate()->AccessibilityPerformAction(data);
415
410 // TODO(patricialor): Plumb through all the other writable attributes as 416 // TODO(patricialor): Plumb through all the other writable attributes as
411 // specified in accessibilityIsAttributeSettable. 417 // specified in accessibilityIsAttributeSettable.
412 } 418 }
413 419
414 - (id)accessibilityAttributeValue:(NSString*)attribute { 420 - (id)accessibilityAttributeValue:(NSString*)attribute {
415 SEL selector = NSSelectorFromString(attribute); 421 SEL selector = NSSelectorFromString(attribute);
416 if ([self respondsToSelector:selector]) 422 if ([self respondsToSelector:selector])
417 return [self performSelector:selector]; 423 return [self performSelector:selector];
418 return nil; 424 return nil;
419 } 425 }
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 } 595 }
590 NotifyMacEvent(native_node_, event_type); 596 NotifyMacEvent(native_node_, event_type);
591 } 597 }
592 598
593 int AXPlatformNodeMac::GetIndexInParent() { 599 int AXPlatformNodeMac::GetIndexInParent() {
594 // TODO(dmazzoni): implement this. http://crbug.com/396137 600 // TODO(dmazzoni): implement this. http://crbug.com/396137
595 return -1; 601 return -1;
596 } 602 }
597 603
598 } // namespace ui 604 } // namespace ui
OLDNEW
« no previous file with comments | « ui/accessibility/platform/ax_platform_node_delegate.h ('k') | ui/accessibility/platform/ax_platform_node_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698