blob: 4c404a0bf1fd78e1faf761925f13ee0016ace288 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body onload=runTest()>
<p id="description"></p>
<div id="console"></div>
<script>
description("Make sure that .files arrays are always empty for non-file drags.");
jsTestIsAsync = true;
var testContainer = document.createElement('div');
// Put dragables at the top so that logging does not cause them to move off screen (where we can't drag).
document.body.insertBefore(testContainer, document.body.firstChild);
var dragTarget = document.createElement('div');
dragTarget.innerHTML = "drag target";
dragTarget.style.cssText = 'width: 100px; height: 100px; background-color: blue';
testContainer.appendChild(dragTarget);
var droppedFiles = null;
dragTarget.ondragenter = function() {
event.dataTransfer.dropEffect = "copy";
}
dragTarget.ondragover = function() {
event.dataTransfer.dropEffect = "copy";
event.preventDefault();
}
dragTarget.ondrop = function() {
if (window.eventSender) {
if (droppedFiles)
testFailed("droppedFiles should have been cleared before making a drop");
droppedFiles = event.dataTransfer.files;
} else
debug("Got drop with files: " + event.dataTransfer.files + " length: " + event.dataTransfer.files.length)
}
var image = document.createElement('img');
image.src = "resources/apple.gif";
testContainer.appendChild(image);
// If we don't add a <br> then the line height of the <a> is the same as the <img> and the click-to-drag hits undragable whitespace.
testContainer.appendChild(document.createElement('br'));
var link = document.createElement('a');
link.innerHTML = "Draggable link";
link.href = "resources/apple.gif"
testContainer.appendChild(link);
function moveMouseToCenterOfElement(element)
{
var centerX = element.offsetLeft + element.offsetWidth / 2;
var centerY = element.offsetTop + element.offsetHeight / 2;
eventSender.mouseMoveTo(centerX, centerY);
}
function dragFromSourceToTarget(source, target)
{
moveMouseToCenterOfElement(source);
eventSender.mouseDown();
moveMouseToCenterOfElement(target);
eventSender.mouseUp();
}
function testDrag(source)
{
dragFromSourceToTarget(source, dragTarget);
if (!droppedFiles)
testFailed("Drop of " + source.tagName + " never occured!");
else if (droppedFiles.length == 0)
testPassed("Drag of " + source.tagName + " resulted in empty files array.");
else if (source == image)
testPassed(`Drag of ${source.tagName} resulted in files array of size ${droppedFiles.length}`);
else
testFailed("Drag of " + source.tagName + " resulted in non-empty files array! (files: " + droppedFiles.length + ")");
droppedFiles = null;
}
async function runTest()
{
if (!window.eventSender || !window.testRunner) {
testFailed("This test is not interactive, please run using DumpRenderTree");
return;
}
await image.decode();
testDrag(link);
testDrag(image);
document.body.removeChild(testContainer);
finishJSTest();
}
var successfullyParsed = true;
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>