Chromium Code Reviews| 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 9edb01336f2b23b0513e8bf4e20d314dc76925e0..fe768e949f02f2737b2d55b0a06a101d2fa7bcd3 100644 |
| --- a/ui/accessibility/platform/ax_platform_node_mac.mm |
| +++ b/ui/accessibility/platform/ax_platform_node_mac.mm |
| @@ -355,23 +355,30 @@ void NotifyMacEvent(AXPlatformNodeCocoa* target, ui::AXEvent event_type) { |
| // Attributes required for user-editable controls. |
| NSArray* const kValueAttributes = @[ NSAccessibilityValueAttribute ]; |
| - // Attributes required for textfields. |
| - NSArray* const kTextfieldAttributes = @[ |
| + // Attributes required for unprotected textfields. |
| + NSArray* const kUnprotectedTextfieldAttributes = @[ |
| NSAccessibilityInsertionPointLineNumberAttribute, |
| NSAccessibilityNumberOfCharactersAttribute, |
| - NSAccessibilityPlaceholderValueAttribute, |
| NSAccessibilitySelectedTextAttribute, |
| NSAccessibilitySelectedTextRangeAttribute, |
| NSAccessibilityVisibleCharacterRangeAttribute, |
| ]; |
| + // Required for all textfields, including protected ones. |
| + NSString* const kTextfieldAttributes = |
| + NSAccessibilityPlaceholderValueAttribute; |
| + |
| base::scoped_nsobject<NSMutableArray> axAttributes( |
| [[NSMutableArray alloc] init]); |
| [axAttributes addObjectsFromArray:kAllRoleAttributes]; |
| switch (node_->GetData().role) { |
| case ui::AX_ROLE_TEXT_FIELD: |
| - [axAttributes addObjectsFromArray:kTextfieldAttributes]; |
| + [axAttributes addObject:kTextfieldAttributes]; |
| + if (!ui::AXNodeData::IsFlagSet(node_->GetData().state, |
| + ui::AX_STATE_PROTECTED)) { |
| + [axAttributes addObjectsFromArray:kUnprotectedTextfieldAttributes]; |
| + } |
| // Fallthrough. |
| case ui::AX_ROLE_CHECK_BOX: |
| case ui::AX_ROLE_COMBO_BOX: |
| @@ -583,12 +590,16 @@ void NotifyMacEvent(AXPlatformNodeCocoa* target, ui::AXEvent event_type) { |
| // Text-specific attributes. |
| - (NSString*)AXSelectedText { |
| + if (ui::AXNodeData::IsFlagSet(node_->GetData().state, ui::AX_STATE_PROTECTED)) |
| + return nil; |
|
tapted
2017/02/21 04:28:46
nit: blank line after
Patti Lor
2017/02/23 04:24:18
Done.
|
| NSRange selectedTextRange; |
| [[self AXSelectedTextRange] getValue:&selectedTextRange]; |
| return [[self AXValue] substringWithRange:selectedTextRange]; |
| } |
| - (NSValue*)AXSelectedTextRange { |
| + if (ui::AXNodeData::IsFlagSet(node_->GetData().state, ui::AX_STATE_PROTECTED)) |
| + return nil; |
|
tapted
2017/02/21 04:28:46
nit: blank line after (for the 3 below I wouldn't
Patti Lor
2017/02/23 04:24:18
Done.
|
| int textDir, start, end; |
| node_->GetIntAttribute(ui::AX_ATTR_TEXT_DIRECTION, &textDir); |
| node_->GetIntAttribute(ui::AX_ATTR_TEXT_SEL_START, &start); |
| @@ -603,14 +614,20 @@ void NotifyMacEvent(AXPlatformNodeCocoa* target, ui::AXEvent event_type) { |
| } |
| - (NSNumber*)AXNumberOfCharacters { |
| + if (ui::AXNodeData::IsFlagSet(node_->GetData().state, ui::AX_STATE_PROTECTED)) |
| + return nil; |
| return @([[self AXValue] length]); |
| } |
| - (NSValue*)AXVisibleCharacterRange { |
| + if (ui::AXNodeData::IsFlagSet(node_->GetData().state, ui::AX_STATE_PROTECTED)) |
| + return nil; |
| return [NSValue valueWithRange:{0, [[self AXNumberOfCharacters] intValue]}]; |
| } |
| - (NSNumber*)AXInsertionPointLineNumber { |
| + if (ui::AXNodeData::IsFlagSet(node_->GetData().state, ui::AX_STATE_PROTECTED)) |
| + return nil; |
| // Multiline is not supported on views. |
| return @0; |
| } |