blob: 5c50aab7ddf222e2de15dd70ffc0ac5507efab99 [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) {
internals.settings.setInputEventsEnabled(true);
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>