| Index: ui/accessibility/ax_serializable_tree.cc
|
| diff --git a/ui/accessibility/ax_serializable_tree.cc b/ui/accessibility/ax_serializable_tree.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ab63f552607f65af129c11d7cfc9163eccaf4d17
|
| --- /dev/null
|
| +++ b/ui/accessibility/ax_serializable_tree.cc
|
| @@ -0,0 +1,70 @@
|
| +// Copyright (c) 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
|
|
|