blob: f163b6de87b86183f2dce32d8fc7ff13b3e9db26 [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("Test that hidden files are not exposed via Entries API");
jsTestIsAsync = true;
function getFileAsPromise(dirEntry, path)
{
return new Promise((resolve, reject) => {
dirEntry.getFile(path, {}, resolve, reject);
});
}
function getDirectoryAsPromise(dirEntry, path)
{
return new Promise((resolve, reject) => {
dirEntry.getDirectory(path, {}, resolve, reject);
});
}
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();
});
}
function readEntriesTest()
{
shouldBeEqualToString("directoryEntry.name", "testFiles");
shouldBeEqualToString("directoryEntry.fullPath", "/testFiles");
shouldBeTrue("directoryEntry.isDirectory");
return getEntriesAsPromise(directoryEntry).then(entries => {
foundEntries = entries;
shouldBe("foundEntries.length", "4");
for (let entry of entries) {
if (entry.name.startsWith(".hidden")) {
testFailed("Hidden file was returned by directoryEntry");
break;
}
}
}, e => {
testFailed("Call to readEntries() failed unexpectedly: " + e);
finishJSTest();
});
}
function getFileTest()
{
return getFileAsPromise(directoryEntry, ".hidden.txt").then(fileEntry => {
testFailed("Hidden file was returned by getFile()");
finishJSTest();
}, e => {
ex = e;
shouldBeEqualToString("ex.name", "NotFoundError");
});
}
function getDirectoryTest()
{
return getDirectoryAsPromise(directoryEntry, ".hidden").then(fileEntry => {
testFailed("Hidden directory was returned by getDirectory()");
finishJSTest();
}, e => {
ex = e;
shouldBeEqualToString("ex.name", "NotFoundError");
});
}
var dropzone = document.getElementById('dropzone');
dropzone.ondrop = function(e) {
e.preventDefault();
dataTransfer = e.dataTransfer;
shouldBe("dataTransfer.items.length", "1");
directoryEntry = dataTransfer.items[0].webkitGetAsEntry();
readEntriesTest().then(getFileTest).then(getDirectoryTest).then(finishJSTest);
};
dropzone.ondragover = function(ev) {
ev.preventDefault();
}
onload = function() {
dragFilesOntoElement(dropzone, ['../../../fast/forms/file/entries-api/resources/testFiles']);
}
</script>
</body>
</html>