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

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

Issue 2230093002: MacViews a11y: Allow accessibility clients to set the AXValue on some controls. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Don't say attributes are settable until implemented. Created 4 years, 4 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 79fa94904ba8d2fbd2fcb4f57b97db3fa7f8ca29..74c62122ce453201089e346aa6394de32f6d5a5a 100644
--- a/ui/accessibility/platform/ax_platform_node_mac.mm
+++ b/ui/accessibility/platform/ax_platform_node_mac.mm
@@ -349,10 +349,46 @@ void NotifyMacEvent(NSView* target, ui::AXEvent event_type) {
return axAttributes.autorelease();
}
-- (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute {
+- (BOOL)accessibilityIsAttributeSettable:(NSString*)attributeName {
+ // Allow certain attributes to be written via an accessibility client. A
+ // writable attribute will only appear as such if the accessibility element
+ // has a value set for that attribute.
+ if ([attributeName isEqualToString:NSAccessibilitySelectedAttribute] ||
+ [attributeName
+ isEqualToString:NSAccessibilitySelectedChildrenAttribute] ||
+ [attributeName
+ isEqualToString:NSAccessibilitySelectedTextRangeAttribute] ||
+ [attributeName
+ isEqualToString:NSAccessibilityVisibleCharacterRangeAttribute]) {
+ return NO;
+ }
+
+ if ([attributeName isEqualToString:NSAccessibilityValueAttribute])
+ return node_->GetDelegate()->CanSetStringValue();
+ // TODO(patricialor): Implement and merge with conditional for value above.
+ if ([attributeName isEqualToString:NSAccessibilitySelectedTextAttribute])
+ return NO;
+
+ if ([attributeName isEqualToString:NSAccessibilityFocusedAttribute]) {
+ if (ui::AXViewState::IsFlagSet(node_->GetData().state,
+ ui::AX_STATE_FOCUSABLE))
+ return NO;
+ }
+
+ // TODO(patricialor): Add callbacks for updating the above attributes except
+ // NSAccessibilityValueAttribute and return YES.
return NO;
}
+- (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute {
+ if ([attribute isEqualToString:NSAccessibilityValueAttribute] &&
+ [value isKindOfClass:[NSString class]])
+ node_->GetDelegate()->SetStringValue(base::SysNSStringToUTF16(value));
+
+ // TODO(patricialor): Plumb through all the other writable attributes as
+ // specified in accessibilityIsAttributeSettable.
+}
+
- (id)accessibilityAttributeValue:(NSString*)attribute {
SEL selector = NSSelectorFromString(attribute);
if ([self respondsToSelector:selector])
« no previous file with comments | « ui/accessibility/platform/ax_platform_node_delegate.h ('k') | ui/accessibility/platform/test_ax_node_wrapper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698