diff options
author | dmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-22 08:59:03 +0000 |
---|---|---|
committer | dmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-22 08:59:03 +0000 |
commit | 4b02bbca3c52f2556078aa3dcb48fdc8a34136be (patch) | |
tree | abe63966d09ac5514b70c181064f4dcf5deff884 /ui/accessibility/ax_serializable_tree.cc | |
parent | 389969ede9fbb20766f2509d1d457f1b80bfd667 (diff) | |
download | chromium_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.cc | 70 |
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 |