test_blob_file_backed.js (2062B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 6 /* exported testGenerator, disableWorkerTest */ 7 var disableWorkerTest = "This test uses SpecialPowers"; 8 9 var testGenerator = testSteps(); 10 11 function* testSteps() { 12 const fileData = "abcdefghijklmnopqrstuvwxyz"; 13 const fileType = "text/plain"; 14 15 const databaseName = "window" in this ? window.location.pathname : "Test"; 16 const objectStoreName = "foo"; 17 const objectStoreKey = "10"; 18 19 info("Creating temp file"); 20 21 SpecialPowers.createFiles( 22 [{ data: fileData, options: { type: fileType } }], 23 function (files) { 24 testGenerator.next(files[0]); 25 } 26 ); 27 28 let file = yield undefined; 29 30 ok(file instanceof File, "Got a File object"); 31 is(file.size, fileData.length, "Correct size"); 32 is(file.type, fileType, "Correct type"); 33 34 let fileReader = new FileReader(); 35 fileReader.onload = grabEventAndContinueHandler; 36 fileReader.readAsText(file); 37 38 let event = yield undefined; 39 40 is(fileReader.result, fileData, "Correct data"); 41 42 let request = indexedDB.open(databaseName, 1); 43 request.onerror = errorHandler; 44 request.onupgradeneeded = grabEventAndContinueHandler; 45 request.onsuccess = grabEventAndContinueHandler; 46 47 event = yield undefined; 48 49 let db = event.target.result; 50 let objectStore = db.createObjectStore(objectStoreName); 51 objectStore.put(file, objectStoreKey); 52 53 event = yield undefined; 54 55 db = event.target.result; 56 57 file = null; 58 59 objectStore = db.transaction(objectStoreName).objectStore(objectStoreName); 60 objectStore.get(objectStoreKey).onsuccess = grabEventAndContinueHandler; 61 62 event = yield undefined; 63 64 file = event.target.result; 65 66 ok(file instanceof File, "Got a File object"); 67 is(file.size, fileData.length, "Correct size"); 68 is(file.type, fileType, "Correct type"); 69 70 fileReader = new FileReader(); 71 fileReader.onload = grabEventAndContinueHandler; 72 fileReader.readAsText(file); 73 74 event = yield undefined; 75 76 is(fileReader.result, fileData, "Correct data"); 77 78 finishTest(); 79 }