| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |