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

Unified 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, 1 month 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 a30b42007f0140a42d8e60c9fce9f014b3031ff2..b41821eba3d279191741e762ade7b8a1cc1fedb0 100644
--- a/ui/accessibility/platform/ax_platform_node_mac.mm
+++ b/ui/accessibility/platform/ax_platform_node_mac.mm
@@ -9,6 +9,7 @@
#include "base/macros.h"
#include "base/strings/sys_string_conversions.h"
+#include "ui/accessibility/ax_action_data.h"
#include "ui/accessibility/ax_node_data.h"
#include "ui/accessibility/platform/ax_platform_node_delegate.h"
#import "ui/gfx/mac/coordinate_conversion.h"
@@ -379,7 +380,8 @@ void NotifyMacEvent(AXPlatformNodeCocoa* target, ui::AXEvent event_type) {
if ([attributeName isEqualToString:NSAccessibilityValueAttribute] ||
[attributeName isEqualToString:NSAccessibilitySelectedTextAttribute])
- return node_->GetDelegate()->CanSetStringValue();
+ return !ui::AXNodeData::IsFlagSet(node_->GetData().state,
+ ui::AX_STATE_READ_ONLY);
if ([attributeName isEqualToString:NSAccessibilityFocusedAttribute]) {
return ui::AXNodeData::IsFlagSet(node_->GetData().state,
@@ -392,21 +394,25 @@ void NotifyMacEvent(AXPlatformNodeCocoa* target, ui::AXEvent event_type) {
}
- (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute {
+ ui::AXActionData data;
if ([value isKindOfClass:[NSString class]]) {
+ data.value = base::SysNSStringToUTF16(value);
if ([attribute isEqualToString:NSAccessibilityValueAttribute]) {
- node_->GetDelegate()->SetStringValue(base::SysNSStringToUTF16(value),
- true);
+ data.action = ui::AX_ACTION_SET_VALUE;
} else if ([attribute
isEqualToString:NSAccessibilitySelectedTextAttribute]) {
- node_->GetDelegate()->SetStringValue(base::SysNSStringToUTF16(value),
- false);
+ data.action = ui::AX_ACTION_REPLACE_SELECTED_TEXT;
}
} else if ([value isKindOfClass:[NSNumber class]]) {
if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) {
- node_->GetDelegate()->SetFocused([value boolValue]);
+ data.action =
+ [value boolValue] ? ui::AX_ACTION_FOCUS : ui::AX_ACTION_BLUR;
}
}
+ if (data.action != ui::AX_ACTION_NONE)
+ node_->GetDelegate()->AccessibilityPerformAction(data);
+
// TODO(patricialor): Plumb through all the other writable attributes as
// specified in accessibilityIsAttributeSettable.
}
« 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