blob: b98c0c558dbe6957262902e376e6d059af183714 [file] [log] [blame]
<!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 fileSystemDirectoryReader.readEntries()");
jsTestIsAsync = true;
function getEntriesAsPromise(dirEntry) {
return new Promise((resolve, reject) => {
let result = [];
let reader = dirEntry.createReader();
let doBatch = () => {
reader.readEntries(entries => {
if (entries.length > 0) {
entries.forEach(e => result.push(e));
doBatch();
} else {
resolve(result);
}
}, reject);
};
doBatch();
});
}
var dropzone = document.getElementById('dropzone');
dropzone.ondrop = function(e) {
e.preventDefault();
dataTransfer = e.dataTransfer;
shouldBe("dataTransfer.items.length", "1");
entry = dataTransfer.items[0].webkitGetAsEntry();
shouldBeTrue("entry.isDirectory");
shouldBeEqualToString("entry.name", "testFiles");
shouldBeEqualToString("entry.fullPath", "/testFiles");
getEntriesAsPromise(entry).then(function(entries) {
childEntries = entries;
shouldBe("childEntries.length", "4");
shouldBeEqualToString("childEntries[0].name", "file1.txt");
shouldBeEqualToString("childEntries[0].fullPath", "/testFiles/file1.txt");
shouldBeTrue("childEntries[0].isFile");
shouldBeEqualToString("childEntries[1].name", "file2.txt");
shouldBeEqualToString("childEntries[1].fullPath", "/testFiles/file2.txt");
shouldBeTrue("childEntries[1].isFile");
shouldBeEqualToString("childEntries[2].name", "subfolder1");
shouldBeEqualToString("childEntries[2].fullPath", "/testFiles/subfolder1");
shouldBeTrue("childEntries[2].isDirectory");
shouldBeEqualToString("childEntries[3].name", "subfolder2");
shouldBeEqualToString("childEntries[3].fullPath", "/testFiles/subfolder2");
shouldBeTrue("childEntries[3].isDirectory");
getEntriesAsPromise(childEntries[2]).then(function(entries) {
grandChildEntries = entries;
shouldBe("grandChildEntries.length", "1");
shouldBeEqualToString("grandChildEntries[0].name", "file3.txt");
shouldBeEqualToString("grandChildEntries[0].fullPath", "/testFiles/subfolder1/file3.txt");
shouldBeTrue("grandChildEntries[0].isFile");
getEntriesAsPromise(childEntries[3]).then(function(entries) {
grandChildEntries = entries;
shouldBe("grandChildEntries.length", "2");
shouldBeEqualToString("grandChildEntries[0].name", "file4.txt");
shouldBeEqualToString("grandChildEntries[0].fullPath", "/testFiles/subfolder2/file4.txt");
shouldBeTrue("grandChildEntries[0].isFile");
shouldBeEqualToString("grandChildEntries[1].name", "subfolder2a");
shouldBeEqualToString("grandChildEntries[1].fullPath", "/testFiles/subfolder2/subfolder2a");
shouldBeTrue("grandChildEntries[1].isDirectory");
getEntriesAsPromise(grandChildEntries[1]).then(function(entries) {
greatGrandChildEntries = entries;
shouldBe("greatGrandChildEntries.length", "1");
shouldBeEqualToString("greatGrandChildEntries[0].name", "file5.txt");
shouldBeEqualToString("greatGrandChildEntries[0].fullPath", "/testFiles/subfolder2/subfolder2a/file5.txt");
shouldBeTrue("greatGrandChildEntries[0].isFile");
finishJSTest();
}, function(e) {
testFailed("readEntries failed: " + e);
finishJSTest();
});
}, function(e) {
testFailed("readEntries failed: " + e);
finishJSTest();
});
}, function(e) {
testFailed("readEntries failed: " + e);
finishJSTest();
});
}, function(e) {
testFailed("readEntries failed: " + e);
finishJSTest();
});
};
dropzone.ondragover = function(ev) {
ev.preventDefault();
}
onload = function() {
dragFilesOntoElement(dropzone, ['../../../fast/forms/file/entries-api/resources/testFiles']);
}
</script>
</body>
</html>