| description("This test exercises various uses of IDBObjectStore.delete()"); |
| |
| indexedDBTest(prepareDatabase); |
| |
| |
| function log(message) |
| { |
| debug(message); |
| } |
| |
| function logCount() |
| { |
| var req = objectStore.count(); |
| req.onsuccess = function() { |
| debug("Count is " + req.result); |
| } |
| } |
| |
| function done() |
| { |
| finishJSTest(); |
| } |
| |
| var database; |
| var objectStore; |
| |
| var date1 = new Date("1999-12-28T23:00:00Z"); |
| var date2 = new Date("1999-12-29T23:00:00Z"); |
| var date3 = new Date("1999-12-30T23:00:00Z"); |
| var date4 = new Date("1999-12-31T23:00:00Z"); |
| var date5 = new Date("2000-01-01T00:00:00Z"); |
| var date6 = new Date("2000-01-02T00:00:00Z"); |
| var date7 = new Date("2000-01-03T00:00:00Z"); |
| var date8 = new Date("2000-01-04T00:00:00Z"); |
| |
| function prepareDatabase(event) |
| { |
| debug("Initial upgrade needed: Old version - " + event.oldVersion + " New version - " + event.newVersion); |
| |
| var versionTransaction = event.target.transaction; |
| database = event.target.result; |
| objectStore = database.createObjectStore("TestObjectStore"); |
| |
| // Just for the heck of it. |
| objectStore.delete("foo"); |
| objectStore.put("boo", "foo"); |
| objectStore.delete("foo"); |
| |
| objectStore.put("boo", "foo"); |
| objectStore.put("bop", "fop"); |
| objectStore.put("boq", "foq"); |
| objectStore.put("bor", "for"); |
| objectStore.put("bos", "fos"); |
| |
| for (var i = 0; i < 100; ++i) |
| objectStore.put("number " + i, i); |
| |
| objectStore.put("date 1", date1); |
| objectStore.put("date 2", date2); |
| objectStore.put("date 3", date3); |
| objectStore.put("date 4", date4); |
| objectStore.put("date 5", date5); |
| objectStore.put("date 6", date6); |
| objectStore.put("date 7", date7); |
| objectStore.put("date 8", date8); |
| |
| logCount(); |
| |
| versionTransaction.onabort = function(event) { |
| debug("Initial upgrade versionchange transaction unexpected abort"); |
| done(); |
| } |
| |
| versionTransaction.oncomplete = function(event) { |
| debug("Initial upgrade versionchange transaction complete"); |
| continueTest1(); |
| } |
| |
| versionTransaction.onerror = function(event) { |
| debug("Initial upgrade versionchange transaction unexpected error" + event); |
| done(); |
| } |
| } |
| |
| function continueTest1() |
| { |
| var transaction = database.transaction("TestObjectStore", "readwrite"); |
| objectStore = transaction.objectStore("TestObjectStore"); |
| |
| // The pairs of things in the array are the things to delete followed by the expected decrease in the total count of objects. |
| var thingsToDelete = [ |
| date8, 1, |
| date8, 0, |
| "balyhoo", 0, |
| IDBKeyRange.bound(date6, date7, true, true), 0, |
| IDBKeyRange.bound(date6, date7, true), 1, |
| IDBKeyRange.bound(date5, date6, false, true), 1, |
| IDBKeyRange.bound(date1, date6), 5, |
| IDBKeyRange.bound(1, 98), 98, |
| IDBKeyRange.bound("foo", "fos", true, true), 3 |
| ]; |
| var currentThing = 0; |
| |
| var runDeleteTests = function() |
| { |
| if (!thingsToDelete[currentThing]) |
| return; |
| |
| objectStore.delete(thingsToDelete[currentThing]).onsuccess = function() { |
| debug("Deleted \"" + thingsToDelete[currentThing] + "\", and there should now be " + thingsToDelete[currentThing + 1] + " less things total."); |
| logCount(); |
| currentThing += 2; |
| runDeleteTests(); |
| } |
| } |
| runDeleteTests(); |
| |
| transaction.onabort = function(event) { |
| debug("readwrite transaction unexpected abort" + event); |
| done(); |
| } |
| |
| transaction.oncomplete = function(event) { |
| debug("readwrite transaction complete"); |
| done(); |
| } |
| |
| transaction.onerror = function(event) { |
| debug("readwrite transaction unexpected error" + event); |
| done(); |
| } |
| } |
| |
| |