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 |