commit c37aee69a6433256105a4aca136ad8dc2fe9f96a parent e958db0be69867ae2bb4159d30f7730d1ed5b64c Author: Steve Kobes <skobes@chromium.org> Date: Mon, 27 Oct 2025 10:06:21 +0000 Bug 1996073 [wpt PR 55625] - Fix crash when <html> element becomes position: fixed., a=testonly Automatic update from web-platform-tests Fix crash when <html> element becomes position: fixed. We shouldn't move the document element's LayoutObject into the anonymous LayoutViewTransitionRoot. Instead, let them remain siblings. Bug: 445765272 Change-Id: I28030d6ea7a44c6676779b50eae478f053538db9 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7077378 Commit-Queue: Steve Kobes <skobes@chromium.org> Reviewed-by: Kevin Ellis <kevers@chromium.org> Cr-Commit-Position: refs/heads/main@{#1534436} -- wpt-commits: a5d5f95b3ac0eb676be98bdb72559ad9c12fa57d wpt-pr: 55625 Diffstat:
| A | testing/web-platform/tests/css/css-view-transitions/html-becomes-fixed-ref.html | | | 15 | +++++++++++++++ |
| A | testing/web-platform/tests/css/css-view-transitions/html-becomes-fixed.html | | | 42 | ++++++++++++++++++++++++++++++++++++++++++ |
2 files changed, 57 insertions(+), 0 deletions(-)
diff --git a/testing/web-platform/tests/css/css-view-transitions/html-becomes-fixed-ref.html b/testing/web-platform/tests/css/css-view-transitions/html-becomes-fixed-ref.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html id=r class=f> +<head> +<style> + +.f { position: fixed; background: #eee } +#part { position: absolute; left: 50px; top: 50px; width: 50px; height: 50px; + padding: 5px; view-transition-name: p; background: #acf; } + +</style> +</head> +<body> +<div id=part>A</div> +</body> +</html> diff --git a/testing/web-platform/tests/css/css-view-transitions/html-becomes-fixed.html b/testing/web-platform/tests/css/css-view-transitions/html-becomes-fixed.html @@ -0,0 +1,42 @@ +<!DOCTYPE html> +<html id=r class=reftest-wait> +<head> +<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/"> +<link rel="match" href="html-becomes-fixed-ref.html"> +<script src="/common/reftest-wait.js"></script> +<script src="/web-animations/testcommon.js"></script> +<style> + +html { view-transition-name: none } +.f { position: fixed; background: #eee } +::view-transition-group(*) { animation-duration: 0s } +#part { position: absolute; left: 50px; top: 50px; width: 50px; height: 50px; + padding: 5px; view-transition-name: p; background: #acf; } + +</style> +</head> +<body> +<div id=part>A</div> +<script> + +raf = () => new Promise(r => { requestAnimationFrame(r); }); +async function runTest() { + await waitForCompositorReady(); + + const t = document.startViewTransition(() => { part.innerText = "B"; }) + await raf(); + await raf(); + r.classList.add("f"); + await t.finished; + + const t2 = document.startViewTransition(() => { part.innerText = "A"; }); + await t2.finished; + + await raf(); + takeScreenshot(); +} +onload = () => runTest(); + +</script> +</body> +</html>