Chromium Code Reviews| 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 6bdce2d907a503186a04788d2ba7731723866923..75e6bed8ccc63731c7db7b69bd2a5006b3b680c3 100644 |
| --- a/content/browser/accessibility/browser_accessibility_manager.cc |
| +++ b/content/browser/accessibility/browser_accessibility_manager.cc |
| @@ -7,6 +7,7 @@ |
| #include "base/logging.h" |
| #include "content/browser/accessibility/browser_accessibility.h" |
| #include "content/common/accessibility_messages.h" |
| +#include "ui/accessibility/ax_tree_serializer.h" |
| namespace content { |
| @@ -67,8 +68,9 @@ BrowserAccessibilityManager::BrowserAccessibilityManager( |
| BrowserAccessibilityFactory* factory) |
| : delegate_(delegate), |
| factory_(factory), |
| - tree_(new ui::AXTree()), |
| + tree_(new ui::AXSerializableTree()), |
| focus_(NULL), |
| + node_id_in_parent_frame_(0), |
|
Charlie Reis
2014/08/21 19:23:27
Let's not use a magic number here, since it's easy
dmazzoni
2014/08/25 06:49:36
This is also gone now.
|
| osk_state_(OSK_ALLOWED) { |
| tree_->SetDelegate(this); |
| } |
| @@ -79,7 +81,7 @@ BrowserAccessibilityManager::BrowserAccessibilityManager( |
| BrowserAccessibilityFactory* factory) |
| : delegate_(delegate), |
| factory_(factory), |
| - tree_(new ui::AXTree()), |
| + tree_(new ui::AXSerializableTree()), |
| focus_(NULL), |
| osk_state_(OSK_ALLOWED) { |
| tree_->SetDelegate(this); |
| @@ -363,4 +365,42 @@ void BrowserAccessibilityManager::OnNodeChangeFinished(ui::AXNode* node) { |
| GetFromAXNode(node)->OnUpdateFinished(); |
| } |
| +ui::AXTreeUpdate BrowserAccessibilityManager::SnapshotAXTreeForTesting() { |
| + scoped_ptr<ui::AXTreeSource<const ui::AXNode*> > tree_source( |
| + tree_->CreateTreeSource()); |
| + ui::AXTreeSerializer<const ui::AXNode*> serializer(tree_source.get()); |
| + ui::AXTreeUpdate update; |
| + serializer.SerializeChanges(tree_->GetRoot(), &update); |
| + return update; |
| +} |
| + |
| +void BrowserAccessibilityManager::SetNodeIdInParentFrame(int32 node_id) { |
| + node_id_in_parent_frame_ = node_id; |
| +} |
| + |
| +void BrowserAccessibilityManager::SetChildFrameId( |
| + int32 node_id, int64 child_frame_id) { |
| + BrowserAccessibility* node = GetFromID(node_id); |
| + if (node) { |
| + // The node id passed to us is the web area for the proxy frame. |
| + // In order to replace this node with the child frame, set the |
| + // child frame id on its parent. |
| + BrowserAccessibility* node_parent = node->GetParent(); |
| + if (node_parent) |
| + node_parent->SetChildFrameId(child_frame_id); |
| + } |
| +} |
| + |
| +BrowserAccessibility* BrowserAccessibilityManager::GetCrossFrameParent() { |
| + if (!delegate_) |
| + return NULL; |
| + |
| + BrowserAccessibilityManager* parent_frame = |
| + delegate_->AccessibilityGetParentFrame(); |
| + if (!parent_frame) |
| + return NULL; |
| + |
| + return parent_frame->GetFromID(node_id_in_parent_frame_); |
| +} |
| + |
| } // namespace content |