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 #ifndef UI_ACCESSIBILITY_AX_TREE_SERIALIZER_H_ | 5 #ifndef UI_ACCESSIBILITY_AX_TREE_SERIALIZER_H_ |
6 #define UI_ACCESSIBILITY_AX_TREE_SERIALIZER_H_ | 6 #define UI_ACCESSIBILITY_AX_TREE_SERIALIZER_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 | 286 |
287 template<typename AXSourceNode> | 287 template<typename AXSourceNode> |
288 void AXTreeSerializer<AXSourceNode>::SerializeChanges( | 288 void AXTreeSerializer<AXSourceNode>::SerializeChanges( |
289 AXSourceNode node, | 289 AXSourceNode node, |
290 AXTreeUpdate* out_update) { | 290 AXTreeUpdate* out_update) { |
291 // If the node isn't in the client tree, we need to serialize starting | 291 // If the node isn't in the client tree, we need to serialize starting |
292 // with the LCA. | 292 // with the LCA. |
293 AXSourceNode lca = LeastCommonAncestor(node); | 293 AXSourceNode lca = LeastCommonAncestor(node); |
294 | 294 |
295 if (client_root_) { | 295 if (client_root_) { |
296 // If the LCA is anything other than the node itself, tell the | 296 bool need_delete = false; |
297 // client to first delete the subtree rooted at the LCA. | |
298 bool need_delete = !tree_->IsEqual(lca, node); | |
299 if (tree_->IsValid(lca)) { | 297 if (tree_->IsValid(lca)) { |
300 // Check for any reparenting within this subtree - if there is | 298 // Check for any reparenting within this subtree - if there is |
301 // any, we need to delete and reserialize the whole subtree | 299 // any, we need to delete and reserialize the whole subtree |
302 // that contains the old and new parents of the reparented node. | 300 // that contains the old and new parents of the reparented node. |
303 if (AnyDescendantWasReparented(lca, &lca)) | 301 if (AnyDescendantWasReparented(lca, &lca)) |
304 need_delete = true; | 302 need_delete = true; |
305 } | 303 } |
306 | 304 |
307 if (!tree_->IsValid(lca)) { | 305 if (!tree_->IsValid(lca)) { |
308 // If there's no LCA, just tell the client to destroy the whole | 306 // If there's no LCA, just tell the client to destroy the whole |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
453 } | 451 } |
454 | 452 |
455 // Serialize all of the new children, recursively. | 453 // Serialize all of the new children, recursively. |
456 for (size_t i = 0; i < children_to_serialize.size(); ++i) | 454 for (size_t i = 0; i < children_to_serialize.size(); ++i) |
457 SerializeChangedNodes(children_to_serialize[i], out_update); | 455 SerializeChangedNodes(children_to_serialize[i], out_update); |
458 } | 456 } |
459 | 457 |
460 } // namespace ui | 458 } // namespace ui |
461 | 459 |
462 #endif // UI_ACCESSIBILITY_AX_TREE_SERIALIZER_H_ | 460 #endif // UI_ACCESSIBILITY_AX_TREE_SERIALIZER_H_ |
OLD | NEW |