blob: f658ae88a95af8a576f6d5b0ec4ca72cba8e6c5c [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<script>
window.jsTestIsAsync = true;
var htmlHyperlink;
var dragBeginPositionX;
var dragBeginPositionY;
var dragEndPositionX;
var dragEndPositionY;
var dragHasStarted = false;
var dragHasEnded = false;
var maxNumberOfRuns = 20;
var currentRun = 0;
function finishTest()
{
debug("<br>");
shouldBeTrue("dragHasStarted");
shouldBeTrue("dragHasEnded");
finishJSTest();
}
function dragStart(e) {
dragHasStarted = true;
}
function dragEnd(e) {
dragHasEnded = true;
if (currentRun < maxNumberOfRuns)
return;
window.setTimeout(finishTest, 0);
}
function dragAndDrop(beginX, beginY, endX, endY)
{
if (!window.eventSender)
return;
eventSender.mouseMoveTo(beginX, beginY);
eventSender.mouseDown();
eventSender.leapForward(100);
eventSender.mouseMoveTo(endX, endY);
eventSender.mouseUp();
}
function runNextStep()
{
if (currentRun++ >= maxNumberOfRuns)
return;
debug("Dragging HTML hyperlink around. Attempt #" + currentRun);
dragAndDrop(dragBeginPositionX, dragBeginPositionY, dragEndPositionX, dragEndPositionY);
window.setTimeout(runNextStep, 0);
}
function runTest()
{
if (!window.testRunner)
return;
htmlHyperlink = document.getElementById("htmlHyperlink");
htmlHyperlink.ondragstart = dragStart;
htmlHyperlink.ondragend = dragEnd;
dragBeginPositionX = htmlHyperlink.offsetLeft + htmlHyperlink.offsetWidth / 2;
dragBeginPositionY = htmlHyperlink.offsetTop + htmlHyperlink.offsetHeight / 2;
dragEndPositionX = dragBeginPositionX + htmlHyperlink.offsetWidth + 50;
dragEndPositionY = dragBeginPositionY + htmlHyperlink.offsetHeight + 50;
runNextStep();
}
</script>
</head>
<body onload="runTest()">
<p>
<a id="htmlHyperlink" href="http://www.whatwg.org/html">HTML hyperlink</a>
<p>
<div id="console"></div>
<script>
description("This test checks that quickly attempting a drag'n'drop operation multiple times over the same element does not crash the web process.");
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>