Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: ui/accessibility/ax_tree.cc

Issue 1413423003: Move some AX attrs from AXNodeData to AXTreeData. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/accessibility/ax_tree.h ('k') | ui/accessibility/ax_tree_data.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/accessibility/ax_tree.h" 5 #include "ui/accessibility/ax_tree.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 46
47 AXTreeDelegate::~AXTreeDelegate() { 47 AXTreeDelegate::~AXTreeDelegate() {
48 } 48 }
49 49
50 AXTree::AXTree() 50 AXTree::AXTree()
51 : delegate_(NULL), root_(NULL) { 51 : delegate_(NULL), root_(NULL) {
52 AXNodeData root; 52 AXNodeData root;
53 root.id = -1; 53 root.id = -1;
54 root.role = AX_ROLE_ROOT_WEB_AREA; 54 root.role = AX_ROLE_ROOT_WEB_AREA;
55 55
56 AXTreeUpdate<AXNodeData> initial_state; 56 AXTreeUpdate initial_state;
57 initial_state.nodes.push_back(root); 57 initial_state.nodes.push_back(root);
58 CHECK(Unserialize(initial_state)) << error(); 58 CHECK(Unserialize(initial_state)) << error();
59 } 59 }
60 60
61 AXTree::AXTree(const AXTreeUpdate<AXNodeData>& initial_state) 61 AXTree::AXTree(const AXTreeUpdate& initial_state)
62 : delegate_(NULL), root_(NULL) { 62 : delegate_(NULL), root_(NULL) {
63 CHECK(Unserialize(initial_state)) << error(); 63 CHECK(Unserialize(initial_state)) << error();
64 } 64 }
65 65
66 AXTree::~AXTree() { 66 AXTree::~AXTree() {
67 if (root_) 67 if (root_)
68 DestroyNodeAndSubtree(root_, nullptr); 68 DestroyNodeAndSubtree(root_, nullptr);
69 } 69 }
70 70
71 void AXTree::SetDelegate(AXTreeDelegate* delegate) { 71 void AXTree::SetDelegate(AXTreeDelegate* delegate) {
72 delegate_ = delegate; 72 delegate_ = delegate;
73 } 73 }
74 74
75 AXNode* AXTree::GetFromId(int32 id) const { 75 AXNode* AXTree::GetFromId(int32 id) const {
76 base::hash_map<int32, AXNode*>::const_iterator iter = id_map_.find(id); 76 base::hash_map<int32, AXNode*>::const_iterator iter = id_map_.find(id);
77 return iter != id_map_.end() ? iter->second : NULL; 77 return iter != id_map_.end() ? iter->second : NULL;
78 } 78 }
79 79
80 bool AXTree::Unserialize(const AXTreeUpdate<AXNodeData>& update) { 80 void AXTree::UpdateData(const AXTreeData& data) {
81 data_ = data;
82 if (delegate_)
83 delegate_->OnTreeDataChanged(this);
84 }
85
86 bool AXTree::Unserialize(const AXTreeUpdate& update) {
81 AXTreeUpdateState update_state; 87 AXTreeUpdateState update_state;
82 int32 old_root_id = root_ ? root_->id() : 0; 88 int32 old_root_id = root_ ? root_->id() : 0;
83 89
90 if (update.has_tree_data)
91 UpdateData(update.tree_data);
92
84 if (update.node_id_to_clear != 0) { 93 if (update.node_id_to_clear != 0) {
85 AXNode* node = GetFromId(update.node_id_to_clear); 94 AXNode* node = GetFromId(update.node_id_to_clear);
86 if (!node) { 95 if (!node) {
87 error_ = base::StringPrintf("Bad node_id_to_clear: %d", 96 error_ = base::StringPrintf("Bad node_id_to_clear: %d",
88 update.node_id_to_clear); 97 update.node_id_to_clear);
89 return false; 98 return false;
90 } 99 }
91 if (node == root_) { 100 if (node == root_) {
92 // Clear root_ before calling DestroySubtree so that root_ doesn't 101 // Clear root_ before calling DestroySubtree so that root_ doesn't
93 // ever point to an invalid node. 102 // ever point to an invalid node.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 } 146 }
138 } 147 }
139 delegate_->OnAtomicUpdateFinished( 148 delegate_->OnAtomicUpdateFinished(
140 this, root_->id() != old_root_id, changes); 149 this, root_->id() != old_root_id, changes);
141 } 150 }
142 151
143 return true; 152 return true;
144 } 153 }
145 154
146 std::string AXTree::ToString() const { 155 std::string AXTree::ToString() const {
147 return TreeToStringHelper(root_, 0); 156 return "AXTree" + data_.ToString() + "\n" + TreeToStringHelper(root_, 0);
148 } 157 }
149 158
150 AXNode* AXTree::CreateNode(AXNode* parent, int32 id, int32 index_in_parent) { 159 AXNode* AXTree::CreateNode(AXNode* parent, int32 id, int32 index_in_parent) {
151 AXNode* new_node = new AXNode(parent, id, index_in_parent); 160 AXNode* new_node = new AXNode(parent, id, index_in_parent);
152 id_map_[new_node->id()] = new_node; 161 id_map_[new_node->id()] = new_node;
153 if (delegate_) 162 if (delegate_)
154 delegate_->OnNodeCreated(this, new_node); 163 delegate_->OnNodeCreated(this, new_node);
155 return new_node; 164 return new_node;
156 } 165 }
157 166
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 update_state->pending_nodes.insert(child); 301 update_state->pending_nodes.insert(child);
293 update_state->new_nodes.insert(child); 302 update_state->new_nodes.insert(child);
294 } 303 }
295 new_children->push_back(child); 304 new_children->push_back(child);
296 } 305 }
297 306
298 return success; 307 return success;
299 } 308 }
300 309
301 } // namespace ui 310 } // namespace ui
OLDNEW
« no previous file with comments | « ui/accessibility/ax_tree.h ('k') | ui/accessibility/ax_tree_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698