<!DOCTYPE html>
<html>
<head>
<style>
#dragme:-webkit-drag
{
    display: none;
}
</style>
<script>
function runTest()
{
    var dragme = document.getElementById('dragme');
    dragme.addEventListener('dragend', function () {
        if (window.testRunner)
            testRunner.notifyDone();
        document.getElementById('console').appendChild(document.createTextNode('PASS'));
        dragme.style.display = "none";
    });

    if (!window.testRunner)
        return;

    testRunner.waitUntilDone();
    testRunner.dumpAsText();

    eventSender.mouseMoveTo(dragme.offsetLeft + dragme.offsetWidth / 2, dragme.offsetTop + dragme.offsetHeight / 2);
    eventSender.mouseDown();
    eventSender.leapForward(100);
    eventSender.mouseMoveTo(0, 0);
    eventSender.mouseUp();
}
window.addEventListener('load', runTest);
</script>
</head>
<body>
<div id="dragme" draggable="true">To test, try dragging this div around. It shouldn't crash, the div should disappear and PASS should appear.</div>
<div id="console"></div>
</body>
</html>
