| Index: content/browser/accessibility/browser_accessibility.cc
|
| diff --git a/content/browser/accessibility/browser_accessibility.cc b/content/browser/accessibility/browser_accessibility.cc
|
| index 9d4fe101afc599be1f15caf17a87cdfc0a74103b..a5b7edc7cb8235ff1024d3e82b43805a8514c109 100644
|
| --- a/content/browser/accessibility/browser_accessibility.cc
|
| +++ b/content/browser/accessibility/browser_accessibility.cc
|
| @@ -60,6 +60,14 @@ bool BrowserAccessibility::PlatformIsLeaf() const {
|
| }
|
|
|
| uint32 BrowserAccessibility::PlatformChildCount() const {
|
| + if (GetBoolAttribute(ui::AX_ATTR_IS_AX_TREE_HOST)) {
|
| + // Check if the child frame currently exists.
|
| + if (manager_->delegate()->AccessibilityGetChildFrame(GetId()))
|
| + return 1;
|
| +
|
| + return 0;
|
| + }
|
| +
|
| return PlatformIsLeaf() ? 0 : InternalChildCount();
|
| }
|
|
|
| @@ -80,14 +88,16 @@ bool BrowserAccessibility::IsDescendantOf(
|
|
|
| BrowserAccessibility* BrowserAccessibility::PlatformGetChild(
|
| uint32 child_index) const {
|
| - DCHECK(child_index < InternalChildCount());
|
| - BrowserAccessibility* result = InternalGetChild(child_index);
|
| + DCHECK(child_index < PlatformChildCount());
|
| + BrowserAccessibility* result = nullptr;
|
|
|
| - if (result->HasBoolAttribute(ui::AX_ATTR_IS_AX_TREE_HOST)) {
|
| + if (GetBoolAttribute(ui::AX_ATTR_IS_AX_TREE_HOST)) {
|
| BrowserAccessibilityManager* child_manager =
|
| - manager_->delegate()->AccessibilityGetChildFrame(result->GetId());
|
| + manager_->delegate()->AccessibilityGetChildFrame(GetId());
|
| if (child_manager)
|
| result = child_manager->GetRoot();
|
| + } else {
|
| + result = InternalGetChild(child_index);
|
| }
|
|
|
| return result;
|
| @@ -150,7 +160,7 @@ BrowserAccessibility* BrowserAccessibility::GetParent() const {
|
| if (!host_node)
|
| return NULL;
|
|
|
| - return host_node->GetParent();
|
| + return host_node;
|
| }
|
|
|
| int32 BrowserAccessibility::GetIndexInParent() const {
|
|
|