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 4b88bc6078de3aec3fdc9ee64f25cb0df7910c5c..15ac6084474095f91c801876a866bb8ca57758a4 100644 |
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm |
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm |
@@ -641,7 +641,11 @@ NSDictionary* attributeToMethodNameMap = nil; |
} |
- (NSValue*)position { |
- return [NSValue valueWithPoint:[delegate_ accessibilityPointInScreen:self]]; |
+ NSPoint origin = [self origin]; |
+ NSSize size = [[self size] sizeValue]; |
+ NSPoint pointInScreen = |
+ [delegate_ accessibilityPointInScreen:origin size:size]; |
+ return [NSValue valueWithPoint:pointInScreen]; |
} |
- (NSNumber*)required { |
@@ -1085,13 +1089,27 @@ NSDictionary* attributeToMethodNameMap = nil; |
return nil; |
} |
+ if ([attribute isEqualToString: |
+ NSAccessibilityBoundsForRangeParameterizedAttribute]) { |
+ if ([self internalRole] != blink::WebAXRoleStaticText) |
+ return nil; |
+ NSRange range = [(NSValue*)parameter rangeValue]; |
+ gfx::Rect rect = browserAccessibility_->GetGlobalBoundsForRange( |
+ range.location, range.length); |
+ NSPoint origin = NSMakePoint(rect.x(), rect.y()); |
+ NSSize size = NSMakeSize(rect.width(), rect.height()); |
+ NSPoint pointInScreen = |
+ [delegate_ accessibilityPointInScreen:origin size:size]; |
+ NSRect nsrect = NSMakeRect( |
+ pointInScreen.x, pointInScreen.y, rect.width(), rect.height()); |
+ return [NSValue valueWithRect:nsrect]; |
+ } |
+ |
// TODO(dtseng): support the following attributes. |
if ([attribute isEqualTo: |
NSAccessibilityRangeForPositionParameterizedAttribute] || |
[attribute isEqualTo: |
NSAccessibilityRangeForIndexParameterizedAttribute] || |
- [attribute isEqualTo: |
- NSAccessibilityBoundsForRangeParameterizedAttribute] || |
[attribute isEqualTo:NSAccessibilityRTFForRangeParameterizedAttribute] || |
[attribute isEqualTo: |
NSAccessibilityStyleRangeForIndexParameterizedAttribute]) { |
@@ -1126,6 +1144,11 @@ NSDictionary* attributeToMethodNameMap = nil; |
NSAccessibilityStyleRangeForIndexParameterizedAttribute, |
nil]; |
} |
+ if ([self internalRole] == blink::WebAXRoleStaticText) { |
+ return [NSArray arrayWithObjects: |
+ NSAccessibilityBoundsForRangeParameterizedAttribute, |
+ nil]; |
+ } |
return nil; |
} |