Title: [260706] trunk/Source/WebCore
Revision
260706
Author
[email protected]
Date
2020-04-25 10:03:33 -0700 (Sat, 25 Apr 2020)

Log Message

AX: Improve tracking of Element* pointers in AXObjectCache with WeakHashSet
https://bugs.webkit.org/show_bug.cgi?id=210879

Reviewed by Daniel Bates.

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::remove):
(WebCore::AXObjectCache::handleFocusedUIElementChanged):
(WebCore::filterListForRemoval):
(WebCore::AXObjectCache::performDeferredCacheUpdate):
* accessibility/AXObjectCache.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (260705 => 260706)


--- trunk/Source/WebCore/ChangeLog	2020-04-25 16:08:46 UTC (rev 260705)
+++ trunk/Source/WebCore/ChangeLog	2020-04-25 17:03:33 UTC (rev 260706)
@@ -1,3 +1,17 @@
+2020-04-25  Chris Fleizach  <[email protected]>
+
+        AX: Improve tracking of Element* pointers in AXObjectCache with WeakHashSet
+        https://bugs.webkit.org/show_bug.cgi?id=210879
+
+        Reviewed by Daniel Bates.
+
+        * accessibility/AXObjectCache.cpp:
+        (WebCore::AXObjectCache::remove):
+        (WebCore::AXObjectCache::handleFocusedUIElementChanged):
+        (WebCore::filterListForRemoval):
+        (WebCore::AXObjectCache::performDeferredCacheUpdate):
+        * accessibility/AXObjectCache.h:
+
 2020-04-25  Antoine Quint  <[email protected]>
 
         [Web Animations] KeyframeEffect should ensure its target remains alive

Modified: trunk/Source/WebCore/accessibility/AXObjectCache.cpp (260705 => 260706)


--- trunk/Source/WebCore/accessibility/AXObjectCache.cpp	2020-04-25 16:08:46 UTC (rev 260705)
+++ trunk/Source/WebCore/accessibility/AXObjectCache.cpp	2020-04-25 17:03:33 UTC (rev 260706)
@@ -859,8 +859,6 @@
 void AXObjectCache::remove(Node& node)
 {
     if (is<Element>(node)) {
-        m_deferredRecomputeIsIgnoredList.remove(downcast<Element>(&node));
-        m_deferredSelectedChildredChangedList.remove(downcast<Element>(&node));
         m_deferredTextFormControlValue.remove(downcast<Element>(&node));
         m_deferredAttributeChange.remove(downcast<Element>(&node));
     }
@@ -2997,9 +2995,7 @@
     HashSet<Node*> nodesToRemove;
     filterListForRemoval(m_textMarkerNodes, document, nodesToRemove);
     filterListForRemoval(m_modalNodesSet, document, nodesToRemove);
-    filterListForRemoval(m_deferredRecomputeIsIgnoredList, document, nodesToRemove);
     filterListForRemoval(m_deferredTextChangedList, document, nodesToRemove);
-    filterListForRemoval(m_deferredSelectedChildredChangedList, document, nodesToRemove);
     filterListForRemoval(m_deferredChildrenChangedNodeList, document, nodesToRemove);
     filterMapForRemoval(m_deferredTextFormControlValue, document, nodesToRemove);
     filterMapForRemoval(m_deferredAttributeChange, document, nodesToRemove);
@@ -3048,14 +3044,14 @@
         textChanged(node);
     m_deferredTextChangedList.clear();
 
-    for (auto* element : m_deferredRecomputeIsIgnoredList) {
-        if (auto* renderer = element->renderer())
+    for (auto& element : m_deferredRecomputeIsIgnoredList) {
+        if (auto* renderer = element.renderer())
             recomputeIsIgnored(renderer);
     }
     m_deferredRecomputeIsIgnoredList.clear();
     
-    for (auto* selectElement : m_deferredSelectedChildredChangedList)
-        selectedChildrenChanged(selectElement);
+    for (auto& selectElement : m_deferredSelectedChildredChangedList)
+        selectedChildrenChanged(&selectElement);
     m_deferredSelectedChildredChangedList.clear();
 
     for (auto& deferredFormControlContext : m_deferredTextFormControlValue) {

Modified: trunk/Source/WebCore/accessibility/AXObjectCache.h (260705 => 260706)


--- trunk/Source/WebCore/accessibility/AXObjectCache.h	2020-04-25 16:08:46 UTC (rev 260705)
+++ trunk/Source/WebCore/accessibility/AXObjectCache.h	2020-04-25 17:03:33 UTC (rev 260706)
@@ -487,9 +487,9 @@
     Timer m_performCacheUpdateTimer;
 
     AXTextStateChangeIntent m_textSelectionIntent;
-    ListHashSet<Element*> m_deferredRecomputeIsIgnoredList;
+    WeakHashSet<Element> m_deferredRecomputeIsIgnoredList;
     ListHashSet<Node*> m_deferredTextChangedList;
-    ListHashSet<Element*> m_deferredSelectedChildredChangedList;
+    WeakHashSet<Element> m_deferredSelectedChildredChangedList;
     ListHashSet<RefPtr<AXCoreObject>> m_deferredChildrenChangedList;
     ListHashSet<Node*> m_deferredChildrenChangedNodeList;
     HashMap<Element*, String> m_deferredTextFormControlValue;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to