blob: e886b4a4aa3f89712ae1d989fa93f2dbb496a063 [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<style>
#source, #richDestination, #plainDestination {
font-size: 30px;
border: 1px blue dashed;
width: 100px;
}
</style>
<p>To manually test this, drag the text into the contenteditable, and then into the textarea. Observe the output.
You should see a pair of insertFromDrop events dispatched on richDestination followed by another pair of
insertFromDrop events dispatched on plainDestination.</p>
<div id="source">WebKit</div>
<div id="richDestination" contenteditable onbeforeinput=logInputEvent(event) oninput=logInputEvent(event)></div>
<textarea id="plainDestination" onbeforeinput=logInputEvent(event) oninput=logInputEvent(event)></textarea>
<div id="output"></div>
<script type="text/javascript">
if (window.internals && window.testRunner)
testRunner.dumpAsText();
if (window.eventSender) {
moveToCenter(source);
doubleClick();
eventSender.leapForward(1000);
eventSender.mouseDown();
eventSender.leapForward(1000);
moveToCenter(richDestination);
eventSender.leapForward(1000);
eventSender.mouseUp();
eventSender.leapForward(1000);
moveToCenter(source);
doubleClick();
eventSender.leapForward(1000);
eventSender.mouseDown();
eventSender.leapForward(1000);
moveToCenter(plainDestination);
eventSender.leapForward(1000);
eventSender.mouseUp();
}
function dataTransferToString(dataTransfer)
{
if (!dataTransfer)
return "(null)"
return `{rich:${dataTransfer.getData("text/html")} plain:${dataTransfer.getData("text/plain")}}`;
}
function logInputEvent(event)
{
output.innerHTML += `(${event.target.id}): type=${event.type}, inputType=${event.inputType}, data="${event.data}" dataTransfer=${dataTransferToString(event.dataTransfer)}<br>`;
}
function doubleClick() {
eventSender.mouseDown();
eventSender.mouseUp();
eventSender.leapForward(100);
eventSender.mouseDown();
eventSender.mouseUp();
}
function moveToCenter(element)
{
let x = element.offsetParent.offsetLeft + element.offsetLeft + element.offsetWidth / 2;
let y = element.offsetParent.offsetTop + element.offsetTop + element.offsetHeight / 2;
eventSender.mouseMoveTo(x, y);
}
</script>
</body>
</html>