Track all changed nodes during an update
While deserializing, make a note of all changed nodes via id before performing any tree changes/removals.
While removing (non-atomically), reference the changed list to ensure we notify delegates of nodes that will actually be deleted and not just deleted then re-created as part of bookkeeping to enforce the "non-reparenting" invariant inside of AXTree::CreateChildVector.
BUG=
642799
TEST=for each of the reproductions in the bug, ensure the automation api (as a client) does not destroy then re-create js objects; rather, ensure it re-uses them for reparented trees.
Committed:
https://crrev.com/5a7b3d983322a039f87553ae936b37984f81efcb
Cr-Commit-Position: refs/heads/master@{#417207}
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation