blob: ba4273ebd98f1ba0bc7d427014da34e827f6af1d [file] [log] [blame]
<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->
<html>
<head>
<meta name="viewport" content="width=device-width initial-scale=1 user-scalable=no">
<script src="../../../../../resources/ui-helper.js"></script>
<style>
#neutral { position:absolute; top:0px; left:100px; width:100px; height:100px; border:2px solid blue; }
#testDiv { position:absolute; top:100px; left:100px; width:100px; height:100px; border:2px solid blue; }
#testDiv div { border: 2px solid red; width: 10px; height: 10px; }
</style>
<script>
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
if (window.internals)
internals.settings.setContentChangeObserverEnabled(true);
var outputText = "";
function output(text) {
outputText += text + '<br>';
}
var mutateOnMouseOver = false;
function mouseOver() {
if (mutateOnMouseOver) {
let newContent = document.createElement("div");
newContent.addEventListener("click", function( event ) {
}, false);
document.querySelector('#testDiv').appendChild(newContent);
}
output('mouseover');
}
function mouseOut() {
output('mouseout');
}
function mouseClick() {
output('mouseclick');
}
async function test() {
if (!window.testRunner || !window.testRunner.runUIScript)
return;
// Test tapping in a div.
output("Tapping once");
await UIHelper.tapAt(150, 150);
await UIHelper.waitForDoubleTapDelay();
output("Tapping again");
await UIHelper.tapAt(150, 150);
await UIHelper.waitForDoubleTapDelay();
output("Tapping out");
await UIHelper.tapAt(150, 50);
await UIHelper.waitForDoubleTapDelay();
output("Enabling mutation on mouseover");
testDiv.removeAttribute("role");
mutateOnMouseOver = true;
output("Tapping once");
await UIHelper.tapAt(150, 150);
await UIHelper.waitForDoubleTapDelay();
output("Tapping again");
await UIHelper.tapAt(150, 150);
await UIHelper.waitForDoubleTapDelay();
document.querySelector('#output').innerHTML += outputText;
testRunner.notifyDone();
}
</script>
</head>
<body onload="test()">
<div>Test that if document is visibly mutated in mouseover handler then synthetic click is not generated until the next tap.</div>
<div id='neutral' onmouseover='' onmouseout='' onclick=''>
</div>
<div role="checkbox" id='testDiv' onmouseover='mouseOver()' onmouseout='mouseOut()' onclick='mouseClick()'>
</div>
<div id='output'></div>
</body>
</html>