зеркало из https://github.com/mozilla/gecko-dev.git
449 строки
12 KiB
HTML
449 строки
12 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Test for Blink FileSystem API - subset</title>
|
|
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
</head>
|
|
|
|
<body>
|
|
<input id="entries" type="file"></input>
|
|
<script type="application/javascript;version=1.7">
|
|
|
|
var fileEntry;
|
|
var directoryEntry;
|
|
var script;
|
|
|
|
function setup_tests() {
|
|
SpecialPowers.pushPrefEnv({"set": [["dom.webkitBlink.dirPicker.enabled", true],
|
|
["dom.webkitBlink.filesystem.enabled", true]]}, next);
|
|
}
|
|
|
|
function populate_entries() {
|
|
var url = SimpleTest.getTestFileURL("script_entries.js");
|
|
script = SpecialPowers.loadChromeScript(url);
|
|
|
|
function onOpened(message) {
|
|
var entries = document.getElementById('entries');
|
|
SpecialPowers.wrap(entries).mozSetDndFilesAndDirectories(message.data);
|
|
next();
|
|
}
|
|
|
|
script.addMessageListener("entries.opened", onOpened);
|
|
script.sendAsyncMessage("entries.open");
|
|
}
|
|
|
|
function test_entries() {
|
|
var entries = document.getElementById('entries');
|
|
ok("webkitEntries" in entries, "HTMLInputElement.webkitEntries");
|
|
is(entries.webkitEntries.length, 2, "HTMLInputElement.webkitEntries.length == 2");
|
|
is(entries.files.length, 1, "HTMLInputElement.files is still populated");
|
|
|
|
for (var i = 0; i < entries.webkitEntries.length; ++i) {
|
|
if (entries.webkitEntries[i].isFile) {
|
|
ok(!fileEntry, "We just want 1 fileEntry");
|
|
fileEntry = entries.webkitEntries[i];
|
|
} else {
|
|
ok(entries.webkitEntries[i].isDirectory, "If not a file, we have a directory.");
|
|
ok(!directoryEntry, "We just want 1 directoryEntry");
|
|
directoryEntry = entries.webkitEntries[i];
|
|
}
|
|
}
|
|
|
|
next();
|
|
}
|
|
|
|
function test_fileEntry() {
|
|
ok("name" in fileEntry, "We have a name.");
|
|
ok("fullPath" in fileEntry, "We have a fullPath.");
|
|
ok("filesystem" in fileEntry, "We have a filesystem.");
|
|
|
|
next();
|
|
}
|
|
|
|
function test_fileEntry_file() {
|
|
fileEntry.file(function(file) {
|
|
ok(file, "We have a file here!");
|
|
is(file.name, fileEntry.name, "Same file name.");
|
|
next();
|
|
}, function() {
|
|
ok(false, "Something when wrong!");
|
|
});
|
|
}
|
|
|
|
function test_fileEntry_createWriter() {
|
|
fileEntry.createWriter(function(file) {
|
|
ok(false, "Something when wrong!");
|
|
}, function() {
|
|
ok(true, "We don't support createWrite");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_directoryEntry() {
|
|
ok("name" in directoryEntry, "We have a name.");
|
|
ok("fullPath" in directoryEntry, "We have a fullPath.");
|
|
ok("filesystem" in directoryEntry, "We have a filesystem.");
|
|
|
|
next();
|
|
}
|
|
|
|
function test_directoryEntry_createReader() {
|
|
var reader = directoryEntry.createReader();
|
|
ok(reader, "We have a DirectoryReader");
|
|
|
|
reader.readEntries(function(a) {
|
|
ok(Array.isArray(a), "We want an array.");
|
|
is(a.length, 2, "reader.readyEntries returns 2 elements.");
|
|
|
|
for (var i = 0; i < 2; ++i) {
|
|
ok(a[i].name == "subdir" || a[i].name == "foo.txt", "Correct names");
|
|
is(a[i].fullPath, directoryEntry.fullPath + "/" + a[i].name, "FullPath is correct");
|
|
}
|
|
|
|
// Called twice:
|
|
reader.readEntries(function(a) {
|
|
ok(Array.isArray(a), "We want an array.");
|
|
is(a.length, 0, "reader.readyEntries returns 0 elements.");
|
|
next();
|
|
}, function() {
|
|
ok(false, "Something when wrong!");
|
|
});
|
|
|
|
}, function() {
|
|
ok(false, "Something when wrong!");
|
|
});
|
|
}
|
|
|
|
function test_directoryEntry_getFile_securityError() {
|
|
directoryEntry.getFile("foo", { create: true },
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "SecurityError", "This must generate a SecurityError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_directoryEntry_getFile_typeMismatchError() {
|
|
directoryEntry.getFile("subdir", {},
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "TypeMismatchError", "This must generate a TypeMismatchError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_directoryEntry_getFile_nonValidPath() {
|
|
directoryEntry.getFile("../../", {},
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "NotFoundError", "This must generate a NotFoundError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_directoryEntry_getFile_nonExistingPath() {
|
|
directoryEntry.getFile("foo_bar.txt", {},
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "NotFoundError", "This must generate a NotFoundError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_directoryEntry_getFile_simple() {
|
|
directoryEntry.getFile("foo.txt", {},
|
|
function(e) {
|
|
is(e.name, "foo.txt", "We have the right FileEntry.");
|
|
next();
|
|
}, function(e) {
|
|
ok(false, "This should not happen.");
|
|
});
|
|
}
|
|
|
|
function test_directoryEntry_getFile_deep() {
|
|
directoryEntry.getFile("subdir/bar.txt", {},
|
|
function(e) {
|
|
is(e.name, "bar.txt", "We have the right FileEntry.");
|
|
next();
|
|
}, function(e) {
|
|
ok(false, "This should not happen.");
|
|
});
|
|
}
|
|
|
|
function test_directoryEntry_getDirectory_securityError() {
|
|
directoryEntry.getDirectory("foo", { create: true },
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "SecurityError", "This must generate a SecurityError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_directoryEntry_getDirectory_typeMismatchError() {
|
|
directoryEntry.getDirectory("foo.txt", {},
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "TypeMismatchError", "This must generate a TypeMismatchError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_directoryEntry_getDirectory_nonValidPath() {
|
|
directoryEntry.getDirectory("../../", {},
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "NotFoundError", "This must generate a NotFoundError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_directoryEntry_getDirectory_nonExistingPath() {
|
|
directoryEntry.getDirectory("non_existing_dir", {},
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "NotFoundError", "This must generate a NotFoundError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_directoryEntry_getDirectory_simple() {
|
|
directoryEntry.getDirectory("subdir", {},
|
|
function(e) {
|
|
is(e.name, "subdir", "We have the right DirectoryEntry.");
|
|
next();
|
|
}, function(e) {
|
|
ok(false, "This should not happen.");
|
|
});
|
|
}
|
|
|
|
function test_directoryEntry_getDirectory_deep() {
|
|
directoryEntry.getDirectory("subdir/subsubdir", {},
|
|
function(e) {
|
|
is(e.name, "subsubdir", "We have the right DirectoryEntry.");
|
|
next();
|
|
}, function(e) {
|
|
ok(false, "This should not happen.");
|
|
});
|
|
}
|
|
|
|
function test_filesystem() {
|
|
is(fileEntry.filesystem, directoryEntry.filesystem, "FileSystem object is shared.");
|
|
|
|
var fs = fileEntry.filesystem;
|
|
ok(fs.name, "FileSystem.name exists.");
|
|
ok(fs.root, "FileSystem has a root.");
|
|
|
|
is(fs.root.name, "", "FileSystem.root.name must be an empty string.");
|
|
is(fs.root.fullPath, "/", "FileSystem.root.fullPath must be '/'");
|
|
|
|
reader = fs.root.createReader();
|
|
reader.readEntries(function(a) {
|
|
ok(Array.isArray(a), "We want an array.");
|
|
is(a.length, 2, "reader.readyEntries returns 2 elements.");
|
|
next();
|
|
}, function() {
|
|
ok(false, "Something when wrong!");
|
|
});
|
|
}
|
|
|
|
function test_root_getFile_securityError() {
|
|
fileEntry.filesystem.root.getFile("foo", { create: true },
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "SecurityError", "This must generate a SecurityError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_root_getFile_typeMismatchError() {
|
|
fileEntry.filesystem.root.getFile(directoryEntry.name, {},
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "TypeMismatchError", "This must generate a TypeMismatchError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_root_getFile_nonValidPath() {
|
|
fileEntry.filesystem.root.getFile("../../", {},
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "NotFoundError", "This must generate a NotFoundError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_root_getFile_nonExistingPath() {
|
|
fileEntry.filesystem.root.getFile("existing.txt", {},
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "NotFoundError", "This must generate a NotFoundError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_root_getFile_simple() {
|
|
fileEntry.filesystem.root.getFile(fileEntry.name, {},
|
|
function(e) {
|
|
is(e.name, fileEntry.name, "We have the right FileEntry.");
|
|
next();
|
|
}, function(e) {
|
|
ok(false, "This should not happen.");
|
|
});
|
|
}
|
|
|
|
function test_root_getFile_deep() {
|
|
fileEntry.filesystem.root.getFile(directoryEntry.name + "/subdir/bar.txt", {},
|
|
function(e) {
|
|
is(e.name, "bar.txt", "We have the right FileEntry.");
|
|
next();
|
|
}, function(e) {
|
|
ok(false, "This should not happen.");
|
|
});
|
|
}
|
|
|
|
function test_root_getDirectory_securityError() {
|
|
fileEntry.filesystem.root.getDirectory("foo", { create: true },
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "SecurityError", "This must generate a SecurityError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_root_getDirectory_typeMismatchError() {
|
|
fileEntry.filesystem.root.getDirectory(fileEntry.name, {},
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "TypeMismatchError", "This must generate a TypeMismatchError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_root_getDirectory_nonValidPath() {
|
|
fileEntry.filesystem.root.getDirectory("../../", {},
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "NotFoundError", "This must generate a NotFoundError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_root_getDirectory_nonExistingPath() {
|
|
fileEntry.filesystem.root.getDirectory("404", {},
|
|
function() {
|
|
ok(false, "This should not happen.");
|
|
}, function(e) {
|
|
is(e.name, "NotFoundError", "This must generate a NotFoundError.");
|
|
next();
|
|
});
|
|
}
|
|
|
|
function test_root_getDirectory_simple() {
|
|
fileEntry.filesystem.root.getDirectory(directoryEntry.name, {},
|
|
function(e) {
|
|
is(e.name, directoryEntry.name, "We have the right DirectoryEntry.");
|
|
next();
|
|
}, function(e) {
|
|
ok(false, "This should not happen.");
|
|
});
|
|
}
|
|
|
|
function test_root_getDirectory_deep() {
|
|
fileEntry.filesystem.root.getDirectory(directoryEntry.name + "/subdir/subsubdir", {},
|
|
function(e) {
|
|
is(e.name, "subsubdir", "We have the right DirectoryEntry.");
|
|
next();
|
|
}, function(e) {
|
|
ok(false, "This should not happen.");
|
|
});
|
|
}
|
|
|
|
function cleanUpTestingFiles() {
|
|
script.addMessageListener("entries.deleted", function onDeleted() {
|
|
script.removeMessageListener("entries.deleted");
|
|
script.destroy();
|
|
next();
|
|
});
|
|
|
|
script.sendAsyncMessage("entries.delete");
|
|
}
|
|
|
|
var tests = [
|
|
setup_tests,
|
|
populate_entries,
|
|
|
|
test_entries,
|
|
|
|
test_fileEntry,
|
|
test_fileEntry_file,
|
|
test_fileEntry_createWriter,
|
|
|
|
test_directoryEntry,
|
|
test_directoryEntry_createReader,
|
|
|
|
test_directoryEntry_getFile_securityError,
|
|
test_directoryEntry_getFile_typeMismatchError,
|
|
test_directoryEntry_getFile_nonValidPath,
|
|
test_directoryEntry_getFile_nonExistingPath,
|
|
test_directoryEntry_getFile_simple,
|
|
test_directoryEntry_getFile_deep,
|
|
|
|
test_directoryEntry_getDirectory_securityError,
|
|
test_directoryEntry_getDirectory_typeMismatchError,
|
|
test_directoryEntry_getDirectory_nonValidPath,
|
|
test_directoryEntry_getDirectory_nonExistingPath,
|
|
test_directoryEntry_getDirectory_simple,
|
|
test_directoryEntry_getDirectory_deep,
|
|
|
|
test_filesystem,
|
|
|
|
test_root_getFile_securityError,
|
|
test_root_getFile_typeMismatchError,
|
|
test_root_getFile_nonValidPath,
|
|
test_root_getFile_nonExistingPath,
|
|
test_root_getFile_simple,
|
|
test_root_getFile_deep,
|
|
|
|
test_root_getDirectory_securityError,
|
|
test_root_getDirectory_typeMismatchError,
|
|
test_root_getDirectory_nonValidPath,
|
|
test_root_getDirectory_nonExistingPath,
|
|
test_root_getDirectory_simple,
|
|
test_root_getDirectory_deep,
|
|
|
|
cleanUpTestingFiles,
|
|
];
|
|
|
|
function next() {
|
|
if (!tests.length) {
|
|
SimpleTest.finish();
|
|
return;
|
|
}
|
|
|
|
var test = tests.shift();
|
|
test();
|
|
}
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
next();
|
|
</script>
|
|
</body>
|
|
</html>
|