blob: 48c62a6b5fc580b51ccf0c4db0efa7973ed35fff [file] [log] [blame]
<!doctype html>
<title>Check you don't crash when your previous drag target frame is deleted</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<p>Check you don't crash when your previous drag target frame is deleted</p>
<div><span id="dragme">hello</span></div>
<iframe id="target"></iframe>
<div id="log"></div>
<script>
var framex;
var framey;
var target = document.getElementById("target");
target.contentDocument.designMode = 'on';
var t = async_test('Drag-And-Drop to dead frame');
window.addEventListener('load', t.step_func(() => {
if (!window.eventSender)
throw new Error('This test requires eventSender.');
framex = target.offsetLeft + 10;
framey = target.offsetTop + target.offsetHeight / 2;
// Drag 'hello'
var dragMe = document.getElementById("dragme");
window.getSelection().selectAllChildren(dragMe);
x = dragMe.offsetLeft + 10;
y = dragMe.offsetTop + dragMe.offsetHeight / 2;
eventSender.mouseMoveTo(x, y);
eventSender.mouseDown();
eventSender.leapForward(500);
eventSender.mouseMoveTo(framex, framey);
setTimeout(dropIt1, 0);
}));
function dropIt1() {
// Drop it off to the frame
eventSender.mouseUp();
assert_equals(target.contentDocument.body.textContent, 'hello',
'target should have dropped content');
setTimeout(deleteFrameAndDrop, 0);
}
function deleteFrameAndDrop() {
// Delete the frame where we just dragged somet stuff
target.remove();
// Do drag drop again
var dragMe = document.getElementById("dragme");
x = dragMe.offsetLeft + 10;
y = dragMe.offsetTop + dragMe.offsetHeight / 2;
eventSender.mouseMoveTo(x, y);
eventSender.mouseDown();
eventSender.leapForward(500);
eventSender.mouseMoveTo(framex, framey);
setTimeout(dropIt2, 0);
}
function dropIt2() {
// Drop it off to somewhere
eventSender.mouseUp();
// Since we don't crash, we are succeeded!
t.done();
}
</script>