blob: b23649bfc26c3ae036b3cba7cd462750f6791f76 [file] [edit]
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
span, div { display: block; }
span {
background: green;
padding: 10px;
}
div {
background: red;
padding: 50px;
}
</style>
</head>
<body>
<p>This test ensures we clear the drag state at the end of each drag. To test manually, drag the green box below twice.
You should observe the same list of events in the same order twice.</p>
<div contenteditable>
<span>Drag me down twice!</span>
</div>
<pre id="log">
</pre>
<script>
function log(event) {
document.getElementById('log').textContent += event.target.localName + ':' + this.localName + ':' + event.type + '\n';
}
function setLog(log) {
var value = document.getElementById('log').textContent;
document.getElementById('log').textContent = log;
return value;
}
var div = document.querySelector('div');
div.addEventListener('dragover', function (event) { event.preventDefault(); });
div.addEventListener('dragenter', log);
div.addEventListener('dragleave', log);
var span = document.querySelector('span');
span.addEventListener('dragenter', log);
span.addEventListener('dragleave', log);
async function dragSpan() {
var x = span.offsetLeft + span.offsetWidth / 2;
await eventSender.asyncMouseMoveTo(x, span.offsetTop + span.offsetHeight / 2);
await eventSender.asyncMouseDown();
await eventSender.asyncMouseMoveTo(x, span.offsetTop + 2 * span.offsetHeight / 3);
eventSender.leapForward(200);
await eventSender.asyncMouseMoveTo(x, span.offsetTop + 3 * span.offsetHeight / 2);
eventSender.leapForward(200);
await eventSender.asyncMouseUp();
}
onload = async () => {
if (window.eventSender && window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
getSelection().selectAllChildren(span);
await dragSpan();
var firstLog = setLog('');
await dragSpan();
var secondLog = setLog('PASS');
if (firstLog != secondLog)
setLog('FAIL:\nFirst drag:\n' + firstLog + '\nSecond drag:\n' + secondLog);
testRunner.notifyDone();
}
}
</script>
</body>
</html>