commit d04ae371a1e1c4fc9a4ef80c53cb734ecd8af717
parent 11b99a0665321b7c347b95b5e26e8e328898bee5
Author: Morten Stenshorne <mstensho@chromium.org>
Date: Mon, 8 Dec 2025 12:27:34 +0000
Bug 2004113 [wpt PR 56497] - Multicol post-layout: subtree force update consistency fix., a=testonly
Automatic update from web-platform-tests
Multicol post-layout: subtree force update consistency fix.
Add a state stack. We couldn't trust ShouldForceEntireSubtreeUpdate() to
return the same value upon entry as upon exit, since
SetShouldCheckForPaintInvalidation() might be called on a descendant in
the meantime (and propagated up the tree).
force_entire_subtree_update_ in TraversalListener ended up as negative,
because the result of ShouldForceEntireSubtreeUpdate() wasn't the same
upon entry (false) and exit (true). This caused a DCHECK failure.
`DCHECK_GE(force_entire_subtree_update_, 0)`
This particular case does seem benign, but the CL is also a speculative
"fix" for the real crash in crbug.com/464464623 (not been able to
reproduce it).
Bug: 464464623
Change-Id: I3d942d71930762ab7db73297567b722e28a06312
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7221490
Commit-Queue: Morten Stenshorne <mstensho@chromium.org>
Reviewed-by: Ian Kilpatrick <ikilpatrick@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1554230}
--
wpt-commits: 674a55c8b89bfb9912b69ddc88b22d164679b29f
wpt-pr: 56497
Diffstat:
1 file changed, 24 insertions(+), 0 deletions(-)
diff --git a/testing/web-platform/tests/css/css-multicol/crashtests/triply-nested-partial-relayout.html b/testing/web-platform/tests/css/css-multicol/crashtests/triply-nested-partial-relayout.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>Triply nested multicol. Change something in the outermost that doesn't affect the three innermost.</title>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://issues.chromium.org/issues/464464623">
+<div style="columns:2; column-fill:auto; height:100px;">
+ <div id="touchme"></div>
+ <div style="columns:2; column-fill:auto; height:100px;">
+ <div style="columns:2; column-fill:auto; height:100px;">
+ <div style="columns:2; column-fill:auto; height:100px;">
+ x
+ </div>
+ </div>
+ </div>
+</div>
+<script>
+ requestAnimationFrame(()=> {
+ requestAnimationFrame(()=> {
+ touchme.style.width = "100px";
+ document.body.offsetTop;
+ document.documentElement.classList.remove("reftest-wait");
+ });
+ });
+</script>