OLD | NEW |
1 Test that expected exceptions are thrown per IndexedDB spec. | 1 Test that expected exceptions are thrown per IndexedDB spec. |
2 | 2 |
3 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
". | 3 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
". |
4 | 4 |
5 | 5 |
6 indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.
msIndexedDB || self.OIndexedDB; | 6 indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.
msIndexedDB || self.OIndexedDB; |
7 | 7 |
8 dbname = "exceptions.html" | 8 dbname = "exceptions.html" |
9 indexedDB.deleteDatabase(dbname) | 9 indexedDB.deleteDatabase(dbname) |
10 indexedDB.open(dbname) | 10 indexedDB.open(dbname) |
(...skipping 15 matching lines...) Expand all Loading... |
26 PASS request.readyState is "pending" | 26 PASS request.readyState is "pending" |
27 | 27 |
28 3.2.1 The IDBRequest Interface | 28 3.2.1 The IDBRequest Interface |
29 | 29 |
30 IDBRequest.error | 30 IDBRequest.error |
31 When the done flag is false, getting this property must throw a DOMException of
type InvalidStateError. | 31 When the done flag is false, getting this property must throw a DOMException of
type InvalidStateError. |
32 Expecting exception from request.error | 32 Expecting exception from request.error |
33 PASS Exception was thrown. | 33 PASS Exception was thrown. |
34 PASS code is DOMException.INVALID_STATE_ERR | 34 PASS code is DOMException.INVALID_STATE_ERR |
35 PASS ename is 'InvalidStateError' | 35 PASS ename is 'InvalidStateError' |
| 36 Exception message: The request has not finished. |
36 | 37 |
37 IDBRequest.result | 38 IDBRequest.result |
38 When the done flag is false, getting this property must throw a DOMException of
type InvalidStateError. | 39 When the done flag is false, getting this property must throw a DOMException of
type InvalidStateError. |
39 Expecting exception from request.result | 40 Expecting exception from request.result |
40 PASS Exception was thrown. | 41 PASS Exception was thrown. |
41 PASS code is DOMException.INVALID_STATE_ERR | 42 PASS code is DOMException.INVALID_STATE_ERR |
42 PASS ename is 'InvalidStateError' | 43 PASS ename is 'InvalidStateError' |
| 44 Exception message: The request has not finished. |
43 | 45 |
44 3.2.3 Opening a database | 46 3.2.3 Opening a database |
45 | 47 |
46 IDBFactory.cmp() | 48 IDBFactory.cmp() |
47 One of the supplied keys was not a valid key. | 49 One of the supplied keys was not a valid key. |
48 Expecting exception from indexedDB.cmp(null, 0) | 50 Expecting exception from indexedDB.cmp(null, 0) |
49 PASS Exception was thrown. | 51 PASS Exception was thrown. |
50 PASS code is 0 | 52 PASS code is 0 |
51 PASS ename is 'DataError' | 53 PASS ename is 'DataError' |
| 54 Exception message: The parameter is not a valid key. |
52 db.close() | 55 db.close() |
53 | 56 |
54 3.2.4 Database | 57 3.2.4 Database |
55 indexedDB.open(dbname, 2) | 58 indexedDB.open(dbname, 2) |
56 | 59 |
57 IDBDatabase.createObjectStore() | 60 IDBDatabase.createObjectStore() |
58 If an objectStore with the same name already exists, the implementation must thr
ow a DOMException of type ConstraintError. | 61 If an objectStore with the same name already exists, the implementation must thr
ow a DOMException of type ConstraintError. |
59 Expecting exception from db.createObjectStore('store') | 62 Expecting exception from db.createObjectStore('store') |
60 PASS Exception was thrown. | 63 PASS Exception was thrown. |
61 PASS code is 0 | 64 PASS code is 0 |
62 PASS ename is 'ConstraintError' | 65 PASS ename is 'ConstraintError' |
| 66 Exception message: An object store with the specified name already exists. |
63 If keyPath is not a valid key path then a DOMException of type SyntaxError must
be thrown. | 67 If keyPath is not a valid key path then a DOMException of type SyntaxError must
be thrown. |
64 Expecting exception from db.createObjectStore('fail', {keyPath: '-invalid-'}) | 68 Expecting exception from db.createObjectStore('fail', {keyPath: '-invalid-'}) |
65 PASS Exception was thrown. | 69 PASS Exception was thrown. |
66 PASS code is DOMException.SYNTAX_ERR | 70 PASS code is DOMException.SYNTAX_ERR |
67 PASS ename is 'SyntaxError' | 71 PASS ename is 'SyntaxError' |
| 72 Exception message: The keyPath option is not a valid key path. |
68 If the optionalParameters parameter is specified, and autoIncrement is set to tr
ue, and the keyPath parameter is specified to the empty string, or specified to
an Array, this function must throw a InvalidAccessError exception. | 73 If the optionalParameters parameter is specified, and autoIncrement is set to tr
ue, and the keyPath parameter is specified to the empty string, or specified to
an Array, this function must throw a InvalidAccessError exception. |
69 Expecting exception from db.createObjectStore('fail', {autoIncrement: true, keyP
ath: ''}) | 74 Expecting exception from db.createObjectStore('fail', {autoIncrement: true, keyP
ath: ''}) |
70 PASS Exception was thrown. | 75 PASS Exception was thrown. |
71 PASS code is DOMException.INVALID_ACCESS_ERR | 76 PASS code is DOMException.INVALID_ACCESS_ERR |
72 PASS ename is 'InvalidAccessError' | 77 PASS ename is 'InvalidAccessError' |
| 78 Exception message: The autoIncrement option was set but the keyPath option was e
mpty or an array. |
73 Expecting exception from db.createObjectStore('fail', {autoIncrement: true, keyP
ath: ['a']}) | 79 Expecting exception from db.createObjectStore('fail', {autoIncrement: true, keyP
ath: ['a']}) |
74 PASS Exception was thrown. | 80 PASS Exception was thrown. |
75 PASS code is DOMException.INVALID_ACCESS_ERR | 81 PASS code is DOMException.INVALID_ACCESS_ERR |
76 PASS ename is 'InvalidAccessError' | 82 PASS ename is 'InvalidAccessError' |
| 83 Exception message: The autoIncrement option was set but the keyPath option was e
mpty or an array. |
77 | 84 |
78 IDBDatabase.deleteObjectStore() | 85 IDBDatabase.deleteObjectStore() |
79 There is no object store with the given name, compared in a case-sensitive manne
r, in the connected database. | 86 There is no object store with the given name, compared in a case-sensitive manne
r, in the connected database. |
80 Expecting exception from db.deleteObjectStore('no-such-store') | 87 Expecting exception from db.deleteObjectStore('no-such-store') |
81 PASS Exception was thrown. | 88 PASS Exception was thrown. |
82 PASS code is DOMException.NOT_FOUND_ERR | 89 PASS code is DOMException.NOT_FOUND_ERR |
83 PASS ename is 'NotFoundError' | 90 PASS ename is 'NotFoundError' |
| 91 Exception message: The specified object store was not found. |
84 | 92 |
85 IDBDatabase.transaction() | 93 IDBDatabase.transaction() |
86 If this method is called on IDBDatabase object for which a "versionchange" trans
action is still running, a InvalidStateError exception must be thrown. | 94 If this method is called on IDBDatabase object for which a "versionchange" trans
action is still running, a InvalidStateError exception must be thrown. |
87 Expecting exception from db.transaction('store') | 95 Expecting exception from db.transaction('store') |
88 PASS Exception was thrown. | 96 PASS Exception was thrown. |
89 PASS code is DOMException.INVALID_STATE_ERR | 97 PASS code is DOMException.INVALID_STATE_ERR |
90 PASS ename is 'InvalidStateError' | 98 PASS ename is 'InvalidStateError' |
| 99 Exception message: A version change transaction is running. |
91 One of the names provided in the storeNames argument doesn't exist in this datab
ase. | 100 One of the names provided in the storeNames argument doesn't exist in this datab
ase. |
92 Expecting exception from db.transaction('no-such-store') | 101 Expecting exception from db.transaction('no-such-store') |
93 PASS Exception was thrown. | 102 PASS Exception was thrown. |
94 PASS code is DOMException.NOT_FOUND_ERR | 103 PASS code is DOMException.NOT_FOUND_ERR |
95 PASS ename is 'NotFoundError' | 104 PASS ename is 'NotFoundError' |
| 105 Exception message: One of the specified object stores was not found. |
96 The value for the mode parameter is invalid. | 106 The value for the mode parameter is invalid. |
97 Expecting TypeError exception from db.transaction('store', 'invalid-mode') | 107 Expecting TypeError exception from db.transaction('store', 'invalid-mode') |
98 PASS Exception was thrown. | 108 PASS Exception was thrown. |
99 PASS db.transaction('store', 'invalid-mode') threw TypeError: Type error | 109 PASS db.transaction('store', 'invalid-mode') threw TypeError: Type error |
100 The function was called with an empty list of store names | 110 The function was called with an empty list of store names |
101 Expecting exception from db.transaction([]) | 111 Expecting exception from db.transaction([]) |
102 PASS Exception was thrown. | 112 PASS Exception was thrown. |
103 PASS code is DOMException.INVALID_ACCESS_ERR | 113 PASS code is DOMException.INVALID_ACCESS_ERR |
104 PASS ename is 'InvalidAccessError' | 114 PASS ename is 'InvalidAccessError' |
| 115 Exception message: The storeNames parameter was empty. |
105 | 116 |
106 One more IDBDatabase.createObjectStore() test: | 117 One more IDBDatabase.createObjectStore() test: |
107 If this function is called from outside a "versionchange" transaction callback .
.. the implementation must throw a DOMException of type InvalidStateError. | 118 If this function is called from outside a "versionchange" transaction callback .
.. the implementation must throw a DOMException of type InvalidStateError. |
108 Expecting exception from db.createObjectStore('fail') | 119 Expecting exception from db.createObjectStore('fail') |
109 PASS Exception was thrown. | 120 PASS Exception was thrown. |
110 PASS code is DOMException.INVALID_STATE_ERR | 121 PASS code is DOMException.INVALID_STATE_ERR |
111 PASS ename is 'InvalidStateError' | 122 PASS ename is 'InvalidStateError' |
| 123 Exception message: The database is not running a version change transaction. |
112 | 124 |
113 One more IDBDatabase.deleteObjectStore() test: | 125 One more IDBDatabase.deleteObjectStore() test: |
114 If this function is called from outside a "versionchange" transaction callback .
.. the implementation must throw a DOMException of type InvalidStateError. | 126 If this function is called from outside a "versionchange" transaction callback .
.. the implementation must throw a DOMException of type InvalidStateError. |
115 Expecting exception from db.deleteObjectStore('fail') | 127 Expecting exception from db.deleteObjectStore('fail') |
116 PASS Exception was thrown. | 128 PASS Exception was thrown. |
117 PASS code is DOMException.INVALID_STATE_ERR | 129 PASS code is DOMException.INVALID_STATE_ERR |
118 PASS ename is 'InvalidStateError' | 130 PASS ename is 'InvalidStateError' |
| 131 Exception message: The database is not running a version change transaction. |
119 | 132 |
120 Prepare an object store and index from an inactive transaction for later use. | 133 Prepare an object store and index from an inactive transaction for later use. |
121 finishedTransaction = inactiveTransaction = db.transaction('store') | 134 finishedTransaction = inactiveTransaction = db.transaction('store') |
122 storeFromInactiveTransaction = inactiveTransaction.objectStore('store') | 135 storeFromInactiveTransaction = inactiveTransaction.objectStore('store') |
123 indexFromInactiveTransaction = storeFromInactiveTransaction.index('index') | 136 indexFromInactiveTransaction = storeFromInactiveTransaction.index('index') |
124 request = storeFromInactiveTransaction.openCursor() | 137 request = storeFromInactiveTransaction.openCursor() |
125 cursorFromInactiveTransaction = request.result | 138 cursorFromInactiveTransaction = request.result |
126 | 139 |
127 3.2.5 Object Store | 140 3.2.5 Object Store |
128 ro_transaction = db.transaction('store', 'readonly') | 141 ro_transaction = db.transaction('store', 'readonly') |
129 storeFromReadOnlyTransaction = ro_transaction.objectStore('store') | 142 storeFromReadOnlyTransaction = ro_transaction.objectStore('store') |
130 rw_transaction = db.transaction('store', 'readwrite') | 143 rw_transaction = db.transaction('store', 'readwrite') |
131 store = rw_transaction.objectStore('store') | 144 store = rw_transaction.objectStore('store') |
132 | 145 |
133 IDBObjectStore.add() | 146 IDBObjectStore.add() |
134 This method throws a DOMException of type ReadOnlyError if the transaction which
this IDBObjectStore belongs to is has its mode set to "readonly". | 147 This method throws a DOMException of type ReadOnlyError if the transaction which
this IDBObjectStore belongs to is has its mode set to "readonly". |
135 Expecting exception from storeFromReadOnlyTransaction.add(0, 0) | 148 Expecting exception from storeFromReadOnlyTransaction.add(0, 0) |
136 PASS Exception was thrown. | 149 PASS Exception was thrown. |
137 PASS code is 0 | 150 PASS code is 0 |
138 PASS ename is 'ReadOnlyError' | 151 PASS ename is 'ReadOnlyError' |
| 152 Exception message: A write operation was attempted in a read-only transaction. |
139 The transaction this IDBObjectStore belongs to is not active. | 153 The transaction this IDBObjectStore belongs to is not active. |
140 Expecting exception from storeFromInactiveTransaction.add(0, 0) | 154 Expecting exception from storeFromInactiveTransaction.add(0, 0) |
141 PASS Exception was thrown. | 155 PASS Exception was thrown. |
142 PASS code is 0 | 156 PASS code is 0 |
143 PASS ename is 'TransactionInactiveError' | 157 PASS ename is 'TransactionInactiveError' |
| 158 Exception message: The transaction has finished. |
144 The data being stored could not be cloned by the internal structured cloning alg
orithm. | 159 The data being stored could not be cloned by the internal structured cloning alg
orithm. |
145 Expecting exception from store.add(self, 0) | 160 Expecting exception from store.add(self, 0) |
146 PASS Exception was thrown. | 161 PASS Exception was thrown. |
147 PASS code is DOMException.DATA_CLONE_ERR | 162 PASS code is DOMException.DATA_CLONE_ERR |
| 163 Exception message: An object could not be cloned. |
148 | 164 |
149 IDBObjectStore.clear() | 165 IDBObjectStore.clear() |
150 This method throws a DOMException of type ReadOnlyError if the transaction which
this IDBObjectStore belongs to is has its mode set to "readonly". | 166 This method throws a DOMException of type ReadOnlyError if the transaction which
this IDBObjectStore belongs to is has its mode set to "readonly". |
151 Expecting exception from storeFromReadOnlyTransaction.clear() | 167 Expecting exception from storeFromReadOnlyTransaction.clear() |
152 PASS Exception was thrown. | 168 PASS Exception was thrown. |
153 PASS code is 0 | 169 PASS code is 0 |
154 PASS ename is 'ReadOnlyError' | 170 PASS ename is 'ReadOnlyError' |
| 171 Exception message: A write operation was attempted in a read-only transaction. |
155 The transaction this IDBObjectStore belongs to is not active. | 172 The transaction this IDBObjectStore belongs to is not active. |
156 Expecting exception from storeFromInactiveTransaction.clear() | 173 Expecting exception from storeFromInactiveTransaction.clear() |
157 PASS Exception was thrown. | 174 PASS Exception was thrown. |
158 PASS code is 0 | 175 PASS code is 0 |
159 PASS ename is 'TransactionInactiveError' | 176 PASS ename is 'TransactionInactiveError' |
| 177 Exception message: The transaction has finished. |
160 | 178 |
161 IDBObjectStore.count() | 179 IDBObjectStore.count() |
162 If the optional key parameter is not a valid key or a key range, this method thr
ows a DOMException of type DataError. | 180 If the optional key parameter is not a valid key or a key range, this method thr
ows a DOMException of type DataError. |
163 Expecting exception from store.count({}) | 181 Expecting exception from store.count({}) |
164 PASS Exception was thrown. | 182 PASS Exception was thrown. |
165 PASS code is 0 | 183 PASS code is 0 |
166 PASS ename is 'DataError' | 184 PASS ename is 'DataError' |
| 185 Exception message: The parameter is not a valid key. |
167 The transaction this IDBObjectStore belongs to is not active. | 186 The transaction this IDBObjectStore belongs to is not active. |
168 Expecting exception from storeFromInactiveTransaction.count() | 187 Expecting exception from storeFromInactiveTransaction.count() |
169 PASS Exception was thrown. | 188 PASS Exception was thrown. |
170 PASS code is 0 | 189 PASS code is 0 |
171 PASS ename is 'TransactionInactiveError' | 190 PASS ename is 'TransactionInactiveError' |
| 191 Exception message: The transaction has finished. |
172 | 192 |
173 IDBObjectStore.delete() | 193 IDBObjectStore.delete() |
174 This method throws a DOMException of type ReadOnlyError if the transaction which
this IDBObjectStore belongs to is has its mode set to "readonly". | 194 This method throws a DOMException of type ReadOnlyError if the transaction which
this IDBObjectStore belongs to is has its mode set to "readonly". |
175 Expecting exception from storeFromReadOnlyTransaction.delete(0) | 195 Expecting exception from storeFromReadOnlyTransaction.delete(0) |
176 PASS Exception was thrown. | 196 PASS Exception was thrown. |
177 PASS code is 0 | 197 PASS code is 0 |
178 PASS ename is 'ReadOnlyError' | 198 PASS ename is 'ReadOnlyError' |
| 199 Exception message: A write operation was attempted in a read-only transaction. |
179 If the key parameter is not a valid key or a key range this method throws a DOME
xception of type DataError. | 200 If the key parameter is not a valid key or a key range this method throws a DOME
xception of type DataError. |
180 Expecting exception from store.delete({}) | 201 Expecting exception from store.delete({}) |
181 PASS Exception was thrown. | 202 PASS Exception was thrown. |
182 PASS code is 0 | 203 PASS code is 0 |
183 PASS ename is 'DataError' | 204 PASS ename is 'DataError' |
| 205 Exception message: The parameter is not a valid key. |
184 The transaction this IDBObjectStore belongs to is not active. | 206 The transaction this IDBObjectStore belongs to is not active. |
185 Expecting exception from storeFromInactiveTransaction.add(0, 0) | 207 Expecting exception from storeFromInactiveTransaction.add(0, 0) |
186 PASS Exception was thrown. | 208 PASS Exception was thrown. |
187 PASS code is 0 | 209 PASS code is 0 |
188 PASS ename is 'TransactionInactiveError' | 210 PASS ename is 'TransactionInactiveError' |
| 211 Exception message: The transaction has finished. |
189 | 212 |
190 IDBObjectStore.get() | 213 IDBObjectStore.get() |
191 If the key parameter is not a valid key or a key range, this method throws a DOM
Exception of type DataError. | 214 If the key parameter is not a valid key or a key range, this method throws a DOM
Exception of type DataError. |
192 Expecting exception from store.get({}) | 215 Expecting exception from store.get({}) |
193 PASS Exception was thrown. | 216 PASS Exception was thrown. |
194 PASS code is 0 | 217 PASS code is 0 |
195 PASS ename is 'DataError' | 218 PASS ename is 'DataError' |
| 219 Exception message: The parameter is not a valid key. |
196 The transaction this IDBObjectStore belongs to is not active. | 220 The transaction this IDBObjectStore belongs to is not active. |
197 Expecting exception from storeFromInactiveTransaction.get(0) | 221 Expecting exception from storeFromInactiveTransaction.get(0) |
198 PASS Exception was thrown. | 222 PASS Exception was thrown. |
199 PASS code is 0 | 223 PASS code is 0 |
200 PASS ename is 'TransactionInactiveError' | 224 PASS ename is 'TransactionInactiveError' |
| 225 Exception message: The transaction has finished. |
201 | 226 |
202 IDBObjectStore.index() | 227 IDBObjectStore.index() |
203 There is no index with the given name, compared in a case-sensitive manner, in t
he connected database. | 228 There is no index with the given name, compared in a case-sensitive manner, in t
he connected database. |
204 Expecting exception from store.index('no-such-index') | 229 Expecting exception from store.index('no-such-index') |
205 PASS Exception was thrown. | 230 PASS Exception was thrown. |
206 PASS code is DOMException.NOT_FOUND_ERR | 231 PASS code is DOMException.NOT_FOUND_ERR |
207 PASS ename is 'NotFoundError' | 232 PASS ename is 'NotFoundError' |
| 233 Exception message: The specified index was not found. |
208 Occurs if a request is made on a source object that has been deleted or removed,
or if the transaction the object store belongs to has finished. | 234 Occurs if a request is made on a source object that has been deleted or removed,
or if the transaction the object store belongs to has finished. |
209 Expecting exception from storeFromInactiveTransaction.index('index') | 235 Expecting exception from storeFromInactiveTransaction.index('index') |
210 PASS Exception was thrown. | 236 PASS Exception was thrown. |
211 PASS code is DOMException.INVALID_STATE_ERR | 237 PASS code is DOMException.INVALID_STATE_ERR |
212 PASS ename is 'InvalidStateError' | 238 PASS ename is 'InvalidStateError' |
| 239 Exception message: The transaction has finished. |
213 | 240 |
214 IDBObjectStore.openCursor() | 241 IDBObjectStore.openCursor() |
215 If the range parameter is specified but is not a valid key or a key range, this
method throws a DOMException of type DataError. | 242 If the range parameter is specified but is not a valid key or a key range, this
method throws a DOMException of type DataError. |
216 Expecting exception from store.openCursor({}) | 243 Expecting exception from store.openCursor({}) |
217 PASS Exception was thrown. | 244 PASS Exception was thrown. |
218 PASS code is 0 | 245 PASS code is 0 |
219 PASS ename is 'DataError' | 246 PASS ename is 'DataError' |
| 247 Exception message: The parameter is not a valid key. |
220 The transaction this IDBObjectStore belongs to is not active. | 248 The transaction this IDBObjectStore belongs to is not active. |
221 Expecting exception from storeFromInactiveTransaction.openCursor() | 249 Expecting exception from storeFromInactiveTransaction.openCursor() |
222 PASS Exception was thrown. | 250 PASS Exception was thrown. |
223 PASS code is 0 | 251 PASS code is 0 |
224 PASS ename is 'TransactionInactiveError' | 252 PASS ename is 'TransactionInactiveError' |
| 253 Exception message: The transaction has finished. |
225 The value for the direction parameter is invalid. | 254 The value for the direction parameter is invalid. |
226 Expecting TypeError exception from store.openCursor(0, 'invalid-direction') | 255 Expecting TypeError exception from store.openCursor(0, 'invalid-direction') |
227 PASS Exception was thrown. | 256 PASS Exception was thrown. |
228 PASS store.openCursor(0, 'invalid-direction') threw TypeError: Type error | 257 PASS store.openCursor(0, 'invalid-direction') threw TypeError: Type error |
229 | 258 |
230 IDBObjectStore.put() | 259 IDBObjectStore.put() |
231 This method throws a DOMException of type ReadOnlyError if the transaction which
this IDBObjectStore belongs to is has its mode set to "readonly". | 260 This method throws a DOMException of type ReadOnlyError if the transaction which
this IDBObjectStore belongs to is has its mode set to "readonly". |
232 Expecting exception from storeFromReadOnlyTransaction.put(0, 0) | 261 Expecting exception from storeFromReadOnlyTransaction.put(0, 0) |
233 PASS Exception was thrown. | 262 PASS Exception was thrown. |
234 PASS code is 0 | 263 PASS code is 0 |
235 PASS ename is 'ReadOnlyError' | 264 PASS ename is 'ReadOnlyError' |
| 265 Exception message: A write operation was attempted in a read-only transaction. |
236 The transaction this IDBObjectStore belongs to is not active. | 266 The transaction this IDBObjectStore belongs to is not active. |
237 Expecting exception from storeFromInactiveTransaction.put(0, 0) | 267 Expecting exception from storeFromInactiveTransaction.put(0, 0) |
238 PASS Exception was thrown. | 268 PASS Exception was thrown. |
239 PASS code is 0 | 269 PASS code is 0 |
240 PASS ename is 'TransactionInactiveError' | 270 PASS ename is 'TransactionInactiveError' |
| 271 Exception message: The transaction has finished. |
241 The data being stored could not be cloned by the internal structured cloning alg
orithm. | 272 The data being stored could not be cloned by the internal structured cloning alg
orithm. |
242 Expecting exception from store.put(self, 0) | 273 Expecting exception from store.put(self, 0) |
243 PASS Exception was thrown. | 274 PASS Exception was thrown. |
244 PASS code is DOMException.DATA_CLONE_ERR | 275 PASS code is DOMException.DATA_CLONE_ERR |
| 276 Exception message: An object could not be cloned. |
245 db.close() | 277 db.close() |
246 ro_transaction.oncomplete = transactionComplete | 278 ro_transaction.oncomplete = transactionComplete |
247 rw_transaction.oncomplete = transactionComplete | 279 rw_transaction.oncomplete = transactionComplete |
248 | 280 |
249 transactionComplete(): | 281 transactionComplete(): |
250 First transaction completed | 282 First transaction completed |
251 | 283 |
252 transactionComplete(): | 284 transactionComplete(): |
253 request = indexedDB.open(dbname, 3) | 285 request = indexedDB.open(dbname, 3) |
254 request.onupgradeneeded = onUpgradeNeeded3 | 286 request.onupgradeneeded = onUpgradeNeeded3 |
255 | 287 |
256 IDBObjectStore.createIndex() | 288 IDBObjectStore.createIndex() |
257 If an index with the same name already exists, the implementation must throw a D
OMException of type ConstraintError. | 289 If an index with the same name already exists, the implementation must throw a D
OMException of type ConstraintError. |
258 Expecting exception from store.createIndex('index', 'keyPath') | 290 Expecting exception from store.createIndex('index', 'keyPath') |
259 PASS Exception was thrown. | 291 PASS Exception was thrown. |
260 PASS code is 0 | 292 PASS code is 0 |
261 PASS ename is 'ConstraintError' | 293 PASS ename is 'ConstraintError' |
| 294 Exception message: An index with the specified name already exists. |
262 If keyPath is not a valid key path then a DOMException of type SyntaxError must
be thrown. | 295 If keyPath is not a valid key path then a DOMException of type SyntaxError must
be thrown. |
263 Expecting exception from store.createIndex('fail', '-invalid-') | 296 Expecting exception from store.createIndex('fail', '-invalid-') |
264 PASS Exception was thrown. | 297 PASS Exception was thrown. |
265 PASS code is DOMException.SYNTAX_ERR | 298 PASS code is DOMException.SYNTAX_ERR |
266 PASS ename is 'SyntaxError' | 299 PASS ename is 'SyntaxError' |
| 300 Exception message: The keyPath argument contains an invalid key path. |
267 If keyPath is an Array and the multiEntry property in the optionalParameters is
true, then a DOMException of type InvalidAccessError must be thrown. | 301 If keyPath is an Array and the multiEntry property in the optionalParameters is
true, then a DOMException of type InvalidAccessError must be thrown. |
268 Expecting exception from store.createIndex('fail', ['a'], {multiEntry: true}) | 302 Expecting exception from store.createIndex('fail', ['a'], {multiEntry: true}) |
269 PASS Exception was thrown. | 303 PASS Exception was thrown. |
270 PASS code is DOMException.INVALID_ACCESS_ERR | 304 PASS code is DOMException.INVALID_ACCESS_ERR |
271 PASS ename is 'InvalidAccessError' | 305 PASS ename is 'InvalidAccessError' |
| 306 Exception message: The keyPath argument was an array and the multiEntry option i
s true. |
272 | 307 |
273 IDBObjectStore.deleteIndex() | 308 IDBObjectStore.deleteIndex() |
274 There is no index with the given name, compared in a case-sensitive manner, in t
he connected database. | 309 There is no index with the given name, compared in a case-sensitive manner, in t
he connected database. |
275 Expecting exception from store.deleteIndex('no-such-index') | 310 Expecting exception from store.deleteIndex('no-such-index') |
276 PASS Exception was thrown. | 311 PASS Exception was thrown. |
277 PASS code is DOMException.NOT_FOUND_ERR | 312 PASS code is DOMException.NOT_FOUND_ERR |
278 PASS ename is 'NotFoundError' | 313 PASS ename is 'NotFoundError' |
| 314 Exception message: The specified index was not found. |
279 | 315 |
280 One more IDBObjectStore.createIndex() test: | 316 One more IDBObjectStore.createIndex() test: |
281 If this function is called from outside a "versionchange" transaction callback .
.. the implementation must throw a DOMException of type InvalidStateError. | 317 If this function is called from outside a "versionchange" transaction callback .
.. the implementation must throw a DOMException of type InvalidStateError. |
282 Expecting exception from db.transaction('store').objectStore('store').createInde
x('fail', 'keyPath') | 318 Expecting exception from db.transaction('store').objectStore('store').createInde
x('fail', 'keyPath') |
283 PASS Exception was thrown. | 319 PASS Exception was thrown. |
284 PASS code is DOMException.INVALID_STATE_ERR | 320 PASS code is DOMException.INVALID_STATE_ERR |
285 PASS ename is 'InvalidStateError' | 321 PASS ename is 'InvalidStateError' |
| 322 Exception message: The database is not running a version change transaction. |
286 | 323 |
287 One more IDBObjectStore.deleteIndex() test: | 324 One more IDBObjectStore.deleteIndex() test: |
288 If this function is called from outside a "versionchange" transaction callback .
.. the implementation must throw a DOMException of type InvalidStateError. | 325 If this function is called from outside a "versionchange" transaction callback .
.. the implementation must throw a DOMException of type InvalidStateError. |
289 Expecting exception from db.transaction('store').objectStore('store').deleteInde
x('fail', 'keyPath') | 326 Expecting exception from db.transaction('store').objectStore('store').deleteInde
x('fail', 'keyPath') |
290 PASS Exception was thrown. | 327 PASS Exception was thrown. |
291 PASS code is DOMException.INVALID_STATE_ERR | 328 PASS code is DOMException.INVALID_STATE_ERR |
292 PASS ename is 'InvalidStateError' | 329 PASS ename is 'InvalidStateError' |
| 330 Exception message: The database is not running a version change transaction. |
293 | 331 |
294 3.2.6 Index | 332 3.2.6 Index |
295 indexFromReadOnlyTransaction = db.transaction('store', 'readonly').objectStore('
store').index('index') | 333 indexFromReadOnlyTransaction = db.transaction('store', 'readonly').objectStore('
store').index('index') |
296 index = db.transaction('store', 'readwrite').objectStore('store').index('index') | 334 index = db.transaction('store', 'readwrite').objectStore('store').index('index') |
297 | 335 |
298 IDBIndex.count() | 336 IDBIndex.count() |
299 If the optional key parameter is not a valid key or a key range, this method thr
ows a DOMException of type DataError. | 337 If the optional key parameter is not a valid key or a key range, this method thr
ows a DOMException of type DataError. |
300 Expecting exception from index.count({}) | 338 Expecting exception from index.count({}) |
301 PASS Exception was thrown. | 339 PASS Exception was thrown. |
302 PASS code is 0 | 340 PASS code is 0 |
303 PASS ename is 'DataError' | 341 PASS ename is 'DataError' |
| 342 Exception message: The parameter is not a valid key. |
304 The transaction this IDBIndex belongs to is not active. | 343 The transaction this IDBIndex belongs to is not active. |
305 Expecting exception from indexFromInactiveTransaction.count() | 344 Expecting exception from indexFromInactiveTransaction.count() |
306 PASS Exception was thrown. | 345 PASS Exception was thrown. |
307 PASS code is 0 | 346 PASS code is 0 |
308 PASS ename is 'TransactionInactiveError' | 347 PASS ename is 'TransactionInactiveError' |
| 348 Exception message: The transaction has finished. |
309 | 349 |
310 IDBIndex.get() | 350 IDBIndex.get() |
311 If the key parameter is not a valid key or a key range, this method throws a DOM
Exception of type DataError. | 351 If the key parameter is not a valid key or a key range, this method throws a DOM
Exception of type DataError. |
312 Expecting exception from index.get({}) | 352 Expecting exception from index.get({}) |
313 PASS Exception was thrown. | 353 PASS Exception was thrown. |
314 PASS code is 0 | 354 PASS code is 0 |
315 PASS ename is 'DataError' | 355 PASS ename is 'DataError' |
| 356 Exception message: The parameter is not a valid key. |
316 The transaction this IDBIndex belongs to is not active. | 357 The transaction this IDBIndex belongs to is not active. |
317 Expecting exception from indexFromInactiveTransaction.get(0) | 358 Expecting exception from indexFromInactiveTransaction.get(0) |
318 PASS Exception was thrown. | 359 PASS Exception was thrown. |
319 PASS code is 0 | 360 PASS code is 0 |
320 PASS ename is 'TransactionInactiveError' | 361 PASS ename is 'TransactionInactiveError' |
| 362 Exception message: The transaction has finished. |
321 | 363 |
322 IDBIndex.getKey() | 364 IDBIndex.getKey() |
323 If the key parameter is not a valid key or a key range, this method throws a DOM
Exception of type DataError. | 365 If the key parameter is not a valid key or a key range, this method throws a DOM
Exception of type DataError. |
324 Expecting exception from index.getKey({}) | 366 Expecting exception from index.getKey({}) |
325 PASS Exception was thrown. | 367 PASS Exception was thrown. |
326 PASS code is 0 | 368 PASS code is 0 |
327 PASS ename is 'DataError' | 369 PASS ename is 'DataError' |
| 370 Exception message: The parameter is not a valid key. |
328 The transaction this IDBIndex belongs to is not active. | 371 The transaction this IDBIndex belongs to is not active. |
329 Expecting exception from indexFromInactiveTransaction.getKey(0) | 372 Expecting exception from indexFromInactiveTransaction.getKey(0) |
330 PASS Exception was thrown. | 373 PASS Exception was thrown. |
331 PASS code is 0 | 374 PASS code is 0 |
332 PASS ename is 'TransactionInactiveError' | 375 PASS ename is 'TransactionInactiveError' |
| 376 Exception message: The transaction has finished. |
333 | 377 |
334 IDBIndex.openCursor() | 378 IDBIndex.openCursor() |
335 If the range parameter is specified but is not a valid key or a key range, this
method throws a DOMException of type DataError. | 379 If the range parameter is specified but is not a valid key or a key range, this
method throws a DOMException of type DataError. |
336 Expecting exception from index.openCursor({}) | 380 Expecting exception from index.openCursor({}) |
337 PASS Exception was thrown. | 381 PASS Exception was thrown. |
338 PASS code is 0 | 382 PASS code is 0 |
339 PASS ename is 'DataError' | 383 PASS ename is 'DataError' |
| 384 Exception message: The parameter is not a valid key. |
340 The transaction this IDBIndex belongs to is not active. | 385 The transaction this IDBIndex belongs to is not active. |
341 Expecting exception from indexFromInactiveTransaction.openCursor() | 386 Expecting exception from indexFromInactiveTransaction.openCursor() |
342 PASS Exception was thrown. | 387 PASS Exception was thrown. |
343 PASS code is 0 | 388 PASS code is 0 |
344 PASS ename is 'TransactionInactiveError' | 389 PASS ename is 'TransactionInactiveError' |
| 390 Exception message: The transaction has finished. |
345 The value for the direction parameter is invalid. | 391 The value for the direction parameter is invalid. |
346 Expecting TypeError exception from index.openCursor(0, 'invalid-direction') | 392 Expecting TypeError exception from index.openCursor(0, 'invalid-direction') |
347 PASS Exception was thrown. | 393 PASS Exception was thrown. |
348 PASS index.openCursor(0, 'invalid-direction') threw TypeError: Type error | 394 PASS index.openCursor(0, 'invalid-direction') threw TypeError: Type error |
349 | 395 |
350 IDBIndex.openKeyCursor() | 396 IDBIndex.openKeyCursor() |
351 If the range parameter is specified but is not a valid key or a key range, this
method throws a DOMException of type DataError. | 397 If the range parameter is specified but is not a valid key or a key range, this
method throws a DOMException of type DataError. |
352 Expecting exception from index.openKeyCursor({}) | 398 Expecting exception from index.openKeyCursor({}) |
353 PASS Exception was thrown. | 399 PASS Exception was thrown. |
354 PASS code is 0 | 400 PASS code is 0 |
355 PASS ename is 'DataError' | 401 PASS ename is 'DataError' |
| 402 Exception message: The parameter is not a valid key. |
356 The transaction this IDBIndex belongs to is not active. | 403 The transaction this IDBIndex belongs to is not active. |
357 Expecting exception from indexFromInactiveTransaction.openKeyCursor() | 404 Expecting exception from indexFromInactiveTransaction.openKeyCursor() |
358 PASS Exception was thrown. | 405 PASS Exception was thrown. |
359 PASS code is 0 | 406 PASS code is 0 |
360 PASS ename is 'TransactionInactiveError' | 407 PASS ename is 'TransactionInactiveError' |
| 408 Exception message: The transaction has finished. |
361 The value for the direction parameter is invalid. | 409 The value for the direction parameter is invalid. |
362 Expecting TypeError exception from index.openKeyCursor(0, 'invalid-direction') | 410 Expecting TypeError exception from index.openKeyCursor(0, 'invalid-direction') |
363 PASS Exception was thrown. | 411 PASS Exception was thrown. |
364 PASS index.openKeyCursor(0, 'invalid-direction') threw TypeError: Type error | 412 PASS index.openKeyCursor(0, 'invalid-direction') threw TypeError: Type error |
365 | 413 |
366 3.2.7 Cursor | 414 3.2.7 Cursor |
367 transaction = db.transaction(['store', 'inlineKeyStore'], 'readwrite') | 415 transaction = db.transaction(['store', 'inlineKeyStore'], 'readwrite') |
368 request = transaction.objectStore('store').openCursor() | 416 request = transaction.objectStore('store').openCursor() |
369 cursor = request.result | 417 cursor = request.result |
370 request = transaction.objectStore('store').index('index').openKeyCursor() | 418 request = transaction.objectStore('store').index('index').openKeyCursor() |
371 keyCursor = request.result | 419 keyCursor = request.result |
372 request = transaction.objectStore('store').openCursor(IDBKeyRange.lowerBound(-In
finity), 'prev') | 420 request = transaction.objectStore('store').openCursor(IDBKeyRange.lowerBound(-In
finity), 'prev') |
373 reverseCursor = request.result | 421 reverseCursor = request.result |
374 request = transaction.objectStore('inlineKeyStore').openCursor() | 422 request = transaction.objectStore('inlineKeyStore').openCursor() |
375 inlineCursor = request.result | 423 inlineCursor = request.result |
376 | 424 |
377 IDBCursor.advance() | 425 IDBCursor.advance() |
378 Calling this method more than once before new cursor data has been loaded is not
allowed and results in a DOMException of type InvalidStateError being thrown. | 426 Calling this method more than once before new cursor data has been loaded is not
allowed and results in a DOMException of type InvalidStateError being thrown. |
379 If the value for count is 0 (zero) or a negative number, this method must throw
a JavaScript TypeError exception. | 427 If the value for count is 0 (zero) or a negative number, this method must throw
a JavaScript TypeError exception. |
380 Expecting TypeError exception from cursor.advance(0) | 428 Expecting TypeError exception from cursor.advance(0) |
381 PASS Exception was thrown. | 429 PASS Exception was thrown. |
382 PASS cursor.advance(0) threw TypeError: Type error | 430 PASS cursor.advance(0) threw TypeError: Type error |
383 cursor.advance(1) | 431 cursor.advance(1) |
384 Expecting exception from cursor.advance(1) | 432 Expecting exception from cursor.advance(1) |
385 PASS Exception was thrown. | 433 PASS Exception was thrown. |
386 PASS code is DOMException.INVALID_STATE_ERR | 434 PASS code is DOMException.INVALID_STATE_ERR |
387 PASS ename is 'InvalidStateError' | 435 PASS ename is 'InvalidStateError' |
| 436 Exception message: The cursor is being iterated or has iterated past its end. |
388 The transaction this IDBCursor belongs to is not active. | 437 The transaction this IDBCursor belongs to is not active. |
389 Expecting exception from cursorFromInactiveTransaction.advance(1) | 438 Expecting exception from cursorFromInactiveTransaction.advance(1) |
390 PASS Exception was thrown. | 439 PASS Exception was thrown. |
391 PASS code is 0 | 440 PASS code is 0 |
392 PASS ename is 'TransactionInactiveError' | 441 PASS ename is 'TransactionInactiveError' |
| 442 Exception message: The transaction has finished. |
393 | 443 |
394 IDBCursor.continue() | 444 IDBCursor.continue() |
395 The parameter is not a valid key. | 445 The parameter is not a valid key. |
396 Expecting exception from cursor.continue({}) | 446 Expecting exception from cursor.continue({}) |
397 PASS Exception was thrown. | 447 PASS Exception was thrown. |
398 PASS code is 0 | 448 PASS code is 0 |
399 PASS ename is 'DataError' | 449 PASS ename is 'DataError' |
| 450 Exception message: The parameter is not a valid key. |
400 The parameter is less than or equal to this cursor's position and this cursor's
direction is "next" or "nextunique". | 451 The parameter is less than or equal to this cursor's position and this cursor's
direction is "next" or "nextunique". |
401 Expecting exception from cursor.continue(-Infinity) | 452 Expecting exception from cursor.continue(-Infinity) |
402 PASS Exception was thrown. | 453 PASS Exception was thrown. |
403 PASS code is 0 | 454 PASS code is 0 |
404 PASS ename is 'DataError' | 455 PASS ename is 'DataError' |
| 456 Exception message: The parameter is less than or equal to this cursor's position
. |
405 The parameter is greater than or equal to this cursor's position and this cursor
's direction is "prev" or "prevunique". | 457 The parameter is greater than or equal to this cursor's position and this cursor
's direction is "prev" or "prevunique". |
406 Expecting exception from reverseCursor.continue(100) | 458 Expecting exception from reverseCursor.continue(100) |
407 PASS Exception was thrown. | 459 PASS Exception was thrown. |
408 PASS code is 0 | 460 PASS code is 0 |
409 PASS ename is 'DataError' | 461 PASS ename is 'DataError' |
| 462 Exception message: The parameter is greater than or equal to this cursor's posit
ion. |
410 Calling this method more than once before new cursor data has been loaded is not
allowed and results in a DOMException of type InvalidStateError being thrown. | 463 Calling this method more than once before new cursor data has been loaded is not
allowed and results in a DOMException of type InvalidStateError being thrown. |
411 cursor.continue() | 464 cursor.continue() |
412 Expecting exception from cursor.continue() | 465 Expecting exception from cursor.continue() |
413 PASS Exception was thrown. | 466 PASS Exception was thrown. |
414 PASS code is DOMException.INVALID_STATE_ERR | 467 PASS code is DOMException.INVALID_STATE_ERR |
415 PASS ename is 'InvalidStateError' | 468 PASS ename is 'InvalidStateError' |
| 469 Exception message: The cursor is being iterated or has iterated past its end. |
416 The transaction this IDBCursor belongs to is not active. | 470 The transaction this IDBCursor belongs to is not active. |
417 Expecting exception from cursorFromInactiveTransaction.continue() | 471 Expecting exception from cursorFromInactiveTransaction.continue() |
418 PASS Exception was thrown. | 472 PASS Exception was thrown. |
419 PASS code is 0 | 473 PASS code is 0 |
420 PASS ename is 'TransactionInactiveError' | 474 PASS ename is 'TransactionInactiveError' |
| 475 Exception message: The transaction has finished. |
421 | 476 |
422 IDBCursor.delete() | 477 IDBCursor.delete() |
423 If this cursor's got value flag is false, or if this cursor was created using op
enKeyCursor a DOMException of type InvalidStateError is thrown. | 478 If this cursor's got value flag is false, or if this cursor was created using op
enKeyCursor a DOMException of type InvalidStateError is thrown. |
424 Expecting exception from keyCursor.delete() | 479 Expecting exception from keyCursor.delete() |
425 PASS Exception was thrown. | 480 PASS Exception was thrown. |
426 PASS code is DOMException.INVALID_STATE_ERR | 481 PASS code is DOMException.INVALID_STATE_ERR |
427 PASS ename is 'InvalidStateError' | 482 PASS ename is 'InvalidStateError' |
| 483 Exception message: The cursor is a key cursor. |
428 The transaction this IDBCursor belongs to is not active. | 484 The transaction this IDBCursor belongs to is not active. |
429 Expecting exception from cursorFromInactiveTransaction.delete() | 485 Expecting exception from cursorFromInactiveTransaction.delete() |
430 PASS Exception was thrown. | 486 PASS Exception was thrown. |
431 PASS code is 0 | 487 PASS code is 0 |
432 PASS ename is 'TransactionInactiveError' | 488 PASS ename is 'TransactionInactiveError' |
| 489 Exception message: The transaction has finished. |
433 | 490 |
434 IDBCursor.update() | 491 IDBCursor.update() |
435 If this cursor's got value flag is false or if this cursor was created using ope
nKeyCursor. This method throws a DOMException of type InvalidStateError. | 492 If this cursor's got value flag is false or if this cursor was created using ope
nKeyCursor. This method throws a DOMException of type InvalidStateError. |
436 Expecting exception from keyCursor.update({}) | 493 Expecting exception from keyCursor.update({}) |
437 PASS Exception was thrown. | 494 PASS Exception was thrown. |
438 PASS code is DOMException.INVALID_STATE_ERR | 495 PASS code is DOMException.INVALID_STATE_ERR |
439 PASS ename is 'InvalidStateError' | 496 PASS ename is 'InvalidStateError' |
| 497 Exception message: The cursor is a key cursor. |
440 If the effective object store of this cursor uses in-line keys and evaluating th
e key path of the value parameter results in a different value than the cursor's
effective key, this method throws a DOMException of type DataError. | 498 If the effective object store of this cursor uses in-line keys and evaluating th
e key path of the value parameter results in a different value than the cursor's
effective key, this method throws a DOMException of type DataError. |
441 Expecting exception from inlineCursor.update({id: 1}) | 499 Expecting exception from inlineCursor.update({id: 1}) |
442 PASS Exception was thrown. | 500 PASS Exception was thrown. |
443 PASS code is 0 | 501 PASS code is 0 |
444 PASS ename is 'DataError' | 502 PASS ename is 'DataError' |
| 503 Exception message: The effective object store of this cursor uses in-line keys a
nd evaluating the key path of the value parameter results in a different value t
han the cursor's effective key. |
445 If the structured clone algorithm throws an exception, that exception is rethrow
n. | 504 If the structured clone algorithm throws an exception, that exception is rethrow
n. |
446 Expecting exception from cursor.update(self) | 505 Expecting exception from cursor.update(self) |
447 PASS Exception was thrown. | 506 PASS Exception was thrown. |
448 PASS code is DOMException.DATA_CLONE_ERR | 507 PASS code is DOMException.DATA_CLONE_ERR |
| 508 Exception message: An object could not be cloned. |
449 The transaction this IDBCursor belongs to is not active. | 509 The transaction this IDBCursor belongs to is not active. |
450 Expecting exception from cursorFromInactiveTransaction.update({}) | 510 Expecting exception from cursorFromInactiveTransaction.update({}) |
451 PASS Exception was thrown. | 511 PASS Exception was thrown. |
452 PASS code is 0 | 512 PASS code is 0 |
453 PASS ename is 'TransactionInactiveError' | 513 PASS ename is 'TransactionInactiveError' |
| 514 Exception message: The transaction has finished. |
454 readOnlyTransaction = db.transaction('store', 'readonly') | 515 readOnlyTransaction = db.transaction('store', 'readonly') |
455 request = readOnlyTransaction.objectStore('store').openCursor() | 516 request = readOnlyTransaction.objectStore('store').openCursor() |
456 cursorFromReadOnlyTransaction = request.result | 517 cursorFromReadOnlyTransaction = request.result |
457 | 518 |
458 One more IDBCursor.delete() test: | 519 One more IDBCursor.delete() test: |
459 This method throws a DOMException of type ReadOnlyError if the transaction which
this IDBCursor belongs to has its mode set to "readonly". | 520 This method throws a DOMException of type ReadOnlyError if the transaction which
this IDBCursor belongs to has its mode set to "readonly". |
460 Expecting exception from cursorFromReadOnlyTransaction.delete() | 521 Expecting exception from cursorFromReadOnlyTransaction.delete() |
461 PASS Exception was thrown. | 522 PASS Exception was thrown. |
462 PASS code is 0 | 523 PASS code is 0 |
463 PASS ename is 'ReadOnlyError' | 524 PASS ename is 'ReadOnlyError' |
| 525 Exception message: A write operation was attempted in a read-only transaction. |
464 | 526 |
465 One more IDBCursor.update() test: | 527 One more IDBCursor.update() test: |
466 This method throws a DOMException of type ReadOnlyError if the transaction which
this IDBCursor belongs to has its mode set to "readonly". | 528 This method throws a DOMException of type ReadOnlyError if the transaction which
this IDBCursor belongs to has its mode set to "readonly". |
467 Expecting exception from cursorFromReadOnlyTransaction.update({}) | 529 Expecting exception from cursorFromReadOnlyTransaction.update({}) |
468 PASS Exception was thrown. | 530 PASS Exception was thrown. |
469 PASS code is 0 | 531 PASS code is 0 |
470 PASS ename is 'ReadOnlyError' | 532 PASS ename is 'ReadOnlyError' |
| 533 Exception message: A write operation was attempted in a read-only transaction. |
471 | 534 |
472 3.2.8 Transaction | 535 3.2.8 Transaction |
473 | 536 |
474 IDBTransaction.abort() | 537 IDBTransaction.abort() |
475 If this transaction is finished, throw a DOMException of type InvalidStateError.
| 538 If this transaction is finished, throw a DOMException of type InvalidStateError.
|
476 Expecting exception from finishedTransaction.abort() | 539 Expecting exception from finishedTransaction.abort() |
477 PASS Exception was thrown. | 540 PASS Exception was thrown. |
478 PASS code is DOMException.INVALID_STATE_ERR | 541 PASS code is DOMException.INVALID_STATE_ERR |
479 PASS ename is 'InvalidStateError' | 542 PASS ename is 'InvalidStateError' |
| 543 Exception message: The transaction has finished. |
480 If the requested object store is not in this transaction's scope. | 544 If the requested object store is not in this transaction's scope. |
481 Expecting exception from db.transaction('store').objectStore('otherStore') | 545 Expecting exception from db.transaction('store').objectStore('otherStore') |
482 PASS Exception was thrown. | 546 PASS Exception was thrown. |
483 PASS code is DOMException.NOT_FOUND_ERR | 547 PASS code is DOMException.NOT_FOUND_ERR |
484 PASS ename is 'NotFoundError' | 548 PASS ename is 'NotFoundError' |
| 549 Exception message: The specified object store was not found. |
485 PASS successfullyParsed is true | 550 PASS successfullyParsed is true |
486 | 551 |
487 TEST COMPLETE | 552 TEST COMPLETE |
488 | 553 |
OLD | NEW |