mirror of
				https://github.com/LadybirdBrowser/ladybird.git
				synced 2025-11-03 23:00:58 +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());
 | 
						|
}
 | 
						|
 | 
						|
}
 |