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 3b9cb92993e1a44c4f346126a6d880e4c5e77768..b5a42ef04e4f5e33acf1cac82cb5b022016b1518 100644 |
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm |
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm |
@@ -307,12 +307,9 @@ NSDictionary* attributeToMethodNameMap = nil; |
dict = nil; |
} |
-- (id)initWithObject:(BrowserAccessibility*)accessibility |
- delegate:(id<BrowserAccessibilityDelegateCocoa>)delegate { |
- if ((self = [super init])) { |
+- (id)initWithObject:(BrowserAccessibility*)accessibility { |
+ if ((self = [super init])) |
browserAccessibility_ = accessibility; |
- delegate_ = delegate; |
- } |
return self; |
} |
@@ -666,8 +663,7 @@ NSDictionary* attributeToMethodNameMap = nil; |
- (NSValue*)position { |
NSPoint origin = [self origin]; |
NSSize size = [[self size] sizeValue]; |
- NSPoint pointInScreen = |
- [delegate_ accessibilityPointInScreen:origin size:size]; |
+ NSPoint pointInScreen = [self pointInScreen:origin size:size]; |
return [NSValue valueWithPoint:pointInScreen]; |
} |
@@ -681,6 +677,22 @@ NSDictionary* attributeToMethodNameMap = nil; |
return static_cast<ui::AXRole>(browserAccessibility_->GetRole()); |
} |
+- (content::BrowserAccessibilityDelegate*)delegate { |
+ return browserAccessibility_->manager() ? |
+ browserAccessibility_->manager()->delegate() : |
+ nil; |
+} |
+ |
+- (NSPoint)pointInScreen:(NSPoint)origin |
+ size:(NSSize)size { |
+ if (!browserAccessibility_) |
+ return NSZeroPoint; |
+ |
+ gfx::Rect bounds(origin.x, origin.y, size.width, size.height); |
+ gfx::Point point = [self delegate]->AccessibilityOriginInScreen(bounds); |
+ return NSMakePoint(point.x(), point.y()); |
+} |
+ |
// Returns a string indicating the NSAccessibility role of this object. |
- (NSString*)role { |
ui::AXRole role = [self internalRole]; |
@@ -1005,7 +1017,13 @@ NSDictionary* attributeToMethodNameMap = nil; |
} |
- (id)window { |
- return [delegate_ window]; |
+ if (!browserAccessibility_) |
+ return nil; |
+ |
+ BrowserAccessibilityManagerMac* manager = |
+ static_cast<BrowserAccessibilityManagerMac*>( |
+ browserAccessibility_->manager()); |
+ return [manager->parent_view() window]; |
} |
- (NSString*)methodNameForAttribute:(NSString*)attribute { |
@@ -1161,8 +1179,7 @@ NSDictionary* attributeToMethodNameMap = nil; |
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]; |
+ NSPoint pointInScreen = [self pointInScreen:origin size:size]; |
NSRect nsrect = NSMakeRect( |
pointInScreen.x, pointInScreen.y, rect.width(), rect.height()); |
return [NSValue valueWithRect:nsrect]; |
@@ -1466,11 +1483,13 @@ NSDictionary* attributeToMethodNameMap = nil; |
if (!browserAccessibility_) |
return; |
- // TODO(feldstein): Support more actions. |
- if ([action isEqualToString:NSAccessibilityPressAction]) |
- [delegate_ doDefaultAction:browserAccessibility_->GetId()]; |
- else if ([action isEqualToString:NSAccessibilityShowMenuAction]) |
- [delegate_ performShowMenuAction:self]; |
+ // TODO(dmazzoni): Support more actions. |
+ if ([action isEqualToString:NSAccessibilityPressAction]) { |
+ [self delegate]->AccessibilityDoDefaultAction( |
+ browserAccessibility_->GetId()); |
+ } else if ([action isEqualToString:NSAccessibilityShowMenuAction]) { |
+ [self delegate]->AccessibilityShowMenu(browserAccessibility_->GetId()); |
+ } |
} |
// Returns the description of the given action. |
@@ -1496,15 +1515,14 @@ NSDictionary* attributeToMethodNameMap = nil; |
if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) { |
NSNumber* focusedNumber = value; |
BOOL focused = [focusedNumber intValue]; |
- [delegate_ setAccessibilityFocus:focused |
- accessibilityId:browserAccessibility_->GetId()]; |
+ if (focused) |
+ [self delegate]->AccessibilitySetFocus(browserAccessibility_->GetId()); |
} |
if ([attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute]) { |
NSRange range = [(NSValue*)value rangeValue]; |
- [delegate_ |
- accessibilitySetTextSelection:browserAccessibility_->GetId() |
- startOffset:range.location |
- endOffset:range.location + range.length]; |
+ [self delegate]->AccessibilitySetTextSelection( |
+ browserAccessibility_->GetId(), |
+ range.location, range.location + range.length); |
} |
} |