Title: [277189] branches/safari-611-branch/Source/WebCore
Revision
277189
Author
repst...@apple.com
Date
2021-05-07 11:48:21 -0700 (Fri, 07 May 2021)

Log Message

Cherry-pick r276696. rdar://problem/77581076

    Use a WeakHashSet for Document::m_mediaElements
    https://bugs.webkit.org/show_bug.cgi?id=225082

    Patch by Ian Gilbert <i...@apple.com> on 2021-04-28
    Reviewed by Ryosuke Niwa.

    Refactoring to use weak pointer instead of raw pointer.
    No observable change of behavior.

    * dom/Document.cpp:
    (WebCore::Document::registerMediaElement):
    (WebCore::Document::unregisterMediaElement):
    (WebCore::Document::forEachMediaElement):
    * dom/Document.h:

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@276696 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-611-branch/Source/WebCore/ChangeLog (277188 => 277189)


--- branches/safari-611-branch/Source/WebCore/ChangeLog	2021-05-07 18:48:17 UTC (rev 277188)
+++ branches/safari-611-branch/Source/WebCore/ChangeLog	2021-05-07 18:48:21 UTC (rev 277189)
@@ -1,5 +1,42 @@
 2021-05-06  Russell Epstein  <repst...@apple.com>
 
+        Cherry-pick r276696. rdar://problem/77581076
+
+    Use a WeakHashSet for Document::m_mediaElements
+    https://bugs.webkit.org/show_bug.cgi?id=225082
+    
+    Patch by Ian Gilbert <i...@apple.com> on 2021-04-28
+    Reviewed by Ryosuke Niwa.
+    
+    Refactoring to use weak pointer instead of raw pointer.
+    No observable change of behavior.
+    
+    * dom/Document.cpp:
+    (WebCore::Document::registerMediaElement):
+    (WebCore::Document::unregisterMediaElement):
+    (WebCore::Document::forEachMediaElement):
+    * dom/Document.h:
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@276696 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-04-28  Ian Gilbert  <i...@apple.com>
+
+            Use a WeakHashSet for Document::m_mediaElements
+            https://bugs.webkit.org/show_bug.cgi?id=225082
+
+            Reviewed by Ryosuke Niwa.
+
+            Refactoring to use weak pointer instead of raw pointer.
+            No observable change of behavior.
+
+            * dom/Document.cpp:
+            (WebCore::Document::registerMediaElement):
+            (WebCore::Document::unregisterMediaElement):
+            (WebCore::Document::forEachMediaElement):
+            * dom/Document.h:
+
+2021-05-06  Russell Epstein  <repst...@apple.com>
+
         Cherry-pick r276630. rdar://problem/77581089
 
     [MathML] Assertion failure in RenderTreeNeedsLayoutChecker

Modified: branches/safari-611-branch/Source/WebCore/dom/Document.cpp (277188 => 277189)


--- branches/safari-611-branch/Source/WebCore/dom/Document.cpp	2021-05-07 18:48:17 UTC (rev 277188)
+++ branches/safari-611-branch/Source/WebCore/dom/Document.cpp	2021-05-07 18:48:21 UTC (rev 277189)
@@ -1850,21 +1850,21 @@
 
 void Document::registerMediaElement(HTMLMediaElement& element)
 {
-    m_mediaElements.add(&element);
+    m_mediaElements.add(element);
 }
 
 void Document::unregisterMediaElement(HTMLMediaElement& element)
 {
-    m_mediaElements.remove(&element);
+    m_mediaElements.remove(element);
 }
 
 void Document::forEachMediaElement(const Function<void(HTMLMediaElement&)>& function)
 {
-    Vector<Ref<HTMLMediaElement>> elements;
-    for (auto* element : m_mediaElements)
-        elements.append(*element);
-    for (auto& element : elements)
+    ASSERT(!m_mediaElements.hasNullReferences());
+    m_mediaElements.forEach([&](auto& element) {
+        auto protectedElement = makeRef(element);
         function(element);
+    });
 }
 
 bool Document::mediaPlaybackExists()

Modified: branches/safari-611-branch/Source/WebCore/dom/Document.h (277188 => 277189)


--- branches/safari-611-branch/Source/WebCore/dom/Document.h	2021-05-07 18:48:17 UTC (rev 277188)
+++ branches/safari-611-branch/Source/WebCore/dom/Document.h	2021-05-07 18:48:21 UTC (rev 277189)
@@ -1863,7 +1863,7 @@
     HashSet<Element*> m_documentSuspensionCallbackElements;
 
 #if ENABLE(VIDEO)
-    HashSet<HTMLMediaElement*> m_mediaElements;
+    WeakHashSet<HTMLMediaElement> m_mediaElements;
 #endif
 
 #if ENABLE(VIDEO)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to