ladybird/Libraries/LibWeb/Fetch/Fetching
Jonathan Gamble 6686cecf72 LibWeb: Stop blocking main fetch on pending preload results
The lichess.org lobby stylesheet sometimes gets render-blocked,
resulting in a blank page.

The main fetch would queue work and then spin_until wait for a pending
preload result on the main thread. This re-entered the event loop and
stranded the queued PendingResponse callback behind a pile of nested
event processing. So the preload response existed, but the stylesheet
never made it through the normal handoff path.

I chose to follow the PreloadEntry.cpp model to address this and track
at most one pending preload PendingResponse for each FetchParams,
resolving it directly from the preload callback when the response
arrives. This removes the spin_until, keeps the handoff asynchronous,
and lets the blocked stylesheet finish loading normally.

If the current single-consumer preload path ever changes, this logic
must be widened to handle it.
2026-05-06 08:33:12 +02:00
..
Checks.cpp LibWeb: Store HTTP methods and headers as ByteString 2025-11-26 09:15:06 -05:00
Checks.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
FetchedDataReceiver.cpp LibWeb: Push fetch body chunks directly into the byte stream controller 2026-04-30 14:18:11 +02:00
FetchedDataReceiver.h LibWeb: Push fetch body chunks directly into the byte stream controller 2026-04-30 14:18:11 +02:00
Fetching.cpp LibWeb: Stop blocking main fetch on pending preload results 2026-05-06 08:33:12 +02:00
Fetching.h LibHTTP+LibWeb: Move the IncludeCredentials enum to LibHTTP 2026-02-10 12:21:20 +01:00
PendingResponse.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
PendingResponse.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
RefCountedFlag.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
RefCountedFlag.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00