Index: content/browser/accessibility/browser_accessibility.cc |
diff --git a/content/browser/accessibility/browser_accessibility.cc b/content/browser/accessibility/browser_accessibility.cc |
index ce558fac8cc3446bc5e6f129a9e92f9f891d9e75..f7798a28dc7d41f635b4775fdfb224ffe9aaa830 100644 |
--- a/content/browser/accessibility/browser_accessibility.cc |
+++ b/content/browser/accessibility/browser_accessibility.cc |
@@ -26,8 +26,7 @@ BrowserAccessibility* BrowserAccessibility::Create() { |
BrowserAccessibility::BrowserAccessibility() |
: manager_(NULL), |
- node_(NULL), |
- child_frame_tree_node_id_(0) { |
+ node_(NULL) { |
} |
BrowserAccessibility::~BrowserAccessibility() { |
@@ -64,15 +63,6 @@ bool BrowserAccessibility::PlatformIsLeaf() const { |
} |
uint32 BrowserAccessibility::PlatformChildCount() const { |
- if (child_frame_tree_node_id_ && |
- manager_ && manager_->delegate()) { |
- BrowserAccessibilityManager* child_manager = |
- manager_->delegate()->AccessibilityGetChildFrame( |
- child_frame_tree_node_id_); |
- if (child_manager) |
- return 1; |
- } |
- |
return PlatformIsLeaf() ? 0 : InternalChildCount(); |
} |
@@ -93,18 +83,17 @@ bool BrowserAccessibility::IsDescendantOf( |
BrowserAccessibility* BrowserAccessibility::PlatformGetChild( |
uint32 child_index) const { |
- if (child_index == 0 && child_frame_tree_node_id_ && |
- manager_ && |
- manager_->delegate()) { |
+ DCHECK(child_index < InternalChildCount()); |
+ BrowserAccessibility* result = InternalGetChild(child_index); |
+ |
+ if (result->HasBoolAttribute(ui::AX_ATTR_IS_AX_TREE_HOST)) { |
BrowserAccessibilityManager* child_manager = |
- manager_->delegate()->AccessibilityGetChildFrame( |
- child_frame_tree_node_id_); |
+ manager_->delegate()->AccessibilityGetChildFrame(result->GetId()); |
if (child_manager) |
- return child_manager->GetRoot(); |
+ result = child_manager->GetRoot(); |
} |
- DCHECK(child_index < InternalChildCount()); |
- return InternalGetChild(child_index); |
+ return result; |
} |
BrowserAccessibility* BrowserAccessibility::GetPreviousSibling() { |
@@ -144,7 +133,16 @@ BrowserAccessibility* BrowserAccessibility::GetParent() const { |
ui::AXNode* parent = node_->parent(); |
if (parent) |
return manager_->GetFromAXNode(parent); |
- return manager_->GetCrossFrameParent(); |
+ |
+ if (!manager_->delegate()) |
+ return NULL; |
+ |
+ BrowserAccessibility* host_node = |
+ manager_->delegate()->AccessibilityGetParentFrame(); |
+ if (!host_node) |
+ return NULL; |
+ |
+ return host_node->GetParent(); |
} |
int32 BrowserAccessibility::GetIndexInParent() const { |
@@ -702,10 +700,4 @@ int BrowserAccessibility::GetStaticTextLenRecursive() const { |
return len; |
} |
-void BrowserAccessibility::SetChildFrameTreeNodeId( |
- int64 child_frame_tree_node_id) { |
- child_frame_tree_node_id_ = child_frame_tree_node_id; |
- manager_->NotifyAccessibilityEvent(ui::AX_EVENT_CHILDREN_CHANGED, this); |
-} |
- |
} // namespace content |