summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/css-view-transitions/hit-test-unpainted-element-from-point.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/css/css-view-transitions/hit-test-unpainted-element-from-point.html')
-rw-r--r--testing/web-platform/tests/css/css-view-transitions/hit-test-unpainted-element-from-point.html79
1 files changed, 79 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-view-transitions/hit-test-unpainted-element-from-point.html b/testing/web-platform/tests/css/css-view-transitions/hit-test-unpainted-element-from-point.html
new file mode 100644
index 0000000000..7c9ed911cb
--- /dev/null
+++ b/testing/web-platform/tests/css/css-view-transitions/hit-test-unpainted-element-from-point.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<title>View transitions: hit test shared element at the real dom location</title>
+<link rel="help" href="https://github.com/WICG/view-transitions">
+<link rel="author" href="mailto:vmpstr@chromium.org">
+<link rel="match" href="hit-test-unpainted-element-ref.html">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<style>
+html { view-transition-name: none }
+#target {
+ width: 100px;
+ height: 100px;
+ contain: paint;
+ view-transition-name: shared;
+ position: relative;
+ z-index: 1;
+}
+.before {
+ background: yellow;
+ left: 200px;
+}
+.after {
+ background: green;
+}
+.after:hover {
+ background: red;
+}
+#unrelated {
+ width: 50px;
+ height: 50px;
+ position: relative;
+ top: -50px;
+ background: blue;
+}
+
+html::view-transition {
+ pointer-events: none;
+}
+html::view-transition-group(*) {
+ pointer-events: auto;
+}
+
+html::view-transition-group(shared) {
+ animation-delay: 300s;
+}
+html::view-transition-old(shared) {
+ animation: unset;
+ opacity: 1;
+}
+html::view-transition-new(shared) {
+ display: none;
+}
+</style>
+
+<div id=target class=before></div>
+<div id=unrelated></div>
+
+<script>
+async_test(t => {
+ assert_implements(document.startViewTransition, "Missing document.startViewTransition");
+ document.startViewTransition(() => {
+ target.classList.toggle("before");
+ target.classList.toggle("after");
+ requestAnimationFrame(async () => {
+ // Check the old location of the element, we should get body.
+ t.step(() => assert_equals(document.elementFromPoint(20, 20), document.body));
+ // Check the new location of the pseudo element, we should get documentElement,
+ // which is the originating element for the pseudo element.
+ t.step(() => assert_equals(document.elementFromPoint(220, 20), document.documentElement));
+ // Check the spot that used to be covered by the element but now has
+ // unrelated element, which is what we expect to get.
+ t.step(() => assert_equals(document.elementFromPoint(20, 70), unrelated));
+ t.done();
+ });
+ });
+}, "hit test should not hit unpainted element, but does hit pseudo and unrelated elements");
+</script>