test_invalidate.js (2319B)
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 databaseName = "window" in this ? window.location.pathname : "Test"; 11 12 let dbCount = 0; 13 14 // Test invalidating during a versionchange transaction. 15 info("Opening database " + ++dbCount); 16 17 let request = indexedDB.open(databaseName, dbCount); 18 request.onerror = errorHandler; 19 request.onupgradeneeded = grabEventAndContinueHandler; 20 request.onsuccess = unexpectedSuccessHandler; 21 let event = yield undefined; 22 23 is(event.type, "upgradeneeded", "Upgrading database " + dbCount); 24 25 request.onupgradeneeded = unexpectedSuccessHandler; 26 27 let objStore = request.result.createObjectStore("foo", { 28 autoIncrement: true, 29 }); 30 objStore.createIndex("fooIndex", "fooIndex", { unique: true }); 31 objStore.put({ foo: 1 }); 32 objStore.get(1); 33 objStore.count(); 34 objStore.openCursor(); 35 objStore.delete(1); 36 37 info("Invalidating database " + dbCount); 38 39 clearAllDatabases(continueToNextStepSync); 40 41 objStore = request.result.createObjectStore("bar"); 42 objStore.createIndex("barIndex", "barIndex", { multiEntry: true }); 43 objStore.put({ bar: 1, barIndex: [0, 1] }, 10); 44 objStore.get(10); 45 objStore.count(); 46 objStore.openCursor(); 47 objStore.delete(10); 48 49 yield undefined; 50 51 executeSoon(continueToNextStepSync); 52 yield undefined; 53 54 // Test invalidating after the complete event of a versionchange transaction. 55 info("Opening database " + ++dbCount); 56 57 request = indexedDB.open(databaseName, dbCount); 58 request.onerror = errorHandler; 59 request.onupgradeneeded = grabEventAndContinueHandler; 60 request.onsuccess = unexpectedSuccessHandler; 61 event = yield undefined; 62 63 is(event.type, "upgradeneeded", "Upgrading database " + dbCount); 64 65 request.onupgradeneeded = unexpectedSuccessHandler; 66 67 request.transaction.oncomplete = grabEventAndContinueHandler; 68 event = yield undefined; 69 70 is( 71 event.type, 72 "complete", 73 "Got complete event for versionchange transaction on database " + dbCount 74 ); 75 76 info("Invalidating database " + dbCount); 77 78 clearAllDatabases(continueToNextStepSync); 79 yield undefined; 80 81 executeSoon(continueToNextStepSync); 82 83 finishTest(); 84 yield undefined; 85 }