55 lines
1.6 KiB
HTML
55 lines
1.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<p>This tests mouseenter and mouseleave events inside a shadow tree.<br>
|
|
To manually test, move the mouse cursor vertically across "hello, world" below.<br>
|
|
WebKit must generate mouseenter and mouseleve events exactly once on host (as well as hostParent, continer, and target).</p>
|
|
<div id="hostParent"><div id="host"></div></div><pre id="log"></pre>
|
|
<script>
|
|
|
|
const host = document.getElementById('host');
|
|
const shadowRoot = host.attachShadow({mode: 'closed'});
|
|
shadowRoot.innerHTML = `
|
|
<div id="container">
|
|
<span id="target">hello, world</span>
|
|
</div>`;
|
|
const container = shadowRoot.getElementById('container');
|
|
const target = shadowRoot.getElementById('target');
|
|
|
|
for (const element of [host.parentNode, host, container, target]) {
|
|
element.addEventListener('mouseenter', logEvent);
|
|
element.addEventListener('mouseleave', logEvent);
|
|
}
|
|
|
|
function log(text) {
|
|
document.getElementById('log').textContent += text + '\n';
|
|
}
|
|
|
|
function logEvent(event) {
|
|
if (event.composed)
|
|
log(`FAIL - ${event.type} on ${event.target.id} was composed`);
|
|
log(`${event.type} on ${event.target.id}`);
|
|
}
|
|
|
|
function logPhase(phase) {
|
|
log(`\n==${phase}==`);
|
|
}
|
|
|
|
if (!window.eventSender)
|
|
document.write('This test requires eventSender');
|
|
else {
|
|
testRunner.dumpAsText();
|
|
const targetRect = target.getBoundingClientRect();
|
|
const x = targetRect.x + 5;
|
|
logPhase('Entering target');
|
|
eventSender.mouseMoveTo(x, targetRect.top + 5);
|
|
logPhase('Leaving target');
|
|
eventSender.mouseMoveTo(x, targetRect.bottom + 5);
|
|
|
|
host.parentNode.style.display = 'none';
|
|
}
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|