test_mutableFileUpgrade.js (3217B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 6 /* exported testGenerator */ 7 var testGenerator = testSteps(); 8 9 function* testSteps() { 10 const dbNames = ["No files", "Blobs and mutable files"]; 11 const version = 1; 12 const objectStoreName = "test"; 13 14 clearAllDatabases(continueToNextStepSync); 15 yield undefined; 16 17 installPackagedProfile("mutableFileUpgrade_profile"); 18 19 let request = indexedDB.open(dbNames[0], version); 20 request.onerror = errorHandler; 21 request.onupgradeneeded = unexpectedSuccessHandler; 22 request.onsuccess = grabEventAndContinueHandler; 23 let event = yield undefined; 24 25 is(event.type, "success", "Correct event type"); 26 27 let db = event.target.result; 28 db.onerror = errorHandler; 29 30 request = db 31 .transaction([objectStoreName]) 32 .objectStore(objectStoreName) 33 .get(1); 34 request.onsuccess = grabEventAndContinueHandler; 35 event = yield undefined; 36 37 is(event.target.result, "text", "Correct result"); 38 39 request = indexedDB.open(dbNames[1], version); 40 request.onerror = errorHandler; 41 request.onupgradeneeded = unexpectedSuccessHandler; 42 request.onsuccess = grabEventAndContinueHandler; 43 event = yield undefined; 44 45 is(event.type, "success", "Correct event type"); 46 47 db = event.target.result; 48 db.onerror = errorHandler; 49 50 request = db 51 .transaction([objectStoreName]) 52 .objectStore(objectStoreName) 53 .get(1); 54 request.onsuccess = grabEventAndContinueHandler; 55 event = yield undefined; 56 57 is(event.target.result, "text", "Correct result"); 58 59 request = db 60 .transaction([objectStoreName]) 61 .objectStore(objectStoreName) 62 .get(2); 63 request.onsuccess = grabEventAndContinueHandler; 64 event = yield undefined; 65 66 verifyBlob(event.target.result, getBlob("blob0")); 67 yield undefined; 68 69 request = db 70 .transaction([objectStoreName]) 71 .objectStore(objectStoreName) 72 .get(3); 73 request.onsuccess = grabEventAndContinueHandler; 74 event = yield undefined; 75 76 let result = event.target.result; 77 78 verifyBlob(result[0], getBlob("blob1")); 79 yield undefined; 80 81 verifyBlob(result[1], getBlob("blob2")); 82 yield undefined; 83 84 request = db 85 .transaction([objectStoreName]) 86 .objectStore(objectStoreName) 87 .get(4); 88 request.onsuccess = grabEventAndContinueHandler; 89 event = yield undefined; 90 91 try { 92 event.target.result; 93 ok(false, "IDBMutableFile must not be read"); 94 } catch (err) { 95 is(err.name, "InvalidStateError", "Wrong error type"); 96 } 97 98 request = db 99 .transaction([objectStoreName]) 100 .objectStore(objectStoreName) 101 .get(5); 102 request.onsuccess = grabEventAndContinueHandler; 103 event = yield undefined; 104 105 try { 106 event.target.result; 107 ok(false, "IDBMutableFile must not be read"); 108 } catch (err) { 109 is(err.name, "InvalidStateError", "Wrong error type"); 110 } 111 112 request = db 113 .transaction([objectStoreName]) 114 .objectStore(objectStoreName) 115 .get(6); 116 request.onsuccess = grabEventAndContinueHandler; 117 event = yield undefined; 118 119 try { 120 event.target.result; 121 ok(false, "IDBMutableFile must not be read"); 122 } catch (err) { 123 is(err.name, "InvalidStateError", "Wrong error type"); 124 } 125 126 finishTest(); 127 yield undefined; 128 }