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 c8d2cdd25930438bab713376012e8ef039329366..2dab8982ca6a972ab263da9df06ac88423f118fc 100644 |
--- a/content/browser/accessibility/browser_accessibility_manager.cc |
+++ b/content/browser/accessibility/browser_accessibility_manager.cc |
@@ -8,6 +8,7 @@ |
#include "content/browser/accessibility/browser_accessibility.h" |
#include "content/browser/accessibility/frame_tree_accessibility.h" |
#include "content/common/accessibility_messages.h" |
+#include "ui/accessibility/ax_tree_serializer.h" |
namespace content { |
@@ -68,7 +69,7 @@ BrowserAccessibilityManager::BrowserAccessibilityManager( |
BrowserAccessibilityFactory* factory) |
: delegate_(delegate), |
factory_(factory), |
- tree_(new ui::AXTree()), |
+ tree_(new ui::AXSerializableTree()), |
focus_(NULL), |
parent_frame_frame_id_(0), |
parent_frame_node_id_(0), |
@@ -82,7 +83,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); |
@@ -347,12 +348,34 @@ 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::SetParentFrameIds( |
int parent_frame_frame_id, int parent_frame_node_id) { |
parent_frame_frame_id_ = parent_frame_frame_id; |
parent_frame_node_id_ = parent_frame_node_id; |
} |
+void BrowserAccessibilityManager::SetChildFrameId( |
+ int node_id, int 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() { |
FrameTreeAccessibility* frames = FrameTreeAccessibility::GetInstance(); |
BrowserAccessibilityManager* parent_manager = |