commit 99945be7fe02af2ca1f164afb616fe62f6be39c1
parent 9d0cd06ff4e62a609a482a9ec4b36cc880478ea6
Author: Steve Kobes <skobes@chromium.org>
Date: Wed, 24 Dec 2025 10:01:42 +0000
Bug 2007621 [wpt PR 56911] - ScopedVT: Fix prepaint context for ::v-t clip/scroll escaping., a=testonly
Automatic update from web-platform-tests
ScopedVT: Fix prepaint context for ::v-t clip/scroll escaping.
Overriding local_border_box_properties of FragmentData was not correct,
for reasons explained in the bug. Revert changes of crrev.com/c/7229802
and crrev.com/c/7224470 in favor of modifying the clip and transform in
the ContainingBlockContext during the prepaint tree walk.
Bug: 468277656
Fuchsia-Binary-Size: Size increase is unavoidable
Change-Id: I84398c17e5a763c2baa07a5497fb382c9da223ae
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7302909
Reviewed-by: Khushal Sagar <khushalsagar@chromium.org>
Commit-Queue: Steve Kobes <skobes@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1562386}
--
wpt-commits: 5df21979d1ab403efef4de14ff6dfe6e6887e70d
wpt-pr: 56911
Diffstat:
2 files changed, 76 insertions(+), 0 deletions(-)
diff --git a/testing/web-platform/tests/css/css-view-transitions/scoped/scroller-with-child-ref.html b/testing/web-platform/tests/css/css-view-transitions/scoped/scroller-with-child-ref.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+
+body { margin: 20px; font: 18pt monospace; line-height: 30px; }
+#scope { overflow: auto; contain: layout; padding: 20px;
+ width: 200px; height: 100px; border: 20px solid #acf; }
+#part-hide { padding: 10px; visibility: hidden;
+ border: 4px solid orange; width: 150px; height: 180px;
+ margin: 20px 0 0 90px; }
+#part { position: absolute; top: 66px; will-change: transform;
+ background: #fac; padding: 10px; border: 4px solid orange;
+ width: 150px; height: 180px; margin: 20px 0 0 90px; }
+
+</style>
+</head>
+<body>
+<div id=scope>World
+ <div id=part-hide></div>
+</div>
+<!-- TODO(crbug.com/468277656): The child currently pops out of the
+ scope's clip; this will be addressed by the nesting proposal in:
+ https://github.com/w3c/csswg-drafts/issues/12324 -->
+<div id=part>child</div>
+<script>
+
+scope.scrollBy(40, 24);
+
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-view-transitions/scoped/scroller-with-child.html b/testing/web-platform/tests/css/css-view-transitions/scoped/scroller-with-child.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<head>
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="scroller-with-child-ref.html">
+<script src="/common/reftest-wait.js"></script>
+<script src="/web-animations/testcommon.js"></script>
+<style>
+
+body { margin: 20px; font: 18pt monospace; line-height: 30px; }
+#scope { overflow: auto; contain: layout; padding: 20px;
+ width: 200px; height: 100px; border: 20px solid #acf; }
+#part { view-transition-name: foo;
+ background: #fea; padding: 10px; border: 4px solid orange;
+ width: 150px; height: 180px; margin: 20px 0 0 90px; }
+#scope::view-transition-group(*) { animation-play-state: paused; }
+#scope::view-transition-new(*) { animation: unset; opacity: 1; }
+#scope::view-transition-old(*) { animation: unset; opacity: 0; }
+
+</style>
+</head>
+<body>
+<div id=scope>Hello
+ <div id=part>child</div>
+</div>
+<script>
+
+failIfNot(scope.startViewTransition, "Missing element.startViewTransition");
+
+async function runTest() {
+ scope.scrollBy(40, 24);
+ await waitForCompositorReady();
+ const t = scope.startViewTransition(() => {
+ scope.firstChild.nodeValue = "World";
+ part.style.background = "#fac";
+ });
+ await t.ready;
+ takeScreenshot();
+}
+onload = () => runTest();
+
+</script>
+</body>
+</html>