LibJS: Add VM::on_call_stack_emptied callback

Instead of having to run queued promise jobs in LibWeb in various
places, this allows us to consolidate that into one function - this is
very close to how the spec describes it as well ("at some future point
in time, when there is no running execution context and the execution
context stack is empty, the implementation must [...]").

Eventually this will also be used to log unhandled exceptions, and
possibly other actions that require JS execution to have ended.
This commit is contained in:
Linus Groh 2021-04-24 18:21:02 +02:00 committed by Andreas Kling
commit 08373090ae
Notes: sideshowbarker 2024-07-18 19:09:14 +09:00
5 changed files with 19 additions and 9 deletions

View file

@ -94,8 +94,6 @@ bool EventDispatcher::inner_invoke(Event& event, Vector<EventTarget::EventListen
vm.clear_exception();
// FIXME: Set legacyOutputDidListenersThrowFlag if given. (Only used by IndexedDB currently)
}
vm.run_queued_promise_jobs();
VERIFY(!vm.exception());
event.set_in_passive_listener(false);
if (is<Bindings::WindowObject>(global)) {