From e66a4668f90778b36edf4e0a8d434ca2fb23b586 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 1 Apr 2024 10:39:25 +0200 Subject: [PATCH] LibWeb: Use plain Vector for HTMLMediaElement::m_pending_play_promises These are now covered by visit_edges() instead of being strong GC roots. --- Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp | 6 ++++-- Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp index b0f5c259ee2..02169d69116 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp @@ -44,7 +44,6 @@ namespace Web::HTML { HTMLMediaElement::HTMLMediaElement(DOM::Document& document, DOM::QualifiedName qualified_name) : HTMLElement(document, move(qualified_name)) - , m_pending_play_promises(heap()) { } @@ -91,6 +90,8 @@ void HTMLMediaElement::visit_edges(Cell::Visitor& visitor) visitor.visit(m_document_observer); visitor.visit(m_source_element_selector); visitor.visit(m_fetch_controller); + for (auto& promise : m_pending_play_promises) + visitor.visit(promise); } void HTMLMediaElement::attribute_changed(FlyString const& name, Optional const& value) @@ -1847,7 +1848,8 @@ JS::MarkedVector> HTMLMediaElement::take_pendi // 1. Let promises be an empty list of promises. // 2. Copy the media element's list of pending play promises to promises. // 3. Clear the media element's list of pending play promises. - auto promises = move(m_pending_play_promises); + JS::MarkedVector> promises(heap()); + promises.extend(move(m_pending_play_promises)); // 4. Return promises. return promises; diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h index 0c2d68cc638..8c5f90ce1f1 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h +++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h @@ -242,7 +242,7 @@ private: double m_duration { NAN }; // https://html.spec.whatwg.org/multipage/media.html#list-of-pending-play-promises - JS::MarkedVector> m_pending_play_promises; + Vector> m_pending_play_promises; // https://html.spec.whatwg.org/multipage/media.html#dom-media-paused bool m_paused { true };