blob: c0bea55afdc36d887bb69624491b7cca288d639c [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<body>
<input id="destination" type="text" style="height: 256px; width: 256px; border: 1px dashed black;" />
<hr>
<div id="ondragenterElement" ondragenter='event.preventDefault(); event.dataTransfer.setData("url", "http://webkit.org/setByDragenter")'>
<a href="https://webkit.org">This only has an ondragenter handler and is here to make sure dragging over it doesn't change the pasteboard.</a>
</div>
<div id="ondragoverElement" ondragover='event.preventDefault(); event.dataTransfer.setData("text", "Text set by dragover.")'>
<a href="https://webkit.org">This only has an ondragover handler and is here to make sure dragging over it doesn't change the pasteboard.</a>
</div>
<a id="firstAnchorSource" draggable="true" href="https://webkit.org">firstAnchorSource</a><br>
<a id="secondAnchorSource" draggable="true" href="https://webkit.org">secondAnchorSource</a><br>
<svg id="firstSvgSource" draggable="true" width="140" height="30" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<a xlink:href="https://webkit.org" target="_blank">
<rect height="30" width="120" y="0" x="0" rx="15"/>
<text fill="white" text-anchor="middle" y="21" x="60">https://webkit.org</text>
</a>
</svg><br>
<svg id="secondSvgSource" draggable="true" width="140" height="30" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<a xlink:href="https://webkit.org" target="_blank">
<rect height="30" width="120" y="0" x="0" rx="15"/>
<text fill="blue" text-anchor="middle" y="21" x="60">https://webkit.org</text>
</a>
</svg><br>
<!-- Should be uncommented when https://bugs.webkit.org/show_bug.cgi?id=164280 is fixed
<div draggable="true">
<math id="firstMathSource" style="padding: 0">
<mrow href="https://webkit.org">
<mrow>
<mrow>
<mspace id="space1" width="150px" height="20px" mathbackground="yellow"></mspace>
</mrow>
</mrow>
</mrow>
</math>
</div>
<div draggable="true">
<math id="secondMathSource" style="padding: 0">
<mrow href="https://webkit.org">
<mrow>
<mrow>
<mspace id="space2" width="150px" height="20px" mathbackground="red"></mspace>
</mrow>
</mrow>
</mrow>
</math>
</div>
-->
<div id="console"></div>
<script>
var TEXT_TO_SET_IN_DATA_TRANSFER = "javascript:alert('Set by data transfer');";
var URL_TO_SET_IN_DATA_TRANSFER = "http://webkit.org/setByDataTransfer";
var testResults = [];
function addDragstartEventHander(elementId, dataTransferType) {
var intendedDataTransferContent = (dataTransferType === "text" ? TEXT_TO_SET_IN_DATA_TRANSFER : URL_TO_SET_IN_DATA_TRANSFER);
document.getElementById(elementId).addEventListener("dragstart", function (event) {
event.dataTransfer.setData(dataTransferType, intendedDataTransferContent);
var actualDataTransferContent = event.dataTransfer.getData(dataTransferType);
if (actualDataTransferContent === intendedDataTransferContent) {
testResults.push({
passed : true,
message : "'" + actualDataTransferContent + "' was set in the data transfer for " + elementId + " and not overwritten."
});
} else {
testResults.push({
passed : false,
message : (actualDataTransferContent ? "'" + actualDataTransferContent + "'" : "Nothing") + " was set in the data transfer for " + elementId + " or it was overwritten."
});
}
});
}
addDragstartEventHander("firstAnchorSource", "text");
addDragstartEventHander("secondAnchorSource", "url");
addDragstartEventHander("firstSvgSource", "text");
addDragstartEventHander("secondSvgSource", "url");
// Should be uncommented when https://bugs.webkit.org/show_bug.cgi?id=164280 is fixed
// addDragstartEventHander("firstMathSource", "text");
// addDragstartEventHander("secondMathSource", "url");
function moveMouseToCenterOfElement(elementId) {
var element = document.getElementById(elementId);
if (element.offsetLeft) {
var centerX = element.offsetLeft + element.offsetWidth / 2;
var centerY = element.offsetTop + element.offsetHeight / 2;
eventSender.mouseMoveTo(centerX, centerY);
} else {
var clientRect = element.getBoundingClientRect();
var centerX = clientRect.left + clientRect.width / 2;
var centerY = clientRect.top + clientRect.height / 2;
eventSender.mouseMoveTo(centerX, centerY);
}
}
function dragAndDropElement (elementId) {
moveMouseToCenterOfElement(elementId);
eventSender.mouseDown();
eventSender.leapForward(200);
moveMouseToCenterOfElement("ondragoverElement");
eventSender.leapForward(100);
moveMouseToCenterOfElement("ondragenterElement");
eventSender.leapForward(100);
moveMouseToCenterOfElement("destination");
eventSender.leapForward(200);
eventSender.mouseUp();
}
if (window.testRunner && eventSender) {
jsTestIsAsync = true;
dragAndDropElement("firstAnchorSource");
dragAndDropElement("secondAnchorSource");
dragAndDropElement("firstSvgSource");
dragAndDropElement("secondSvgSource");
// Should be uncommented when https://bugs.webkit.org/show_bug.cgi?id=164280 is fixed
// dragAndDropElement("firstMathSource");
// dragAndDropElement("secondMathSource");
testResults.forEach(function(result) {
if (result.passed) {
testPassed(result.message);
} else {
testFailed(result.message);
}
});
finishJSTest();
}
</script>
</body>
</html>