Chromium Code Reviews| Index: content/browser/accessibility/browser_accessibility_cocoa.mm |
| diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm |
| index cfc924bb2df5befe14af22d426f37c5d1638fec1..3566d396c9dce014d2f86822e5f3680e33b4b5b1 100644 |
| --- a/content/browser/accessibility/browser_accessibility_cocoa.mm |
| +++ b/content/browser/accessibility/browser_accessibility_cocoa.mm |
| @@ -148,7 +148,7 @@ RoleMap BuildRoleMap() { |
| { ui::AX_ROLE_TEXT_AREA, NSAccessibilityTextAreaRole }, |
| { ui::AX_ROLE_TEXT_FIELD, NSAccessibilityTextFieldRole }, |
| { ui::AX_ROLE_TIMER, NSAccessibilityGroupRole }, |
| - { ui::AX_ROLE_TOGGLE_BUTTON, NSAccessibilityButtonRole }, |
| + { ui::AX_ROLE_TOGGLE_BUTTON, NSAccessibilityCheckBoxRole }, |
| { ui::AX_ROLE_TOOLBAR, NSAccessibilityToolbarRole }, |
| { ui::AX_ROLE_TOOLTIP, NSAccessibilityGroupRole }, |
| { ui::AX_ROLE_TREE, NSAccessibilityOutlineRole }, |
| @@ -206,6 +206,7 @@ RoleMap BuildSubroleMap() { |
| { ui::AX_ROLE_STATUS, @"AXApplicationStatus" }, |
| { ui::AX_ROLE_TAB_PANEL, @"AXTabPanel" }, |
| { ui::AX_ROLE_TIMER, @"AXApplicationTimer" }, |
| + { ui::AX_ROLE_TOGGLE_BUTTON, @"AXToggleButton" }, |
| { ui::AX_ROLE_TOOLTIP, @"AXUserInterfaceTooltip" }, |
| { ui::AX_ROLE_TREE_ITEM, NSAccessibilityOutlineRowSubrole }, |
| }; |
| @@ -663,6 +664,17 @@ NSDictionary* attributeToMethodNameMap = nil; |
| ui::AX_ATTR_CANVAS_HAS_FALLBACK)) { |
| return NSAccessibilityGroupRole; |
| } |
| + if (role == ui::AX_ROLE_BUTTON) { |
| + bool is_aria_pressed_defined; |
|
dmazzoni
2014/03/06 06:09:09
Nit: Obj-C files use camelCase for local variables
aboxhall
2014/03/06 17:45:58
Done.
|
| + bool is_mixed; |
| + browserAccessibility_->GetAriaTristate("aria-pressed", |
| + &is_aria_pressed_defined, |
| + &is_mixed); |
| + if (is_aria_pressed_defined) |
| + return NSAccessibilityCheckBoxRole; |
| + else |
| + return NSAccessibilityButtonRole; |
| + } |
| return NativeRoleFromAXRole(role); |
| } |
| @@ -710,6 +722,9 @@ NSDictionary* attributeToMethodNameMap = nil; |
| // This control is similar to what VoiceOver calls a "stepper". |
| return base::SysUTF16ToNSString(content_client->GetLocalizedString( |
| IDS_AX_ROLE_STEPPER)); |
| + case ui::AX_ROLE_TOGGLE_BUTTON: |
| + return base::SysUTF16ToNSString(content_client->GetLocalizedString( |
| + IDS_AX_ROLE_TOGGLE_BUTTON)); |
| default: |
| break; |
| } |
| @@ -876,6 +891,18 @@ NSDictionary* attributeToMethodNameMap = nil; |
| value = 2; |
| } |
| return [NSNumber numberWithInt:value]; |
| + } else if ([self internalRole] == ui::AX_ROLE_TOGGLE_BUTTON) { |
| + int value = 0; |
| + bool aria_pressed_defined; |
| + bool aria_pressed_mixed; |
| + value = browserAccessibility_->GetAriaTristate( |
| + "aria-pressed", &aria_pressed_defined, &aria_pressed_mixed) ? 1 : 0; |
| + |
| + if (aria_pressed_mixed) |
| + value = 2; |
| + |
| + return [NSNumber numberWithInt:value]; |
| + |
| } else if ([role isEqualToString:NSAccessibilityProgressIndicatorRole] || |
| [role isEqualToString:NSAccessibilitySliderRole] || |
| [role isEqualToString:NSAccessibilityScrollBarRole]) { |