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

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

Issue 10911287: Make spin button accessible on Mac. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 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/spinbutton.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 617f95a3f884592ccbb9866180124d27d68a89c7..ddaedb2fb20815247224135c46d26c62e20896ab 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -145,11 +145,11 @@ RoleMap BuildRoleMap() {
// TODO(dtseng): we don't correctly support the attributes for these roles.
// { AccessibilityNodeData::ROLE_SCROLLAREA,
// NSAccessibilityScrollAreaRole },
- // { AccessibilityNodeData::ROLE_SCROLLBAR, NSAccessibilityScrollBarRole },
+ { AccessibilityNodeData::ROLE_SCROLLBAR, NSAccessibilityScrollBarRole },
{ AccessibilityNodeData::ROLE_SHEET, NSAccessibilitySheetRole },
{ AccessibilityNodeData::ROLE_SLIDER, NSAccessibilitySliderRole },
{ AccessibilityNodeData::ROLE_SLIDER_THUMB, NSAccessibilityGroupRole },
- { AccessibilityNodeData::ROLE_SPIN_BUTTON, NSAccessibilityTextFieldRole },
+ { AccessibilityNodeData::ROLE_SPIN_BUTTON, NSAccessibilitySliderRole },
David Tseng 2012/09/13 19:00:57 I think we actually want to map to NSAccessibility
dmazzoni 2012/09/13 19:32:29 That's what WebKit maps it to on Mac, but it doesn
David Tseng 2012/09/13 22:00:28 On 2012/09/13 19:32:29, Dominic Mazzoni wrote: Ac
{ AccessibilityNodeData::ROLE_SPLITTER, NSAccessibilitySplitterRole },
{ AccessibilityNodeData::ROLE_SPLIT_GROUP, NSAccessibilitySplitGroupRole },
{ AccessibilityNodeData::ROLE_STATIC_TEXT, NSAccessibilityStaticTextRole },
@@ -269,6 +269,7 @@ NSDictionary* attributeToMethodNameMap = nil;
{ NSAccessibilityMaxValueAttribute, @"maxValue" },
{ NSAccessibilityMinValueAttribute, @"minValue" },
{ NSAccessibilityNumberOfCharactersAttribute, @"numberOfCharacters" },
+ { NSAccessibilityOrientationAttribute, @"orientation" },
{ NSAccessibilityParentAttribute, @"parent" },
{ NSAccessibilityPositionAttribute, @"position" },
{ NSAccessibilityRoleAttribute, @"role" },
@@ -282,6 +283,7 @@ NSDictionary* attributeToMethodNameMap = nil;
{ NSAccessibilityTopLevelUIElementAttribute, @"window" },
{ NSAccessibilityURLAttribute, @"url" },
{ NSAccessibilityValueAttribute, @"value" },
+ { NSAccessibilityValueDescriptionAttribute, @"valueDescription" },
{ NSAccessibilityVisibleCharacterRangeAttribute, @"visibleCharacterRange" },
{ NSAccessibilityWindowAttribute, @"window" },
{ @"AXAccessKey", @"accessKey" },
@@ -498,6 +500,20 @@ NSDictionary* attributeToMethodNameMap = nil;
return [NSNumber numberWithFloat:floatValue];
}
+- (NSString*)orientation {
+ // We present a spin button as a vertical slider, with a role description
+ // of "spin button".
David Tseng 2012/09/13 22:00:28 Can we at least call it something more familiar li
+ AccessibilityNodeData::Role internal_role =
+ static_cast<AccessibilityNodeData::Role>(browserAccessibility_->role());
+ if (internal_role == AccessibilityNodeData::ROLE_SPIN_BUTTON)
+ return NSAccessibilityVerticalOrientationValue;
+
+ if (GetState(browserAccessibility_, AccessibilityNodeData::STATE_VERTICAL))
+ return NSAccessibilityVerticalOrientationValue;
+ else
+ return NSAccessibilityHorizontalOrientationValue;
+}
+
- (NSNumber*)numberOfCharacters {
return [NSNumber numberWithInt:browserAccessibility_->value().length()];
}
@@ -583,9 +599,15 @@ NSDictionary* attributeToMethodNameMap = nil;
AccessibilityNodeData::Role internal_role =
static_cast<AccessibilityNodeData::Role>(browserAccessibility_->role());
- if (internal_role == AccessibilityNodeData::ROLE_FOOTER) {
- return base::SysUTF16ToNSString(content_client->GetLocalizedString(
- IDS_AX_ROLE_FOOTER));
+ switch(internal_role) {
+ case AccessibilityNodeData::ROLE_FOOTER:
+ return base::SysUTF16ToNSString(content_client->GetLocalizedString(
+ IDS_AX_ROLE_FOOTER));
+ case AccessibilityNodeData::ROLE_SPIN_BUTTON:
+ return base::SysUTF16ToNSString(content_client->GetLocalizedString(
+ IDS_AX_ROLE_SPIN_BUTTON));
+ default:
+ break;
}
return NSAccessibilityRoleDescription(role, nil);
@@ -720,6 +742,13 @@ NSDictionary* attributeToMethodNameMap = nil;
return base::SysUTF16ToNSString(browserAccessibility_->value());
}
+- (NSString*)valueDescription {
+ if (!browserAccessibility_->value().empty())
+ return base::SysUTF16ToNSString(browserAccessibility_->value());
+ else
+ return nil;
+}
+
- (NSValue*)visibleCharacterRange {
return [NSValue valueWithRange:
NSMakeRange(0, browserAccessibility_->value().length())];
@@ -942,6 +971,8 @@ NSDictionary* attributeToMethodNameMap = nil;
[ret addObjectsFromArray:[NSArray arrayWithObjects:
NSAccessibilityMaxValueAttribute,
NSAccessibilityMinValueAttribute,
+ NSAccessibilityOrientationAttribute,
+ NSAccessibilityValueDescriptionAttribute,
nil]];
}
« no previous file with comments | « no previous file | content/test/data/accessibility/spinbutton.html » ('j') | webkit/glue/webkit_strings.grd » ('J')

Powered by Google App Engine
This is Rietveld 408576698