mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-08 01:00:05 +00:00
LibJS+LibWeb: Set [[CanBlock]] false to Agent for window agent
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.
This commit is contained in:
parent
4cd186f3f5
commit
e124ef52ee
Notes:
github-actions[bot]
2025-04-22 15:52:53 +00:00
Author: https://github.com/shannonbooth
Commit: e124ef52ee
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4406
16 changed files with 106 additions and 44 deletions
|
@ -6,6 +6,7 @@
|
|||
*/
|
||||
|
||||
#include <AK/TypeCasts.h>
|
||||
#include <LibJS/Runtime/Agent.h>
|
||||
#include <LibJS/Runtime/Completion.h>
|
||||
#include <LibJS/Runtime/NativeFunction.h>
|
||||
#include <LibJS/Runtime/Promise.h>
|
||||
|
@ -98,9 +99,9 @@ ThrowCompletionOr<Value> await(VM& vm, Value value)
|
|||
|
||||
// FIXME: Since we don't support context suspension, we attempt to "wait" for the promise to resolve
|
||||
// by syncronously running all queued promise jobs.
|
||||
if (auto* custom_data = vm.custom_data()) {
|
||||
if (auto* agent = vm.agent()) {
|
||||
// Embedder case (i.e. LibWeb). Runs all promise jobs by performing a microtask checkpoint.
|
||||
custom_data->spin_event_loop_until(GC::create_function(vm.heap(), [success] {
|
||||
agent->spin_event_loop_until(GC::create_function(vm.heap(), [success] {
|
||||
return success.has_value();
|
||||
}));
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue