<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test.js"></script>
<script src="../../editing.js"></script>
</head>
<body>
<div id="dropzone" style="width: 200px; height: 200px; background-color: grey;"></div>
<script>
description("Basic test coverage for dataTransferItem.webkitGetAsEntry()");
jsTestIsAsync = true;

var dropzone = document.getElementById('dropzone');
dropzone.ondrop = function(e) {
    e.preventDefault();
    dataTransfer = e.dataTransfer;

    shouldBe("dataTransfer.items.length", "2");

    firstDataTransferItem = dataTransfer.items[0];
    shouldBeEqualToString("firstDataTransferItem.kind", "file");
    shouldBeEqualToString("firstDataTransferItem.type", "text/plain");
    firstFile = firstDataTransferItem.getAsFile();
    shouldBeEqualToString("firstFile.name", "test.txt");
    shouldBe("firstFile.size", "5");
    shouldBeEqualToString("firstFile.type", "text/plain");

    firstEntry = firstDataTransferItem.webkitGetAsEntry();
    shouldBeFalse("firstEntry.isDirectory");
    shouldBeTrue("firstEntry.isFile");
    shouldBeEqualToString("firstEntry.name", "test.txt");
    shouldBeEqualToString("firstEntry.fullPath", "/test.txt");

    // Second item.
    secondDataTransferItem = dataTransfer.items[1];
    shouldBeEqualToString("secondDataTransferItem.kind", "file");
    shouldBeEqualToString("secondDataTransferItem.type", "");
    secondFile = secondDataTransferItem.getAsFile();
    shouldBeEqualToString("secondFile.name", "testFiles");
    shouldBeOneOfValues("secondFile.size", [272, 256]); // Chrome returns folder size, Firefox returns 0. 256 in APFS, 272 in HFS+ 
    shouldBeEqualToString("secondFile.type", "");

    secondEntry = secondDataTransferItem.webkitGetAsEntry();
    shouldBeTrue("secondEntry.isDirectory");
    shouldBeFalse("secondEntry.isFile");
    shouldBeEqualToString("secondEntry.name", "testFiles");
    shouldBeEqualToString("secondEntry.fullPath", "/testFiles");

    fileSystemRoot = secondEntry.filesystem.root;
    shouldBeTrue("fileSystemRoot.isDirectory");
    shouldBeFalse("fileSystemRoot.isFile");
    shouldBeEqualToString("fileSystemRoot.name", "");
    shouldBeEqualToString("fileSystemRoot.fullPath", "/");

    finishJSTest();
};

dropzone.ondragover = function(ev) {
    ev.preventDefault();
}

onload = function() {
    dragFilesOntoElement(dropzone, ['../../../fast/forms/resources/test.txt', '../../../fast/forms/file/entries-api/resources/testFiles']);
}
</script>
</body>
</html>
