OLD | NEW |
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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 | 147 |
148 void AXTree::SetDelegate(AXTreeDelegate* delegate) { | 148 void AXTree::SetDelegate(AXTreeDelegate* delegate) { |
149 delegate_ = delegate; | 149 delegate_ = delegate; |
150 } | 150 } |
151 | 151 |
152 AXNode* AXTree::GetFromId(int32_t id) const { | 152 AXNode* AXTree::GetFromId(int32_t id) const { |
153 base::hash_map<int32_t, AXNode*>::const_iterator iter = id_map_.find(id); | 153 base::hash_map<int32_t, AXNode*>::const_iterator iter = id_map_.find(id); |
154 return iter != id_map_.end() ? iter->second : NULL; | 154 return iter != id_map_.end() ? iter->second : NULL; |
155 } | 155 } |
156 | 156 |
157 void AXTree::UpdateData(const AXTreeData& data) { | 157 void AXTree::UpdateData(const AXTreeData& new_data) { |
158 data_ = data; | 158 if (data_ == new_data) |
| 159 return; |
| 160 |
| 161 AXTreeData old_data = data_; |
| 162 data_ = new_data; |
159 if (delegate_) | 163 if (delegate_) |
160 delegate_->OnTreeDataChanged(this); | 164 delegate_->OnTreeDataChanged(this, old_data, new_data); |
161 } | 165 } |
162 | 166 |
163 bool AXTree::Unserialize(const AXTreeUpdate& update) { | 167 bool AXTree::Unserialize(const AXTreeUpdate& update) { |
164 AXTreeUpdateState update_state; | 168 AXTreeUpdateState update_state; |
165 int32_t old_root_id = root_ ? root_->id() : 0; | 169 int32_t old_root_id = root_ ? root_->id() : 0; |
166 | 170 |
167 // First, make a note of any nodes we will touch as part of this update. | 171 // First, make a note of any nodes we will touch as part of this update. |
168 for (size_t i = 0; i < update.nodes.size(); ++i) | 172 for (size_t i = 0; i < update.nodes.size(); ++i) |
169 update_state.changed_node_ids.insert(update.nodes[i].id); | 173 update_state.changed_node_ids.insert(update.nodes[i].id); |
170 | 174 |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 update_state->pending_nodes.insert(child); | 497 update_state->pending_nodes.insert(child); |
494 update_state->new_nodes.insert(child); | 498 update_state->new_nodes.insert(child); |
495 } | 499 } |
496 new_children->push_back(child); | 500 new_children->push_back(child); |
497 } | 501 } |
498 | 502 |
499 return success; | 503 return success; |
500 } | 504 } |
501 | 505 |
502 } // namespace ui | 506 } // namespace ui |
OLD | NEW |