1This test exercises various uses of IDBObjectStore.delete()<br>
2<div id="logger"></div>
3<script>
4
5if (window.testRunner) {
6 testRunner.waitUntilDone();
7 testRunner.dumpAsText();
8}
9
10function log(message)
11{
12 document.getElementById("logger").innerHTML += message + "<br>";
13}
14
15function logCount()
16{
17 var req = objectStore.count();
18 req.onsuccess = function() {
19 log("Count is " + req.result);
20 }
21}
22
23function done()
24{
25 log("Done");
26 if (window.testRunner)
27 testRunner.notifyDone();
28}
29
30var createRequest = window.indexedDB.open("IDBObjectStoreDelete1Database", 1);
31var database;
32var objectStore;
33
34var date1 = new Date("1999-12-28T23:00:00");
35var date2 = new Date("1999-12-29T23:00:00");
36var date3 = new Date("1999-12-30T23:00:00");
37var date4 = new Date("1999-12-31T23:00:00");
38var date5 = new Date("2000-01-01T00:00:00");
39var date6 = new Date("2000-01-02T00:00:00");
40var date7 = new Date("2000-01-03T00:00:00");
41var date8 = new Date("2000-01-04T00:00:00");
42
43createRequest.onupgradeneeded = function(event) {
44 log("Initial upgrade needed: Old version - " + event.oldVersion + " New version - " + event.newVersion);
45
46 var versionTransaction = createRequest.transaction;
47 database = event.target.result;
48 objectStore = database.createObjectStore("TestObjectStore");
49
50 objectStore.put("boo", "foo");
51 objectStore.put("bop", "fop");
52 objectStore.put("boq", "foq");
53 objectStore.put("bor", "for");
54 objectStore.put("bos", "fos");
55
56 for (var i = 0; i < 100; ++i)
57 objectStore.put("number " + i, i);
58
59 objectStore.put("date 1", date1);
60 objectStore.put("date 2", date2);
61 objectStore.put("date 3", date3);
62 objectStore.put("date 4", date4);
63 objectStore.put("date 5", date5);
64 objectStore.put("date 6", date6);
65 objectStore.put("date 7", date7);
66 objectStore.put("date 8", date8);
67
68 logCount();
69
70 versionTransaction.onabort = function(event) {
71 log("Initial upgrade versionchange transaction unexpected abort");
72 done();
73 }
74
75 versionTransaction.oncomplete = function(event) {
76 log("Initial upgrade versionchange transaction complete");
77 continueTest1();
78 }
79
80 versionTransaction.onerror = function(event) {
81 log("Initial upgrade versionchange transaction unexpected error" + event);
82 done();
83 }
84}
85
86function continueTest1()
87{
88 var transaction = database.transaction("TestObjectStore", "readwrite");
89 objectStore = transaction.objectStore("TestObjectStore");
90
91 // The pairs of things in the array are the things to delete followed by the expected decrease in the total count of objects.
92 var thingsToDelete = [
93 date8, 1,
94 date8, 0,
95 "balyhoo", 0,
96 IDBKeyRange.bound(date6, date7, true, true), 0,
97 IDBKeyRange.bound(date6, date7, true), 1,
98 IDBKeyRange.bound(date5, date6, false, true), 1,
99 IDBKeyRange.bound(date1, date6), 5,
100 IDBKeyRange.bound(1, 98), 98,
101 IDBKeyRange.bound("foo", "fos", true, true), 3
102 ];
103 var currentThing = 0;
104
105 var runDeleteTests = function()
106 {
107 if (!thingsToDelete[currentThing])
108 return;
109
110 objectStore.delete(thingsToDelete[currentThing]).onsuccess = function() {
111 log("Deleted \"" + thingsToDelete[currentThing] + "\", and there should now be " + thingsToDelete[currentThing + 1] + " less things total.");
112 logCount();
113 currentThing += 2;
114 runDeleteTests();
115 }
116 }
117 runDeleteTests();
118
119 transaction.onabort = function(event) {
120 log("readwrite transaction unexpected abort" + event);
121 done();
122 }
123
124 transaction.oncomplete = function(event) {
125 log("readwrite transaction complete");
126 done();
127 }
128
129 transaction.onerror = function(event) {
130 log("readwrite transaction unexpected error" + event);
131 done();
132 }
133}
134
135</script>