1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 01:37:34 +00:00

LibWeb: Add DOM::Element::queue_an_element_task(source, steps)

This roughly models the "queue an element task" algorithm from the spec.
For safety, this captures a strong reference to the element, and then
bundles that with a callback into a HTML::Task (that we then queue up.)
This commit is contained in:
Andreas Kling 2021-09-09 00:59:09 +02:00
parent 909e522cf7
commit aa3ba629ba
2 changed files with 13 additions and 0 deletions

View file

@ -16,6 +16,7 @@
#include <LibWeb/DOM/HTMLCollection.h>
#include <LibWeb/DOM/ShadowRoot.h>
#include <LibWeb/DOM/Text.h>
#include <LibWeb/HTML/EventLoop/EventLoop.h>
#include <LibWeb/HTML/Parser/HTMLDocumentParser.h>
#include <LibWeb/Layout/BlockBox.h>
#include <LibWeb/Layout/InlineNode.h>
@ -377,4 +378,13 @@ void Element::make_html_uppercased_qualified_name()
m_html_uppercased_qualified_name = qualified_name();
}
// https://html.spec.whatwg.org/multipage/webappapis.html#queue-an-element-task
void Element::queue_an_element_task(HTML::Task::Source source, Function<void()> steps)
{
auto task = HTML::Task::create(source, &document(), [strong_this = NonnullRefPtr(*this), steps = move(steps)] {
steps();
});
HTML::main_thread_event_loop().task_queue().add(move(task));
}
}