Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<!doctype html>
<title>
Layout change under a stationary pointer fires boundary events and no pointermove event
</title>
<meta name="viewport" content="width=device-width">
<link rel="help"
<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 src="pointerevent_support.js"></script>
<style>
div {
position: absolute;
top: 0;
left: 0;
width: 50px;
height: 50px;
}
#overlay {
z-index: 1000;
display: none;
}
</style>
<div id="target"></div>
<div id="overlay"></div>
<script>
"use strict";
const target = document.getElementById("target");
const overlay = document.getElementById("overlay");
let logging_active = false;
let num_pointermoves = 0;
target.addEventListener("click", () => logging_active = true);
target.addEventListener("pointermove", () => {
if (logging_active) num_pointermoves++;
});
promise_test(async t => {
await test_driver.click(target);
let pointerout_promise = getEvent("pointerout", target);
overlay.style.display = "block";
await pointerout_promise;
let pointerover_promise = getEvent("pointerover", target);
overlay.style.display = "none";
await waitForAnimationFrames(2);
// Why does Chrome time out at the next line w/o the redundant wait above?
// Does chrome require something to request a main frame in order to detect
// the new pointer target after the style update to generate the event?
await pointerover_promise;
assert_equals(num_pointermoves, 0, "no pointermove events are expected");
}, "Layout change under a stationary pointer fires boundary events and no pointermove event");
</script>