summaryrefslogtreecommitdiffstats
path: root/ui/accessibility/ax_serializable_tree.cc
diff options
context:
space:
mode:
authordmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-22 08:59:03 +0000
committerdmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-22 08:59:03 +0000
commit4b02bbca3c52f2556078aa3dcb48fdc8a34136be (patch)
treeabe63966d09ac5514b70c181064f4dcf5deff884 /ui/accessibility/ax_serializable_tree.cc
parent389969ede9fbb20766f2509d1d457f1b80bfd667 (diff)
downloadchromium_src-4b02bbca3c52f2556078aa3dcb48fdc8a34136be.zip
chromium_src-4b02bbca3c52f2556078aa3dcb48fdc8a34136be.tar.gz
chromium_src-4b02bbca3c52f2556078aa3dcb48fdc8a34136be.tar.bz2
First step to move common accessibility code out of content.
This changelist defines new classes and types for accessibility in ui/accessibility. Subsequent changes will refactor code inside content/ to inherit from AXTree and AXNode, then we can start exposing the accessibility tree outside of content/. In addition, we can now use these same types in Views accessibility and share more code. BUG=316726 Review URL: https://codereview.chromium.org/67283004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236733 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/accessibility/ax_serializable_tree.cc')
-rw-r--r--ui/accessibility/ax_serializable_tree.cc70
1 files changed, 70 insertions, 0 deletions
diff --git a/ui/accessibility/ax_serializable_tree.cc b/ui/accessibility/ax_serializable_tree.cc
new file mode 100644
index 0000000..12bc595
--- /dev/null
+++ b/ui/accessibility/ax_serializable_tree.cc
@@ -0,0 +1,70 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/accessibility/ax_serializable_tree.h"
+
+#include "ui/accessibility/ax_node.h"
+
+namespace ui {
+
+// This class is an implementation of the AXTreeSource interface with
+// AXNode as the node type, that just delegates to an AXTree. The purpose
+// of this is so that AXTreeSerializer only needs to work with the
+// AXTreeSource abstraction and doesn't need to actually know about
+// AXTree directly. Another AXTreeSource is used to abstract the Blink
+// accessibility tree.
+class AX_EXPORT AXTreeSourceAdapter : public AXTreeSource<AXNode> {
+ public:
+ AXTreeSourceAdapter(AXTree* tree) : tree_(tree) {}
+ virtual ~AXTreeSourceAdapter() {}
+
+ // AXTreeSource implementation.
+ virtual AXNode* GetFromId(int32 id) const OVERRIDE {
+ return tree_->GetFromId(id);
+ }
+
+ virtual int32 GetId(const AXNode* node) const OVERRIDE {
+ return node->id();
+ }
+
+ virtual int GetChildCount(const AXNode* node) const OVERRIDE {
+ return node->child_count();
+ }
+
+ virtual AXNode* GetChildAtIndex(const AXNode* node, int index)
+ const OVERRIDE {
+ return node->ChildAtIndex(index);
+ }
+
+ virtual int32 GetParentId(const AXNode* node) const OVERRIDE {
+ if (node->parent())
+ return node->parent()->id();
+ else
+ return 0;
+ }
+
+ virtual void SerializeNode(
+ const AXNode* node, AXNodeData* out_data) const OVERRIDE {
+ *out_data = node->data();
+ }
+
+ private:
+ AXTree* tree_;
+};
+
+AXSerializableTree::AXSerializableTree()
+ : AXTree() {}
+
+AXSerializableTree::AXSerializableTree(const AXTreeUpdate& initial_state)
+ : AXTree(initial_state) {
+}
+
+AXSerializableTree::~AXSerializableTree() {
+}
+
+AXTreeSource<AXNode>* AXSerializableTree::CreateTreeSource() {
+ return new AXTreeSourceAdapter(this);
+}
+
+} // namespace ui