mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-04 16:11:54 +00:00
To allow for adding the concept of a WorkerAgent to be reused between shared and dedicated workers. An event loop is the commonality between the different agent types, though, there are some differences between those event loops which we customize on the construction of the HTML::EventLoop.
27 lines
882 B
C++
27 lines
882 B
C++
/*
|
|
* Copyright (c) 2025, Shannon Booth <shannon@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <LibWeb/Bindings/MainThreadVM.h>
|
|
#include <LibWeb/HTML/Scripting/Agent.h>
|
|
#include <LibWeb/HTML/Scripting/Environments.h>
|
|
#include <LibWeb/Platform/EventLoopPlugin.h>
|
|
|
|
namespace Web::HTML {
|
|
|
|
void Agent::spin_event_loop_until(GC::Root<GC::Function<bool()>> goal_condition)
|
|
{
|
|
Platform::EventLoopPlugin::the().spin_until(move(goal_condition));
|
|
}
|
|
|
|
// https://html.spec.whatwg.org/multipage/webappapis.html#relevant-agent
|
|
Agent& relevant_agent(JS::Object const& object)
|
|
{
|
|
// The relevant agent for a platform object platformObject is platformObject's relevant Realm's agent.
|
|
// Spec Note: This pointer is not yet defined in the JavaScript specification; see tc39/ecma262#1357.
|
|
return *static_cast<Agent*>(relevant_realm(object).vm().agent());
|
|
}
|
|
|
|
}
|