| description("This test creates an object store then populates it, then commits that transaction. \ |
| It then clears it, but aborts that transaction. \ |
| Finally it checks to make sure everything from step 1 is still in there."); |
| |
| indexedDBTest(prepareDatabase); |
| |
| |
| function done() |
| { |
| finishJSTest(); |
| } |
| |
| var dbname; |
| function prepareDatabase(event) |
| { |
| debug("Initial upgrade needed: Old version - " + event.oldVersion + " New version - " + event.newVersion); |
| |
| event.target.onerror = null; |
| |
| var versionTransaction = event.target.transaction; |
| var database = event.target.result; |
| dbname = database.name; |
| var objectStore = database.createObjectStore("TestObjectStore", { autoIncrement: true }); |
| var request = objectStore.put("bar1"); |
| var request = objectStore.put("bar2"); |
| var request = objectStore.put("bar3"); |
| var request = objectStore.put("bar4"); |
| var request = objectStore.put("bar5"); |
| var request = objectStore.put("bar6"); |
| var request = objectStore.put("bar7"); |
| var request = objectStore.put("bar8"); |
| var request = objectStore.put("bar9"); |
| |
| versionTransaction.onabort = function(event) { |
| debug("Initial upgrade versionchange transaction unexpected aborted"); |
| done(); |
| } |
| |
| versionTransaction.oncomplete = function(event) { |
| debug("Initial upgrade versionchange transaction complete"); |
| continueTest1(); |
| database.close(); |
| } |
| |
| versionTransaction.onerror = function(event) { |
| debug("Initial upgrade versionchange transaction unexpected error" + event); |
| done(); |
| } |
| } |
| |
| function getChecker(event) { |
| debug("Value gotten was " + event.target.result); |
| } |
| |
| function continueTest1() |
| { |
| var openRequest = window.indexedDB.open(dbname, 1); |
| |
| openRequest.onerror = function(event) { |
| debug("Request unexpected error - " + event); |
| done(); |
| } |
| openRequest.onblocked = function(event) { |
| debug("Request unexpected blocked - " + event); |
| done(); |
| } |
| openRequest.onupgradeneeded = function(event) { |
| debug("Request unexpected upgradeneeded - " + event); |
| done(); |
| } |
| |
| openRequest.onsuccess = function(event) { |
| debug("Success opening database connection - Starting readwrite transaction"); |
| var database = event.target.result; |
| var transaction = database.transaction("TestObjectStore", "readwrite"); |
| var objectStore = transaction.objectStore("TestObjectStore"); |
| |
| var request; |
| for (var i = 1; i <= 9; ++i) { |
| request = objectStore.get(i); |
| request.onsuccess = getChecker; |
| } |
| |
| request = objectStore.clear(); |
| request.onsuccess = function() { |
| debug("Object store cleared, making sure its all gone."); |
| var newRequests; |
| for (var i = 1; i <= 9; ++i) { |
| newRequests = objectStore.get(i); |
| newRequests.onsuccess = getChecker; |
| } |
| |
| // We'll be on the last request here, can just override it. |
| newRequests.onsuccess = function(event) { |
| getChecker(event); |
| transaction.abort(); |
| } |
| } |
| |
| // Just for fun clear it twice, won't change anything |
| objectStore.clear(); |
| |
| transaction.onabort = function(event) { |
| debug("Readwrite transaction abort"); |
| continueTest2(); |
| } |
| |
| transaction.oncomplete = function(event) { |
| debug("Readwrite transaction unexpected complete"); |
| done(); |
| } |
| |
| transaction.onerror = function(event) { |
| debug("Readwrite transaction unexpected error - " + event); |
| done(); |
| } |
| } |
| } |
| |
| function continueTest2() |
| { |
| var openRequest = window.indexedDB.open(dbname, 1); |
| |
| openRequest.onerror = function(event) { |
| debug("Request unexpected error - " + event); |
| done(); |
| } |
| openRequest.onblocked = function(event) { |
| debug("Request unexpected blocked - " + event); |
| done(); |
| } |
| openRequest.onupgradeneeded = function(event) { |
| debug("Request unexpected upgradeneeded - " + event); |
| done(); |
| } |
| |
| openRequest.onsuccess = function(event) { |
| debug("Success opening database connection - Starting final transaction"); |
| var database = event.target.result; |
| var transaction = database.transaction("TestObjectStore", "readwrite"); |
| var objectStore = transaction.objectStore("TestObjectStore"); |
| |
| var request; |
| for (var i = 1; i <= 9; ++i) { |
| request = objectStore.get(i); |
| request.onsuccess = getChecker; |
| } |
| |
| transaction.onabort = function(event) { |
| debug("Readwrite transaction unexpected abort"); |
| done(); |
| } |
| |
| transaction.oncomplete = function(event) { |
| debug("Readwrite transaction complete"); |
| done(); |
| } |
| |
| transaction.onerror = function(event) { |
| debug("Readwrite transaction unexpected error - " + event); |
| done(); |
| } |
| } |
| } |