commit 08ca4b05b4d553a2db058a22b45564b09929eb7b
parent da8df61bd3e71e0f76f18d137869b7fc5143a8cd
Author: Barry Pollard <barrypollard@google.com>
Date: Fri, 7 Nov 2025 08:56:36 +0000
Bug 1998493 [wpt PR 55871] - Allow upgrade of renderBlockingStatus in Resource Timing for preloaded resources., a=testonly
Automatic update from web-platform-tests
Allow upgrade of renderBlockingStatus in Resource Timing for preloaded resources.
Note this only happens if the Resource Timing entry has not been emitted yet and makes the Resource Timing entry reflect Chrome's internal understanding of whether this is render blocking or not. Previously this was just stuck at the initial status.
Spec discussion: https://github.com/w3c/resource-timing/issues/420
Bug: 457303652
Change-Id: I208d30d3fa0f673a27b5e7dc9489e0452f5d1489
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7112285
Reviewed-by: Yoav Weiss (@Shopify) <yoavweiss@chromium.org>
Reviewed-by: Noam Rosenthal <nrosenthal@google.com>
Commit-Queue: Barry Pollard <barrypollard@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1540547}
--
wpt-commits: c480f28fdbd966fccd72d7d7a430df5a95d62b61
wpt-pr: 55871
Diffstat:
1 file changed, 23 insertions(+), 6 deletions(-)
diff --git a/testing/web-platform/tests/resource-timing/render-blocking-status-link.html b/testing/web-platform/tests/resource-timing/render-blocking-status-link.html
@@ -27,10 +27,19 @@
href="resources/empty_style.css?stylesheet-head-alternate">
<link rel=preload as=style href="resources/empty_style.css?link-style-head-preload">
<link rel=preload as=style href="resources/empty_style.css?link-style-preload-used">
+<link rel=preload as=style href="resources/empty_style.css?link-style-preload-used-immediately">
+<link rel=stylesheet href="resources/empty_style.css?link-style-preload-used-immediately">
+<link rel=preload as=style href="resources/empty_style.css?link-style-preload-used-immediately-then-preloaded-again">
+<link rel=stylesheet href="resources/empty_style.css?link-style-preload-used-immediately-then-preloaded-again">
+<link rel=preload as=style href="resources/empty_style.css?link-style-preload-used-immediately-then-preloaded-again">
<link rel=stylesheet href="resources/importer.css?stylesheet-importer-head">
<link rel=stylesheet id="link-head-remove-attr" blocking="render"
href="resources/empty_style.css?stylesheet-head-blocking-render-remove-attr">
<link rel=modulepreload href="resources/empty_script.js?link-head-modulepreload">
+<link rel=preload as="script" href="resources/empty_script.js?link-script-preload-used-immediately">
+<script src="resources/empty_script.js?link-script-preload-used-immediately"></script>
+<link rel=preload as="script" href="resources/empty_script.js?link-script-preload-defer-used-immediately">
+<script defer src="resources/empty_script.js?link-script-preload-defer-used-immediately"></script>
<style>@import url(resources/empty_style.css?stylesheet-inline-imported);</style>
<style media=print>
@@ -47,6 +56,8 @@
<link rel=stylesheet blocking="render"
href="resources/empty_style.css?stylesheet-body-blocking-render">
+<img src="resources/blue.png?link-image-preload-used-immediately">
+
<!-- https://html.spec.whatwg.org/multipage/urls-and-fetching.html#blocking-attributes
mentions that an element is potentially render-blocking if its blocking
tokens set contains "render", or if it is implicitly potentially
@@ -169,9 +180,9 @@ const wait_for_onload = () => {
promise_test(
async () => {
const expectedRenderBlockingStatus = {
- 'stylesheet-head-dynamic-docWrite': 'blocking',
- 'stylesheet-head-dynamic-docWrite-print': 'non-blocking',
- 'stylesheet-head': 'blocking',
+ 'stylesheet-head-dynamic-docWrite' : 'blocking',
+ 'stylesheet-head-dynamic-docWrite-print' : 'non-blocking',
+ 'stylesheet-head' : 'blocking',
'stylesheet-head-media-print' : 'non-blocking',
'stylesheet-head-alternate' : 'non-blocking',
'link-style-head-preload' : 'non-blocking',
@@ -195,13 +206,18 @@ promise_test(
'link-head-modulepreload-dynamic-dom' : 'non-blocking',
'link-style-preload-used' : 'non-blocking',
'link-style-preload-used-dynamic' : 'non-blocking',
- 'stylesheet-inline-imported-dynamic-docwrite': 'blocking',
+ 'link-style-preload-used-immediately' : 'blocking',
+ 'link-style-preload-used-immediately-then-preloaded-again' : 'blocking',
+ 'stylesheet-inline-imported-dynamic-docwrite' : 'blocking',
'stylesheet-inline-imported-dynamic-docwrite-print' : 'non-blocking',
'stylesheet-inline-imported-dynamic-dom' : 'non-blocking',
'stylesheet-inline-imported-blocking-render-dynamic-dom' : 'blocking',
'stylesheet-imported' : 'blocking',
'stylesheet-imported-print' : 'non-blocking',
- 'stylesheet-imported-dynamic' : 'non-blocking'
+ 'stylesheet-imported-dynamic' : 'non-blocking',
+ 'link-image-preload-used-immediately' : 'non-blocking',
+ 'link-script-preload-used-immediately' : 'blocking',
+ 'link-script-preload-defer-used-immediately' : 'non-blocking'
};
await wait_for_onload();
@@ -210,7 +226,8 @@ promise_test(
for (entry of entry_list) {
if (entry.name.includes("empty_style.css") ||
entry.name.includes("importer.css") ||
- entry.name.includes("empty_script.js")) {
+ entry.name.includes("empty_script.js") ||
+ entry.name.includes("blue.png")) {
key = entry.name.split("?").pop();
expectedStatus = expectedRenderBlockingStatus[key];
assert_equals(entry.renderBlockingStatus, expectedStatus,