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

LibWeb: Support unique task sources

Some elements, like HTMLMediaElement, must have a unique task sources
for every instance of that element that is created. Support this with a
simple wrapper around IDAllocator.
This commit is contained in:
Timothy Flynn 2023-04-04 09:02:00 -04:00 committed by Linus Groh
parent 4d9c14ca67
commit 807891c0df
2 changed files with 26 additions and 0 deletions

View file

@ -15,6 +15,8 @@
namespace Web::HTML {
struct UniqueTaskSource;
class Task {
public:
// https://html.spec.whatwg.org/multipage/webappapis.html#generic-task-sources
@ -29,6 +31,10 @@ public:
Microtask,
TimerTask,
JavaScriptEngine,
// Some elements, such as the HTMLMediaElement, must have a unique task source per instance.
// Keep this field last, to serve as the base value of all unique task sources.
UniqueTaskSourceStart,
};
static NonnullOwnPtr<Task> create(Source source, DOM::Document const* document, JS::SafeFunction<void()> steps)
@ -52,4 +58,11 @@ private:
JS::Handle<DOM::Document const> m_document;
};
struct UniqueTaskSource {
UniqueTaskSource();
~UniqueTaskSource();
Task::Source const source;
};
}