| Index: content/browser/renderer_host/render_widget_host_view_mac.mm
|
| diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
|
| index 17c73d59ebbf3e858b5fdf33648e2828e763ba29..82255825b061d603f6d5bb7ab7924a237d65cb66 100644
|
| --- a/content/browser/renderer_host/render_widget_host_view_mac.mm
|
| +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
|
| @@ -2065,13 +2065,14 @@
|
| render_widget_host_->SetBackgroundOpaque(opaque);
|
| }
|
|
|
| -BrowserAccessibilityManager*
|
| - RenderWidgetHostViewMac::CreateBrowserAccessibilityManager(
|
| - BrowserAccessibilityDelegate* delegate) {
|
| - return new BrowserAccessibilityManagerMac(
|
| - cocoa_view_,
|
| - BrowserAccessibilityManagerMac::GetEmptyDocument(),
|
| - delegate);
|
| +void RenderWidgetHostViewMac::CreateBrowserAccessibilityManagerIfNeeded() {
|
| + if (!GetBrowserAccessibilityManager()) {
|
| + SetBrowserAccessibilityManager(
|
| + new BrowserAccessibilityManagerMac(
|
| + cocoa_view_,
|
| + BrowserAccessibilityManagerMac::GetEmptyDocument(),
|
| + render_widget_host_));
|
| + }
|
| }
|
|
|
| gfx::Point RenderWidgetHostViewMac::AccessibilityOriginInScreen(
|
| @@ -2086,9 +2087,33 @@
|
| return gfx::Point(originInScreen.x, originInScreen.y);
|
| }
|
|
|
| -void RenderWidgetHostViewMac::AccessibilityShowMenu(const gfx::Point& point) {
|
| - NSPoint location = NSMakePoint(point.x(), point.y());
|
| +void RenderWidgetHostViewMac::OnAccessibilitySetFocus(int accObjId) {
|
| + // Immediately set the focused item even though we have not officially set
|
| + // focus on it as VoiceOver expects to get the focused item after this
|
| + // method returns.
|
| + BrowserAccessibilityManager* manager = GetBrowserAccessibilityManager();
|
| + if (manager)
|
| + manager->SetFocus(manager->GetFromID(accObjId), false);
|
| +}
|
| +
|
| +void RenderWidgetHostViewMac::AccessibilityShowMenu(int accObjId) {
|
| + BrowserAccessibilityManager* manager = GetBrowserAccessibilityManager();
|
| + if (!manager)
|
| + return;
|
| + BrowserAccessibilityCocoa* obj =
|
| + manager->GetFromID(accObjId)->ToBrowserAccessibilityCocoa();
|
| +
|
| + // Performs a right click copying WebKit's
|
| + // accessibilityPerformShowMenuAction.
|
| + NSPoint objOrigin = [obj origin];
|
| + NSSize size = [[obj size] sizeValue];
|
| + gfx::Point origin = AccessibilityOriginInScreen(
|
| + gfx::Rect(objOrigin.x, objOrigin.y, size.width, size.height));
|
| + NSPoint location = NSMakePoint(origin.x(), origin.y());
|
| location = [[cocoa_view_ window] convertScreenToBase:location];
|
| + location.x += size.width/2;
|
| + location.y += size.height/2;
|
| +
|
| NSEvent* fakeRightClick = [NSEvent
|
| mouseEventWithType:NSRightMouseDown
|
| location:location
|
| @@ -2102,6 +2127,8 @@
|
|
|
| [cocoa_view_ mouseEvent:fakeRightClick];
|
| }
|
| +
|
| +
|
|
|
| void RenderWidgetHostViewMac::SetTextInputActive(bool active) {
|
| if (active) {
|
| @@ -3150,7 +3177,7 @@
|
|
|
| - (id)accessibilityAttributeValue:(NSString *)attribute {
|
| BrowserAccessibilityManager* manager =
|
| - renderWidgetHostView_->GetHost()->GetRootBrowserAccessibilityManager();
|
| + renderWidgetHostView_->GetBrowserAccessibilityManager();
|
|
|
| // Contents specifies document view of RenderWidgetHostViewCocoa provided by
|
| // BrowserAccessibilityManager. Children includes all subviews in addition to
|
| @@ -3175,28 +3202,25 @@
|
| }
|
|
|
| - (id)accessibilityHitTest:(NSPoint)point {
|
| - BrowserAccessibilityManager* manager =
|
| - renderWidgetHostView_->GetHost()->GetRootBrowserAccessibilityManager();
|
| - if (!manager)
|
| + if (!renderWidgetHostView_->GetBrowserAccessibilityManager())
|
| return self;
|
| NSPoint pointInWindow = [[self window] convertScreenToBase:point];
|
| NSPoint localPoint = [self convertPoint:pointInWindow fromView:nil];
|
| localPoint.y = NSHeight([self bounds]) - localPoint.y;
|
| - BrowserAccessibilityCocoa* root =
|
| - manager->GetRoot()->ToBrowserAccessibilityCocoa();
|
| + BrowserAccessibilityCocoa* root = renderWidgetHostView_->
|
| + GetBrowserAccessibilityManager()->
|
| + GetRoot()->ToBrowserAccessibilityCocoa();
|
| id obj = [root accessibilityHitTest:localPoint];
|
| return obj;
|
| }
|
|
|
| - (BOOL)accessibilityIsIgnored {
|
| - BrowserAccessibilityManager* manager =
|
| - renderWidgetHostView_->GetHost()->GetRootBrowserAccessibilityManager();
|
| - return !manager;
|
| + return !renderWidgetHostView_->GetBrowserAccessibilityManager();
|
| }
|
|
|
| - (NSUInteger)accessibilityGetIndexOf:(id)child {
|
| BrowserAccessibilityManager* manager =
|
| - renderWidgetHostView_->GetHost()->GetRootBrowserAccessibilityManager();
|
| + renderWidgetHostView_->GetBrowserAccessibilityManager();
|
| // Only child is root.
|
| if (manager &&
|
| manager->GetRoot()->ToBrowserAccessibilityCocoa() == child) {
|
| @@ -3208,7 +3232,7 @@
|
|
|
| - (id)accessibilityFocusedUIElement {
|
| BrowserAccessibilityManager* manager =
|
| - renderWidgetHostView_->GetHost()->GetRootBrowserAccessibilityManager();
|
| + renderWidgetHostView_->GetBrowserAccessibilityManager();
|
| if (manager) {
|
| BrowserAccessibility* focused_item = manager->GetFocus(NULL);
|
| DCHECK(focused_item);
|
|
|