| Index: ui/accessibility/ax_tree.cc
|
| diff --git a/ui/accessibility/ax_tree.cc b/ui/accessibility/ax_tree.cc
|
| index 58f590be22dc0eb90d1601bc85631123ee5f08a4..0e87a7bb65d5483e8e70849610942a6413aa62b9 100644
|
| --- a/ui/accessibility/ax_tree.cc
|
| +++ b/ui/accessibility/ax_tree.cc
|
| @@ -243,8 +243,16 @@ bool AXTree::UpdateNode(const AXNodeData& src,
|
| // First, delete nodes that used to be children of this node but aren't
|
| // anymore.
|
| if (!DeleteOldChildren(node, src.child_ids, update_state)) {
|
| - if (update_state->new_root)
|
| - DestroySubtree(update_state->new_root, update_state);
|
| + if (update_state->new_root) {
|
| + DestroySubtree(root_, update_state);
|
| +
|
| + if (node != root_ &&
|
| + update_state->new_nodes.find(node) != update_state->new_nodes.end()) {
|
| + DestroySubtree(node, update_state);
|
| + }
|
| +
|
| + root_ = nullptr;
|
| + }
|
| return false;
|
| }
|
|
|
| @@ -261,7 +269,7 @@ bool AXTree::UpdateNode(const AXNodeData& src,
|
| // DestroySubtree.
|
| AXNode* old_root = root_;
|
| root_ = node;
|
| - if (old_root)
|
| + if (old_root && old_root != node)
|
| DestroySubtree(old_root, update_state);
|
| }
|
|
|
|
|