1 Test IndexedDB's cursor update.
3 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
6 webkitIndexedDB.open('cursor-update')
7 db = event.target.result
8 db.setVersion('new version')
10 trans = event.target.result
11 PASS trans !== null is true
12 Deleted all object stores.
13 objectStore = db.createObjectStore('basicStore')
14 objectStore.add('myValue1', 'myKey1').onerror = unexpectedErrorCallback
15 objectStore.add('myValue2', 'myKey2').onerror = unexpectedErrorCallback
16 objectStore.add('myValue3', 'myKey3').onerror = unexpectedErrorCallback
17 objectStore.add('myValue4', 'myKey4').onerror = unexpectedErrorCallback
18 objectStore = db.createObjectStore('autoIncrementStore', {autoIncrement: true})
19 objectStore.add('foo1').onerror = unexpectedErrorCallback
20 objectStore.add('foo2').onerror = unexpectedErrorCallback
21 objectStore.add('foo3').onerror = unexpectedErrorCallback
22 objectStore.add('foo4').onerror = unexpectedErrorCallback
23 objectStore = db.createObjectStore('keyPathStore', {keyPath: 'id'})
24 objectStore.createIndex('numberIndex', 'number')
25 objectStore.add({number: 1, id: 1}).onerror = unexpectedErrorCallback
26 objectStore.add({number: 2, id: 2}).onerror = unexpectedErrorCallback
27 objectStore.add({number: 3, id: 3}).onerror = unexpectedErrorCallback
28 objectStore.add({number: 4, id: 4}).onerror = unexpectedErrorCallback
30 trans = db.transaction(['basicStore', 'autoIncrementStore', 'keyPathStore'], webkitIDBTransaction.READ_WRITE)
31 trans.objectStore('basicStore')
32 objectStore.openCursor(keyRange)
34 PASS event.target.source is objectStore
35 event.target.result.update('myUpdatedValue' + counter++)
36 event.target.source.continue()
38 PASS event.target.source is objectStore
39 event.target.result.update('myUpdatedValue' + counter++)
40 event.target.source.continue()
42 PASS event.target.source is objectStore
43 event.target.result.update('myUpdatedValue' + counter++)
44 event.target.source.continue()
46 PASS event.target.source is objectStore
47 event.target.result.update('myUpdatedValue' + counter++)
48 event.target.source.continue()
50 PASS event.target.source is objectStore
52 trans.objectStore('basicStore').openCursor(keyRange)
54 PASS event.target.result.key is "myKey1"
55 PASS event.target.result.value is "myUpdatedValue1"
56 event.target.result.continue()
58 PASS event.target.result.key is "myKey2"
59 PASS event.target.result.value is "myUpdatedValue2"
60 event.target.result.continue()
62 PASS event.target.result.key is "myKey3"
63 PASS event.target.result.value is "myUpdatedValue3"
64 event.target.result.continue()
66 PASS event.target.result.key is "myKey4"
67 PASS event.target.result.value is "myUpdatedValue4"
68 event.target.result.continue()
71 trans.objectStore('autoIncrementStore').openCursor(keyRange)
72 autoIncrementUpdateCursor()
73 event.target.result.update('myUpdatedFoo' + counter++)
74 event.target.source.continue()
75 autoIncrementUpdateCursor()
76 event.target.result.update('myUpdatedFoo' + counter++)
77 event.target.source.continue()
78 autoIncrementUpdateCursor()
79 event.target.result.update('myUpdatedFoo' + counter++)
80 event.target.source.continue()
81 autoIncrementUpdateCursor()
82 event.target.result.update('myUpdatedFoo' + counter++)
83 event.target.source.continue()
84 autoIncrementUpdateCursor()
86 trans.objectStore('autoIncrementStore').openCursor(keyRange)
87 autoIncrementCheckCursor()
88 PASS event.target.result.key is counter
89 PASS event.target.result.value is "myUpdatedFoo1"
90 event.target.result.continue()
91 autoIncrementCheckCursor()
92 PASS event.target.result.key is counter
93 PASS event.target.result.value is "myUpdatedFoo2"
94 event.target.result.continue()
95 autoIncrementCheckCursor()
96 PASS event.target.result.key is counter
97 PASS event.target.result.value is "myUpdatedFoo3"
98 event.target.result.continue()
99 autoIncrementCheckCursor()
100 PASS event.target.result.key is counter
101 PASS event.target.result.value is "myUpdatedFoo4"
102 event.target.result.continue()
103 autoIncrementCheckCursor()
105 trans.objectStore('keyPathStore').openCursor(keyRange)
106 keyPathUpdateCursor()
107 event.target.result.update({id: 100 + counter, number: 100 + counter})
108 PASS event.target.errorCode is webkitIDBDatabaseException.DATA_ERR
109 event.preventDefault()
110 event.target.source.update({id: counter, number: 100 + counter++})
111 event.target.source.continue()
112 keyPathUpdateCursor()
113 event.target.result.update({id: 100 + counter, number: 100 + counter})
114 PASS event.target.errorCode is webkitIDBDatabaseException.DATA_ERR
115 event.preventDefault()
116 event.target.source.update({id: counter, number: 100 + counter++})
117 event.target.source.continue()
118 keyPathUpdateCursor()
119 event.target.result.update({id: 100 + counter, number: 100 + counter})
120 PASS event.target.errorCode is webkitIDBDatabaseException.DATA_ERR
121 event.preventDefault()
122 event.target.source.update({id: counter, number: 100 + counter++})
123 event.target.source.continue()
124 keyPathUpdateCursor()
125 event.target.result.update({id: 100 + counter, number: 100 + counter})
126 PASS event.target.errorCode is webkitIDBDatabaseException.DATA_ERR
127 event.preventDefault()
128 event.target.source.update({id: counter, number: 100 + counter++})
129 event.target.source.continue()
130 keyPathUpdateCursor()
132 trans.objectStore('keyPathStore').openCursor(keyRange)
134 PASS event.target.result.key is counter
135 PASS event.target.result.value.id is counter
136 PASS event.target.result.value.number is 101
137 event.target.result.continue()
139 PASS event.target.result.key is counter
140 PASS event.target.result.value.id is counter
141 PASS event.target.result.value.number is 102
142 event.target.result.continue()
144 PASS event.target.result.key is counter
145 PASS event.target.result.value.id is counter
146 PASS event.target.result.value.number is 103
147 event.target.result.continue()
149 PASS event.target.result.key is counter
150 PASS event.target.result.value.id is counter
151 PASS event.target.result.value.number is 104
152 event.target.result.continue()
155 trans.objectStore('keyPathStore').index('numberIndex').openKeyCursor(keyRange)
157 PASS event.target.result.key is counter + 100
158 PASS event.target.result.primaryKey is counter
159 event.target.result.update({id: counter, number: counter + 200})
160 PASS code is webkitIDBDatabaseException.NOT_ALLOWED_ERR
162 PASS event.target.result.key is counter + 100
163 PASS event.target.result.primaryKey is counter
164 event.target.result.update({id: counter, number: counter + 200})
165 PASS code is webkitIDBDatabaseException.NOT_ALLOWED_ERR
167 PASS event.target.result.key is counter + 100
168 PASS event.target.result.primaryKey is counter
169 event.target.result.update({id: counter, number: counter + 200})
170 PASS code is webkitIDBDatabaseException.NOT_ALLOWED_ERR
172 PASS event.target.result.key is counter + 100
173 PASS event.target.result.primaryKey is counter
174 event.target.result.update({id: counter, number: counter + 200})
175 PASS code is webkitIDBDatabaseException.NOT_ALLOWED_ERR
178 transactionComplete()
179 PASS successfullyParsed is true