From 66fb6748bf56f35151904414c1546759a1742cd6 Mon Sep 17 00:00:00 2001 From: Navid EMAD Date: Mon, 29 Jun 2026 21:46:35 +0200 Subject: [PATCH] page: flush deferred transfers after a synchronous stylesheet fetch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Frame.loadExternalStylesheet fetches an external synchronously, which registers a blocking request for the frame. While that blocking request is active the DeferringLayer holds back the completion callbacks of every other in-flight transfer for the frame, so they don't run JS on the parser stack. The blocking- + + + + + + + diff --git a/src/browser/webapi/element/html/Link.zig b/src/browser/webapi/element/html/Link.zig index 493b6a735..af9472283 100644 --- a/src/browser/webapi/element/html/Link.zig +++ b/src/browser/webapi/element/html/Link.zig @@ -288,3 +288,14 @@ test "WebApi: HTML.Link external stylesheet" { defer filter.deinit(); try testing.htmlRunner("css/external_stylesheet.html", .{ .load_external_stylesheets = true }); } + +// Regression: a synchronous external-stylesheet fetch must not strand the +// completion of an in-flight