blob: 9f5796fc1219417863a7d716507d019c06691180 [file] [log] [blame]
<!DOCTYPE html>
<body>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<textarea id="textarea1">Drag me to the other textarea</textarea>
<textarea id="textarea2"></textarea>
<script>
const textarea1 = document.getElementById('textarea1');
const textarea2 = document.getElementById('textarea2');
function hoverOverElement(element) {
const offsetX = element.offsetLeft;
const offsetY = element.offsetTop;
const centerX = offsetX + (element.offsetWidth / 2);
const centerY = offsetY + (element.offsetHeight / 2);
eventSender.mouseMoveTo(centerX, centerY);
}
function assertTextareasValues(expectedValueTextarea1, expectedValueTextarea2) {
assert_equals(textarea1.value, expectedValueTextarea1, "Wrong value for textarea1");
assert_equals(textarea2.value, expectedValueTextarea2, "Wrong value for textarea2");
}
test(() => {
assert_own_property(window, 'eventSender', 'This test requires eventSender.');
// Make sure the initial values are correct
assertTextareasValues("Drag me to the other textarea", "");
// Select all the text in textarea1
textarea1.select();
// Start dragging the text from textarea1
hoverOverElement(textarea1);
eventSender.mouseDown();
// Leap the event time so that mouseMove will start a new drag instead of changing selection.
eventSender.leapForward(400);
// Drop the text on textarea2
hoverOverElement(textarea2);
eventSender.mouseUp();
// Make sure the text was dragged and the values were updated
assertTextareasValues("", "Drag me to the other textarea");
// Undo, and make sure the values were also reverted
document.execCommand('Undo');
assertTextareasValues("Drag me to the other textarea", "");
}, "Undo after dragging text between elements should restore the values");
</script>
</body>