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

LibWeb: Assign a unique ID to each HTML task

And return that ID when queueing an element task. This is required for
some task tracking - specifically, the HTML ToggleTaskTracker struct.
This commit is contained in:
Timothy Flynn 2023-08-31 13:25:27 -04:00 committed by Andreas Kling
parent 5ae9b2fdaf
commit f598a357ad
4 changed files with 15 additions and 4 deletions

View file

@ -11,15 +11,20 @@
namespace Web::HTML {
static IDAllocator s_unique_task_source_allocator { static_cast<int>(Task::Source::UniqueTaskSourceStart) };
static IDAllocator s_task_id_allocator;
Task::Task(Source source, DOM::Document const* document, JS::SafeFunction<void()> steps)
: m_source(source)
: m_id(s_task_id_allocator.allocate())
, m_source(source)
, m_steps(move(steps))
, m_document(JS::make_handle(document))
{
}
Task::~Task() = default;
Task::~Task()
{
s_unique_task_source_allocator.deallocate(m_id);
}
void Task::execute()
{

View file

@ -59,6 +59,7 @@ public:
}
~Task();
int id() const { return m_id; }
Source source() const { return m_source; }
void execute();
@ -69,6 +70,7 @@ public:
private:
Task(Source, DOM::Document const*, JS::SafeFunction<void()> steps);
int m_id { 0 };
Source m_source { Source::Unspecified };
JS::SafeFunction<void()> m_steps;
JS::Handle<DOM::Document const> m_document;