mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-25 05:55:13 +00:00
similar-origin window agents have the [[CanBlock]] flag set to false. Achieve this by hooking up JS's concept with an agent to HTML::Agent. For now, this is only hooked up to the similar-origin window agent case but should be extended to the other agent types in the future.
28 lines
702 B
C++
28 lines
702 B
C++
/*
|
|
* Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org>
|
|
* Copyright (c) 2025, Shannon Booth <shannon@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <LibJS/Runtime/Agent.h>
|
|
#include <LibJS/Runtime/VM.h>
|
|
|
|
namespace JS {
|
|
|
|
Agent::~Agent() = default;
|
|
|
|
// 9.7.2 AgentCanSuspend ( ), https://tc39.es/ecma262/#sec-agentcansuspend
|
|
bool agent_can_suspend(VM const& vm)
|
|
{
|
|
// 1. Let AR be the Agent Record of the surrounding agent.
|
|
auto const* agent = vm.agent();
|
|
|
|
// 2. Return AR.[[CanBlock]].
|
|
// NOTE: We default to true if no agent has been provided (standalone LibJS with no embedder).
|
|
if (!agent)
|
|
return true;
|
|
return agent->can_block();
|
|
}
|
|
|
|
}
|