blob: 21e9ca9c133dbf0472a63777b24693e1054742a6 [file] [log] [blame]
<!DOCTYPE html>
<html>
<body onload="runTest()">
<script src="../../resources/js-test-pre.js"></script>
<script>
description('This tests accessing DataTransferItemList when dropping a file.'
+ ' To manually test, drag and drop <a href="../resources/text-pasteboard-data.txt">LayoutTests/editing/resources/text-pasteboard-data.txt</a> from another app (e.g. Finder) to the box below.');
function runTest()
{
if (!window.testRunner)
return;
if (!window.eventSender || !eventSender.beginDragWithFiles) {
testFailed('This test requires eventSender.beginDragWithFiles');
finishJSTest();
return;
}
eventSender.beginDragWithFiles(["../resources/text-pasteboard-data.txt"]);
const target = document.getElementById('target');
eventSender.mouseMoveTo(target.offsetLeft + 5, target.offsetTop + 5);
eventSender.mouseUp();
}
function drop(event)
{
event.preventDefault();
dataTransfer = event.dataTransfer;
shouldBe('dataTransfer.items.length', '1');
shouldBeEqualToString('dataTransfer.items[0].kind', 'file');
shouldBeEqualToString('dataTransfer.items[0].type', 'text/plain');
shouldNotBe('file = dataTransfer.items[0].getAsFile(); file', 'null');
shouldBeEqualToString('file.name', 'text-pasteboard-data.txt');
shouldNotThrow('reader = new FileReader(); reader.onload = () => checkFileContent(reader.result); reader.readAsText(file);');
}
function checkFileContent(content)
{
shouldBeEqualToString('"' + content + '"', 'hello, world.');
shouldBe('dataTransfer.items[0].getAsFile()', 'null');
finishJSTest();
}
jsTestIsAsync = true;
successfullyParsed = true;
</script>
<script src="../../resources/js-test-post.js"></script>
<div id="target" contenteditable="true" ondrop="drop(event)" style="width: 100px; height: 100px; border: solid 1px black;"></div>
</body>
</html>