| 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 1e368c6f8d8e7cf6691f96c52c30713537b5d071..0bc4260ac629c53f97b73de99dfd7371a88ace76 100644
|
| --- a/content/browser/accessibility/browser_accessibility_manager.cc
|
| +++ b/content/browser/accessibility/browser_accessibility_manager.cc
|
| @@ -290,10 +290,24 @@ BrowserAccessibility* BrowserAccessibilityManager::GetActiveDescendantFocus(
|
|
|
| BrowserAccessibility* BrowserAccessibilityManager::GetFocus(
|
| BrowserAccessibility* root) {
|
| - if (focus_ && (!root || focus_->IsDescendantOf(root->node())))
|
| - return GetFromAXNode(focus_);
|
| + if (!focus_)
|
| + return NULL;
|
|
|
| - return NULL;
|
| + if (root && !focus_->IsDescendantOf(root->node()))
|
| + return NULL;
|
| +
|
| + if (!delegate())
|
| + return NULL;
|
| +
|
| + BrowserAccessibility* obj = GetFromAXNode(focus_);
|
| + if (obj->HasBoolAttribute(ui::AX_ATTR_IS_AX_TREE_HOST)) {
|
| + BrowserAccessibilityManager* child_manager =
|
| + delegate()->AccessibilityGetChildFrame(obj->GetId());
|
| + if (child_manager)
|
| + return child_manager->GetFocus(child_manager->GetRoot());
|
| + }
|
| +
|
| + return obj;
|
| }
|
|
|
| void BrowserAccessibilityManager::SetFocus(ui::AXNode* node, bool notify) {
|
|
|