| <!doctype html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <meta name=viewport content="width=device-width,initial-scale=1"> |
| <title>Making generated content under pointer at hover should keep targeting the boundary event target to parent element</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/resources/testdriver.js"></script> |
| <script src="/resources/testdriver-actions.js"></script> |
| <script src="/resources/testdriver-vendor.js"></script> |
| <script> |
| "use strict"; |
| |
| addEventListener("load", () => { |
| promise_test(async () => { |
| const div = document.querySelector("div"); |
| await new test_driver.Actions() |
| .pointerMove(0, 0, {origin: div}) |
| .send(); |
| const span = document.querySelector("span"); |
| const promisePointerOver = new Promise(resolve => { |
| span.addEventListener("pointerover", event => resolve(event.target), {once: true}); |
| }); |
| const promiseMouseOver = new Promise(resolve => { |
| span.addEventListener("mouseover", event => resolve(event.target), {once: true}); |
| }); |
| await new test_driver.Actions() |
| .pointerMove(0, 0, {origin: span}) |
| .pointerDown() |
| .pointerUp() |
| .send(); |
| const pointerOverTarget = await promisePointerOver; |
| assert_equals( |
| pointerOverTarget, |
| span, |
| "pointerover target should be the <span>" |
| ); |
| const mouseOverTarget = await promiseMouseOver; |
| assert_equals( |
| mouseOverTarget, |
| span, |
| "mouseover target should be the <span>" |
| ); |
| }, "Generating text content under pointer"); |
| }, {once: true}); |
| </script> |
| <style> |
| span:hover::before { |
| content: "Here is generated content... "; |
| } |
| </style> |
| </head> |
| <body><span>Hover me!</span><div>Move pointer here first!</div></body> |
| </html> |