1 // Copyright 2020 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "ui/accessibility/test_ax_tree_manager.h"
6 
7 #include "ui/accessibility/ax_node.h"
8 #include "ui/accessibility/ax_tree_data.h"
9 #include "ui/accessibility/ax_tree_manager_map.h"
10 
11 namespace ui {
12 
13 TestAXTreeManager::TestAXTreeManager() = default;
14 
TestAXTreeManager(std::unique_ptr<AXTree> tree)15 TestAXTreeManager::TestAXTreeManager(std::unique_ptr<AXTree> tree)
16     : tree_(std::move(tree)) {
17   AXTreeManagerMap::GetInstance().AddTreeManager(GetTreeID(), this);
18 }
19 
~TestAXTreeManager()20 TestAXTreeManager::~TestAXTreeManager() {
21   if (tree_)
22     AXTreeManagerMap::GetInstance().RemoveTreeManager(GetTreeID());
23 }
24 
DestroyTree()25 void TestAXTreeManager::DestroyTree() {
26   if (!tree_)
27     return;
28 
29   AXTreeManagerMap::GetInstance().RemoveTreeManager(GetTreeID());
30   tree_.reset();
31 }
32 
GetTree() const33 AXTree* TestAXTreeManager::GetTree() const {
34   DCHECK(tree_) << "Did you forget to call SetTree?";
35   return tree_.get();
36 }
37 
SetTree(std::unique_ptr<AXTree> tree)38 void TestAXTreeManager::SetTree(std::unique_ptr<AXTree> tree) {
39   if (tree_)
40     AXTreeManagerMap::GetInstance().RemoveTreeManager(GetTreeID());
41 
42   tree_ = std::move(tree);
43   AXTreeManagerMap::GetInstance().AddTreeManager(GetTreeID(), this);
44 }
45 
GetNodeFromTree(const AXTreeID tree_id,const AXNode::AXID node_id) const46 AXNode* TestAXTreeManager::GetNodeFromTree(const AXTreeID tree_id,
47                                            const AXNode::AXID node_id) const {
48   return (tree_ && GetTreeID() == tree_id) ? tree_->GetFromId(node_id)
49                                            : nullptr;
50 }
51 
GetNodeFromTree(const AXNode::AXID node_id) const52 AXNode* TestAXTreeManager::GetNodeFromTree(const AXNode::AXID node_id) const {
53   return tree_ ? tree_->GetFromId(node_id) : nullptr;
54 }
55 
GetTreeID() const56 AXTreeID TestAXTreeManager::GetTreeID() const {
57   return tree_ ? tree_->data().tree_id : AXTreeIDUnknown();
58 }
59 
GetParentTreeID() const60 AXTreeID TestAXTreeManager::GetParentTreeID() const {
61   return AXTreeIDUnknown();
62 }
63 
GetRootAsAXNode() const64 AXNode* TestAXTreeManager::GetRootAsAXNode() const {
65   return tree_ ? tree_->root() : nullptr;
66 }
67 
GetParentNodeFromParentTreeAsAXNode() const68 AXNode* TestAXTreeManager::GetParentNodeFromParentTreeAsAXNode() const {
69   return nullptr;
70 }
71 
72 }  // namespace ui
73