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 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]]; |
| } |