| Index: LayoutTests/storage/indexeddb/empty-filesystem-file.html
|
| diff --git a/LayoutTests/storage/indexeddb/empty-filesystem-file.html b/LayoutTests/storage/indexeddb/empty-filesystem-file.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a3aa6850a52ef7e8eff31e06c958dd3201cdba4a
|
| --- /dev/null
|
| +++ b/LayoutTests/storage/indexeddb/empty-filesystem-file.html
|
| @@ -0,0 +1,90 @@
|
| +<!DOCTYPE html>
|
| +<script src="../../resources/js-test.js"></script>
|
| +<script src="resources/shared.js"></script>
|
| +<script>
|
| +
|
| +description("Confirm that IndexedDB can store an empty File from the Filesystem API");
|
| +
|
| +function prepareDatabase()
|
| +{
|
| + db = event.target.result;
|
| + var trans = event.target.transaction;
|
| + evalAndLog("store = db.createObjectStore('storeName')");
|
| + evalAndLog("store.put('value', 'key')");
|
| + trans.onerror = unexpectedErrorCallback;
|
| + trans.onabort = unexpectedAbortCallback;
|
| +}
|
| +
|
| +var fileValidation = ".size == 0";
|
| +function testEmptyFilesystemFile()
|
| +{
|
| + preamble();
|
| + evalAndLog("file = window.emptyFile");
|
| + validateResult("file", fileValidation, cleanupFs);
|
| +}
|
| +
|
| +function validateResult(variable, validation, onSuccess)
|
| +{
|
| + var keyName = variable + "key";
|
| + debug("");
|
| + debug("validateResult(" + variable + "):");
|
| + shouldBeTrue(variable + validation);
|
| + evalAndLog("transaction = db.transaction('storeName', 'readwrite')");
|
| + evalAndLog("store = transaction.objectStore('storeName')");
|
| + evalAndLog("store.put(" + variable + ", '" + keyName + "')");
|
| + transaction.onerror = unexpectedErrorCallback;
|
| + transaction.onabort = unexpectedAbortCallback;
|
| + var onGetSuccess = function (e) {
|
| + shouldBeTrue("event.target.result" + validation);
|
| + onSuccess();
|
| + }
|
| + transaction.oncomplete = function () {
|
| + doRead(keyName, onGetSuccess);
|
| + }
|
| +}
|
| +
|
| +function doRead(keyName, onSuccess)
|
| +{
|
| + evalAndLog("transaction = db.transaction('storeName', 'readwrite')");
|
| + evalAndLog("store = transaction.objectStore('storeName')");
|
| + evalAndLog("request = store.get('" + keyName + "')");
|
| + request.onsuccess = onSuccess;
|
| + transaction.onerror = unexpectedErrorCallback;
|
| + transaction.onabort = unexpectedAbortCallback;
|
| +}
|
| +
|
| +function fsError(error)
|
| +{
|
| + debug("Filesystem error:" + error.name);
|
| + cleanupFs();
|
| +}
|
| +function fsCreated(fs)
|
| +{
|
| + debug("Got FileSystem:" + fs.name);
|
| + window.fileSystem = fs;
|
| +
|
| + fs.root.getFile("empty.txt", {create: true}, function(entry) {
|
| + entry.file(function(file) {
|
| + window.emptyFile = file;
|
| + indexedDBTest(prepareDatabase, testEmptyFilesystemFile);
|
| + });
|
| + }, fsError);
|
| +}
|
| +
|
| +if (window.webkitRequestFileSystem)
|
| + window.webkitRequestFileSystem(TEMPORARY, 100, fsCreated, fsError);
|
| +else
|
| + alert("This test requires the FileSystem API");
|
| +
|
| +function cleanupFs()
|
| +{
|
| + if (window.fileSystem) {
|
| + var fs = window.fileSystem;
|
| + // cleanupFs shouldn't get called again if an error occurs below.
|
| + window.fileSystem = null;
|
| + fs.root.getFile("empty.txt", {create: false}, function (entry) {
|
| + entry.remove(finishJSTest, fsError);
|
| + }, fsError);
|
| + }
|
| +}
|
| +</script>
|
|
|