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

Unified Diff: content/browser/accessibility/browser_accessibility_cocoa.mm

Issue 184103036: Follow ARIA spec guidelines for role=button with aria-pressed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove unused include of string_util.h in browser_accessibility_cocoa.mm Created 6 years, 10 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
« no previous file with comments | « no previous file | content/test/data/accessibility/aria-pressed.html » ('j') | webkit/glue/webkit_strings.grd » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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]) {
« no previous file with comments | « no previous file | content/test/data/accessibility/aria-pressed.html » ('j') | webkit/glue/webkit_strings.grd » ('J')

Powered by Google App Engine
This is Rietveld 408576698