From 302fb98747b20a8b7b7d1610560cd1213608f20c Mon Sep 17 00:00:00 2001 From: Philip Rogers Date: Mon, 8 Apr 2024 17:08:48 +0000 Subject: [PATCH] Bug 1888944 [wpt PR 45451] - [css-anchor-position] Support basic position-visibility: anchors-visible, a=testonly Automatic update from web-platform-tests [css-anchor-position] Support basic position-visibility: anchors-visible This patch implements basic support for position-visibility: anchors-visible with a single anchor. There is active discussion about whether to track the visibility of multiple anchors at: https://github.com/w3c/csswg-drafts/issues/7758#issuecomment-2026137829. The high-level approach in this patch is to use a post-layout intersection observer for the tracked anchor. On visibility changes, the anchored element's paint layer is updated via `PaintLayer::SetInvisibleForPositionVisibility`. Spec: https://github.com/w3c/csswg-drafts/issues/7758#issuecomment-1965540529 Bug: 329703412 Change-Id: Icedcb43510a0c6a491cf463e7dc8a114ab7abf5f Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5410539 Commit-Queue: Xianzhu Wang Auto-Submit: Philip Rogers Reviewed-by: Xianzhu Wang Cr-Commit-Position: refs/heads/main@{#1281911} -- wpt-commits: 6673c544f6ecefa1e89dcd47db63b1c43a29396f wpt-pr: 45451 --- ...y-anchors-visible-after-scroll-in-ref.html | 32 +++++++++ ...ors-visible-after-scroll-in.tentative.html | 64 +++++++++++++++++ ...-anchors-visible-after-scroll-out-ref.html | 22 ++++++ ...rs-visible-after-scroll-out.tentative.html | 59 ++++++++++++++++ ...ity-anchors-visible-change-anchor-ref.html | 29 ++++++++ ...chors-visible-change-anchor.tentative.html | 68 +++++++++++++++++++ ...visible-non-intervening-container-ref.html | 10 +++ ...e-non-intervening-container.tentative.html | 65 ++++++++++++++++++ ...sition-visibility-anchors-visible-ref.html | 21 ++---- ...chors-visible-with-position.tentative.html | 50 ++++++++++++++ ...-visibility-anchors-visible.tentative.html | 39 +++++------ ...visibility-remove-anchors-visible-ref.html | 25 +++++++ ...lity-remove-anchors-visible.tentative.html | 61 +++++++++++++++++ 13 files changed, 505 insertions(+), 40 deletions(-) create mode 100644 testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in-ref.html create mode 100644 testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in.tentative.html create mode 100644 testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-out-ref.html create mode 100644 testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-out.tentative.html create mode 100644 testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-change-anchor-ref.html create mode 100644 testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-change-anchor.tentative.html create mode 100644 testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-non-intervening-container-ref.html create mode 100644 testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-non-intervening-container.tentative.html create mode 100644 testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-with-position.tentative.html create mode 100644 testing/web-platform/tests/css/css-anchor-position/position-visibility-remove-anchors-visible-ref.html create mode 100644 testing/web-platform/tests/css/css-anchor-position/position-visibility-remove-anchors-visible.tentative.html diff --git a/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in-ref.html b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in-ref.html new file mode 100644 index 0000000000000..10f74d4fb0985 --- /dev/null +++ b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in-ref.html @@ -0,0 +1,32 @@ + + + + +
+
anchor
+
+
target
+ + diff --git a/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in.tentative.html b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in.tentative.html new file mode 100644 index 0000000000000..cea439c55f4a4 --- /dev/null +++ b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in.tentative.html @@ -0,0 +1,64 @@ + + + + +CSS Anchor Positioning Test: position-visibility: anchors-visible + + + + + + +
+
anchor
+
+
target
+
+ + diff --git a/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-out-ref.html b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-out-ref.html new file mode 100644 index 0000000000000..bd4fe1f09f8ae --- /dev/null +++ b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-out-ref.html @@ -0,0 +1,22 @@ + + + + +
+
+
+ + diff --git a/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-out.tentative.html b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-out.tentative.html new file mode 100644 index 0000000000000..b2e3643b077cb --- /dev/null +++ b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-out.tentative.html @@ -0,0 +1,59 @@ + + + + +CSS Anchor Positioning Test: position-visibility: anchors-visible + + + + + + +
+
anchor
+
+
target
+
+ + diff --git a/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-change-anchor-ref.html b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-change-anchor-ref.html new file mode 100644 index 0000000000000..cc35e4cd1f23e --- /dev/null +++ b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-change-anchor-ref.html @@ -0,0 +1,29 @@ + + + + +
+
+
+
target
+ + diff --git a/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-change-anchor.tentative.html b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-change-anchor.tentative.html new file mode 100644 index 0000000000000..f8b1cc6d100f1 --- /dev/null +++ b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-change-anchor.tentative.html @@ -0,0 +1,68 @@ + + + + +CSS Anchor Positioning Test: position-visibility: anchors-visible + + + + + + +
+
anchor1
+
anchor2
+
target
+
+ + diff --git a/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-non-intervening-container-ref.html b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-non-intervening-container-ref.html new file mode 100644 index 0000000000000..3b6532e27b02a --- /dev/null +++ b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-non-intervening-container-ref.html @@ -0,0 +1,10 @@ + + + +
target
diff --git a/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-non-intervening-container.tentative.html b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-non-intervening-container.tentative.html new file mode 100644 index 0000000000000..7b84976fd3af0 --- /dev/null +++ b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-non-intervening-container.tentative.html @@ -0,0 +1,65 @@ + + + +CSS Anchor Positioning Test: position-visibility: anchors-visible + + + + +
+
+
+ + + +
anchor
+
+
target
+
+
+
+ + diff --git a/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-ref.html b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-ref.html index 6f8d3cb971e6e..17798173804b4 100644 --- a/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-ref.html +++ b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible-ref.html @@ -3,30 +3,17 @@
-
-
anchor1
- -
anchor2
- -
anchor3
-
+
diff --git a/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible.tentative.html b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible.tentative.html index 6605bbc9783f8..85b8d897db8cd 100644 --- a/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible.tentative.html +++ b/testing/web-platform/tests/css/css-anchor-position/position-visibility-anchors-visible.tentative.html @@ -1,55 +1,48 @@ + CSS Anchor Positioning Test: position-visibility: anchors-visible
-
- -
anchor1
-
target1
- - -
anchor2
-
target2
- - -
anchor3
-
target3
-
+
anchor
+
+
target
diff --git a/testing/web-platform/tests/css/css-anchor-position/position-visibility-remove-anchors-visible-ref.html b/testing/web-platform/tests/css/css-anchor-position/position-visibility-remove-anchors-visible-ref.html new file mode 100644 index 0000000000000..135763bf6bb8d --- /dev/null +++ b/testing/web-platform/tests/css/css-anchor-position/position-visibility-remove-anchors-visible-ref.html @@ -0,0 +1,25 @@ + + + + +
+
target
+
+ + diff --git a/testing/web-platform/tests/css/css-anchor-position/position-visibility-remove-anchors-visible.tentative.html b/testing/web-platform/tests/css/css-anchor-position/position-visibility-remove-anchors-visible.tentative.html new file mode 100644 index 0000000000000..c6649e5f93048 --- /dev/null +++ b/testing/web-platform/tests/css/css-anchor-position/position-visibility-remove-anchors-visible.tentative.html @@ -0,0 +1,61 @@ + + + + +CSS Anchor Positioning Test: position-visibility: anchors-visible + + + + + + +
+
anchor
+
+
target
+
+ +