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

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

Issue 25434005: Implement accessible BoundsForRange on Mac (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 1 month 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/browser/accessibility/browser_accessibility_delegate_mac.h » ('j') | no next file with comments »
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 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;
}
« no previous file with comments | « no previous file | content/browser/accessibility/browser_accessibility_delegate_mac.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698