VT: Fix inline with filter overflow calculation.

This patch moves the PhysicalVisualOverflowIncludingFilters from
LayoutBox to LayoutBoxModelObject and uses it for overflow calculations
in VT.

R=bokan@chromium.org

Fixed: 1379079
Change-Id: Ic4f197250e715cf84f04d2f09023a3864b9aeeae
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4080507
Commit-Queue: Vladimir Levin <vmpstr@chromium.org>
Reviewed-by: David Bokan <bokan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1079370}
diff --git a/css/css-view-transitions/inline-child-with-filter-ref.html b/css/css-view-transitions/inline-child-with-filter-ref.html
new file mode 100644
index 0000000..44a41f1
--- /dev/null
+++ b/css/css-view-transitions/inline-child-with-filter-ref.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<title>View transitions: inline child with filter (ref)</title>
+<link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/">
+<link rel="author" href="mailto:vmpstr@chromium.org">
+
+<style>
+body { margin : 0; }
+#target {
+  width: 100px;
+  height: 100px;
+  background-color: grey;
+  overflow-clip-margin: 40px;
+  contain: paint;
+  view-transition-name: target;
+}
+
+#child {
+  position: relative;
+  left: 100px;
+  top: 100px;
+  color: lightgreen;
+  background-color: darkgreen;
+  filter: blur(30px);
+}
+</style>
+
+<div id="target">
+  <span id="child">INLINEBOX</span>
+</div>
diff --git a/css/css-view-transitions/inline-child-with-filter.html b/css/css-view-transitions/inline-child-with-filter.html
new file mode 100644
index 0000000..fbacc33
--- /dev/null
+++ b/css/css-view-transitions/inline-child-with-filter.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<title>View transitions: inline child with filter</title>
+<link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/">
+<link rel="author" href="mailto:vmpstr@chromium.org">
+<link rel="match" href="inline-child-with-filter-ref.html">
+<script src="/common/reftest-wait.js"></script>
+
+<style>
+body { margin : 0; }
+#target {
+  width: 100px;
+  height: 100px;
+  background-color: grey;
+  overflow-clip-margin: 40px;
+  contain: paint;
+  view-transition-name: target;
+}
+
+#child {
+  position: relative;
+  left: 100px;
+  top: 100px;
+  color: lightgreen;
+  background-color: darkgreen;
+  filter: blur(30px);
+}
+
+html::view-transition-container(root) { animation-duration: 300s; }
+html::view-transition-old(target) {
+  animation: unset;
+  opacity: 1;
+}
+html::view-transition-new(target) {
+  animation: unset;
+  opacity: 0;
+}
+</style>
+
+<div id="target">
+  <span id="child">INLINEBOX</span>
+</div>
+
+<script>
+async function runTest() {
+  let transition = document.startViewTransition(async () => {
+    document.getElementById("target").remove();
+  });
+  transition.ready.then(() => requestAnimationFrame(takeScreenshot));
+}
+onclick = requestAnimationFrame(() => requestAnimationFrame(runTest));
+</script>