| Index: content/browser/accessibility/browser_accessibility_manager.cc
|
| diff --git a/content/browser/accessibility/browser_accessibility_manager.cc b/content/browser/accessibility/browser_accessibility_manager.cc
|
| index 0bc4260ac629c53f97b73de99dfd7371a88ace76..7e726bdb09009180812c9c8b26e021ece170381d 100644
|
| --- a/content/browser/accessibility/browser_accessibility_manager.cc
|
| +++ b/content/browser/accessibility/browser_accessibility_manager.cc
|
| @@ -362,8 +362,9 @@ void BrowserAccessibilityManager::SetTextSelection(
|
| }
|
|
|
| gfx::Rect BrowserAccessibilityManager::GetViewBounds() {
|
| - if (delegate_)
|
| - return delegate_->AccessibilityGetViewBounds();
|
| + BrowserAccessibilityDelegate* delegate = GetDelegateFromRootManager();
|
| + if (delegate)
|
| + return delegate->AccessibilityGetViewBounds();
|
| return gfx::Rect();
|
| }
|
|
|
| @@ -433,6 +434,19 @@ void BrowserAccessibilityManager::OnNodeChangeFinished(ui::AXNode* node) {
|
| GetFromAXNode(node)->OnUpdateFinished();
|
| }
|
|
|
| +BrowserAccessibilityDelegate*
|
| + BrowserAccessibilityManager::GetDelegateFromRootManager() {
|
| + BrowserAccessibilityManager* manager = this;
|
| + while (manager->delegate()) {
|
| + BrowserAccessibility* host_node_in_parent_frame =
|
| + manager->delegate()->AccessibilityGetParentFrame();
|
| + if (!host_node_in_parent_frame)
|
| + break;
|
| + manager = host_node_in_parent_frame->manager();
|
| + }
|
| + return manager->delegate();
|
| +}
|
| +
|
| ui::AXTreeUpdate BrowserAccessibilityManager::SnapshotAXTreeForTesting() {
|
| scoped_ptr<ui::AXTreeSource<const ui::AXNode*> > tree_source(
|
| tree_->CreateTreeSource());
|
|
|