<!DOCTYPE html><!-- webkit-test-runner [ AttachmentElementEnabled=true ] -->
<html>
<body>
<p id="description"></p>
<div id="console"></div>
<div id="editable" contentEditable=true style="width:200px; height:200px"></div>
<script src="../../resources/js-test-pre.js"></script>
<script>
description('If we drag file promises onto an editable area, then attachments should be inserted into the editable area.');
jsTestIsAsync = true;

var editable = document.getElementById("editable");
editable.addEventListener("drop", () => window.setTimeout(() => {
    var resultChildren = editable.children;
    fileNames = "";
    for (var i = 0; i < resultChildren.length; i++) {
        attachment = resultChildren[i];
        shouldBeEqualToString('attachment.nodeName', 'ATTACHMENT');
        fileNames += attachment.file.name + " ";
    }
    shouldBeEqualToString('fileNames', 'apple.gif mozilla.gif drop-file-svg.svg ');
    editable.innerHTML = '';
    finishJSTest();
}, 0));

if (window.eventSender)
    dragFilesOntoEditable(['resources/apple.gif', 'resources/mozilla.gif', 'resources/drop-file-svg.svg']);

function moveMouseToCenterOfElement(element)
{
    var centerX = element.offsetLeft + element.offsetWidth / 2;
    var centerY = element.offsetTop + element.offsetHeight / 2;
    eventSender.mouseMoveTo(centerX, centerY);
}

function dragFilesOntoEditable(files)
{
    eventSender.beginDragWithFilePromises(files);
    moveMouseToCenterOfElement(editable);
    eventSender.mouseUp();
}

var successfullyParsed = true;
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
