Notify accessibility when a node is removed from its ancestor.
https://bugs.webkit.org/show_bug.cgi?id=209819

Reviewed by Chris Fleizach.

Covered by existing tests in LayoutTests/accessibility.

* dom/Node.cpp:
(WebCore::Node::removedFromAncestor):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@259348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 0d1f414..d8735a8 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,15 @@
+2020-04-01  Jack Lee  <shihchieh_lee@apple.com>
+
+        Notify accessibility when a node is removed from its ancestor.
+        https://bugs.webkit.org/show_bug.cgi?id=209819
+
+        Reviewed by Chris Fleizach.
+
+        Covered by existing tests in LayoutTests/accessibility.
+
+        * dom/Node.cpp:
+        (WebCore::Node::removedFromAncestor):
+
 2020-04-01  Commit Queue  <commit-queue@webkit.org>
 
         Unreviewed, reverting r259282.
diff --git a/Source/WebCore/dom/Node.cpp b/Source/WebCore/dom/Node.cpp
index e85d057..8bfec61 100644
--- a/Source/WebCore/dom/Node.cpp
+++ b/Source/WebCore/dom/Node.cpp
@@ -1297,12 +1297,18 @@
     return InsertedIntoAncestorResult::Done;
 }
 
-void Node::removedFromAncestor(RemovalType removalType, ContainerNode&)
+void Node::removedFromAncestor(RemovalType removalType, ContainerNode& oldParentOfRemovedTree)
 {
     if (removalType.disconnectedFromDocument)
         clearFlag(IsConnectedFlag);
     if (isInShadowTree() && !treeScope().rootNode().isShadowRoot())
         clearFlag(IsInShadowTreeFlag);
+    if (removalType.disconnectedFromDocument) {
+        if (auto* document = &oldParentOfRemovedTree.treeScope().documentScope()) {
+            if (auto* cache = document->existingAXObjectCache())
+                cache->remove(*this);
+        }
+    }
 }
 
 bool Node::isRootEditableElement() const