OLD | NEW |
1 if (this.importScripts) { | 1 if (this.importScripts) { |
2 importScripts('../../../resources/testharness.js'); | 2 importScripts('../../../resources/testharness.js'); |
3 importScripts('generic-idb-operations.js'); | 3 importScripts('generic-idb-operations.js'); |
4 importScripts('observer-helpers.js'); | 4 importScripts('observer-helpers.js'); |
5 importScripts('testharness-helpers.js'); | 5 importScripts('testharness-helpers.js'); |
6 } | 6 } |
7 | 7 |
8 setup({timeout: 20000}); | 8 setup({timeout: 20000}); |
9 | 9 |
10 var openDB = function(t, dbName, openFunc) { | 10 var openDB = function(t, dbName, openFunc) { |
11 var openRequest = indexedDB.open(dbName); | 11 var openRequest = indexedDB.open(dbName); |
12 openRequest.onupgradeneeded = t.unreached_func('upgrade should not be needed')
; | 12 openRequest.onupgradeneeded = t.unreached_func('upgrade should not be needed')
; |
13 openRequest.onsuccess = t.step_func(function() { | 13 openRequest.onsuccess = t.step_func(function() { |
14 openFunc(openRequest.result); | 14 openFunc(openRequest.result); |
15 }); | 15 }); |
16 openRequest.onerror = t.unreached_func('opening database should not fail'); | 16 openRequest.onerror = t.unreached_func('opening database should not fail'); |
17 }; | 17 }; |
18 | 18 |
19 indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac
k) { | 19 indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac
k) { |
20 var expectedChanges = { | 20 var expectedChanges = { |
21 dbName: db1_name, | 21 dbName: db1_name, |
22 records: { | 22 records: { |
23 'store1': [{type: 'delete', key: {lower: 'a', upper: 'b'}}, | 23 'store1': [{type: 'delete', key: {lower: 'a', upper: 'b'}}, |
24 {type: 'put', key: 'a'}], | 24 {type: 'put', key: 'a'}], |
25 'store2': [{type: 'add', key: 'z'}] | 25 'store2': [{type: 'add', key: 'z'}] |
26 } | 26 } |
27 }; | 27 }; |
28 var connection = null; | 28 var connection = null; |
| 29 var observedTimes = 0; |
29 var observeFunction = function(changes) { | 30 var observeFunction = function(changes) { |
30 compareChanges(changes, expectedChanges); | 31 assert_true(connection != null, "Observer called before db opened."); |
31 assert_true(connection != null); | 32 observedTimes++; |
| 33 assert_equals(1, observedTimes, "Observer was called after calling unobserve
."); |
| 34 assertChangesEqual(changes, expectedChanges); |
32 obs.unobserve(connection); | 35 obs.unobserve(connection); |
33 t.done(); | 36 t.done(); |
34 }; | 37 }; |
35 | 38 |
36 var obs = new IDBObserver(t.step_func(observeFunction)); | 39 var obs = new IDBObserver(t.step_func(observeFunction)); |
37 | 40 |
38 openDB(t, db1_name, t.step_func(function(db) { | 41 openDB(t, db1_name, t.step_func(function(db) { |
39 connection = db; | 42 connection = db; |
40 var txn = db.transaction(['store1', 'store2'], 'readwrite'); | 43 var txn = db.transaction(['store1', 'store2'], 'readwrite'); |
41 | 44 |
(...skipping 19 matching lines...) Expand all Loading... |
61 | 64 |
62 indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac
k) { | 65 indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac
k) { |
63 var expectedChanges = { | 66 var expectedChanges = { |
64 dbName: db1_name, | 67 dbName: db1_name, |
65 records: { | 68 records: { |
66 'store2': [{type: 'add', key: 'z'}] | 69 'store2': [{type: 'add', key: 'z'}] |
67 } | 70 } |
68 }; | 71 }; |
69 | 72 |
70 var connection = null; | 73 var connection = null; |
| 74 var observedTimes = 0; |
71 var observeFunction = function(changes) { | 75 var observeFunction = function(changes) { |
72 compareChanges(changes, expectedChanges); | 76 assert_true(connection != null, "Observer called before db opened."); |
73 assert_true(connection != null); | 77 observedTimes++; |
| 78 assert_equals(1, observedTimes, "Observer was called after calling unobserve
."); |
| 79 assertChangesEqual(changes, expectedChanges); |
74 obs.unobserve(connection); | 80 obs.unobserve(connection); |
75 t.done(); | 81 t.done(); |
76 }; | 82 }; |
77 | 83 |
78 var obs = new IDBObserver(t.step_func(observeFunction)); | 84 var obs = new IDBObserver(t.step_func(observeFunction)); |
79 | 85 |
80 openDB(t, db1_name, t.step_func(function(db) { | 86 openDB(t, db1_name, t.step_func(function(db) { |
81 connection = db; | 87 connection = db; |
82 var txn = db.transaction(['store2'], 'readonly'); | 88 var txn = db.transaction(['store2'], 'readonly'); |
83 obs.observe(db, txn, {operationTypes: ['add']}); | 89 obs.observe(db, txn, {operationTypes: ['add']}); |
84 txn.oncomplete = observers_added_callback; | 90 txn.oncomplete = observers_added_callback; |
85 txn.onerror = t.unreached_func('transaction should not fail') | 91 txn.onerror = t.unreached_func('transaction should not fail') |
86 })); | 92 })); |
87 }, 'IDB Observers: Operation filtering'); | 93 }, 'IDB Observers: Operation filtering'); |
88 | 94 |
89 indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac
k) { | 95 indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac
k) { |
90 var expectedChanges = { | 96 var expectedChanges = { |
91 dbName: db1_name, | 97 dbName: db1_name, |
92 records: { | 98 records: { |
| 99 'store2': [{type: 'add', key: 'z', value: 'z'}] |
| 100 } |
| 101 }; |
| 102 |
| 103 var connection = null; |
| 104 var observedTimes = 0; |
| 105 var observeFunction = function(changes) { |
| 106 assert_true(connection != null, "Observer called before db opened."); |
| 107 observedTimes++; |
| 108 assert_equals(1, observedTimes, "Observer was called after calling unobserve
."); |
| 109 assertChangesEqual(changes, expectedChanges); |
| 110 obs.unobserve(connection); |
| 111 t.done(); |
| 112 }; |
| 113 |
| 114 var obs = new IDBObserver(t.step_func(observeFunction)); |
| 115 |
| 116 openDB(t, db1_name, t.step_func(function(db) { |
| 117 connection = db; |
| 118 var txn = db.transaction(['store2'], 'readonly'); |
| 119 obs.observe(db, txn, {operationTypes: ['add'], values: true}); |
| 120 txn.oncomplete = observers_added_callback; |
| 121 txn.onerror = t.unreached_func('transaction should not fail') |
| 122 })); |
| 123 }, 'IDB Observers: Values'); |
| 124 |
| 125 |
| 126 indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac
k) { |
| 127 var expectedChanges = { |
| 128 dbName: db1_name, |
| 129 records: { |
| 130 'store2': [{type: 'add', key: 'z'}], |
| 131 } |
| 132 }; |
| 133 |
| 134 var connection = null; |
| 135 var observedTimes = 0; |
| 136 var observeFunction = function(changes) { |
| 137 assert_true(connection != null, "Observer called before db opened."); |
| 138 observedTimes++; |
| 139 assert_equals(1, observedTimes, "Observer was called after calling unobserve
."); |
| 140 assertChangesEqual(changes, expectedChanges); |
| 141 obs.unobserve(connection); |
| 142 assert_true(changes.transaction != null); |
| 143 var store2 = changes.transaction.objectStore('store2'); |
| 144 var request = store2.get('z'); |
| 145 request.onsuccess = t.step_func(function() { |
| 146 assert_equals(request.result, 'z'); |
| 147 t.done(); |
| 148 }); |
| 149 }; |
| 150 |
| 151 var obs = new IDBObserver(t.step_func(observeFunction)); |
| 152 |
| 153 openDB(t, db1_name, t.step_func(function(db) { |
| 154 connection = db; |
| 155 var txn = db.transaction(['store2'], 'readonly'); |
| 156 obs.observe(db, txn, {operationTypes: ['add'], transaction: true}); |
| 157 txn.oncomplete = observers_added_callback; |
| 158 txn.onerror = t.unreached_func('transaction should not fail') |
| 159 })); |
| 160 }, 'IDB Observers: Transaction'); |
| 161 |
| 162 indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac
k) { |
| 163 var expectedChanges = { |
| 164 dbName: db1_name, |
| 165 records: { |
93 'store2': [{type: 'add', key: 'z'}] | 166 'store2': [{type: 'add', key: 'z'}] |
94 } | 167 } |
95 }; | 168 }; |
96 | 169 |
97 var connection = null; | 170 var connection = null; |
| 171 var observedTimes = 0; |
98 var observeFunction = function(changes) { | 172 var observeFunction = function(changes) { |
99 compareChanges(changes, expectedChanges); | 173 assert_true(connection != null, "Observer called before db opened."); |
100 assert_true(connection != null); | 174 observedTimes++; |
| 175 assert_equals(1, observedTimes, "Observer was called after calling unobserve
."); |
| 176 assertChangesEqual(changes, expectedChanges); |
101 obs.unobserve(connection); | 177 obs.unobserve(connection); |
102 t.done(); | 178 t.done(); |
103 }; | 179 }; |
104 | 180 |
105 var obs = new IDBObserver(t.step_func(observeFunction)); | 181 var obs = new IDBObserver(t.step_func(observeFunction)); |
106 | 182 |
107 openDB(t, db1_name, t.step_func(function(db) { | 183 openDB(t, db1_name, t.step_func(function(db) { |
108 connection = db; | 184 connection = db; |
109 var txn = db.transaction(['store2'], 'readonly'); | 185 var txn = db.transaction(['store2'], 'readonly'); |
110 obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); | 186 obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
(...skipping 21 matching lines...) Expand all Loading... |
132 }; | 208 }; |
133 | 209 |
134 var observers_added_barrier = create_barrier(observers_added_callback); | 210 var observers_added_barrier = create_barrier(observers_added_callback); |
135 | 211 |
136 var connection1 = null; | 212 var connection1 = null; |
137 var connection2 = null; | 213 var connection2 = null; |
138 var pendingObserves = 2; | 214 var pendingObserves = 2; |
139 var observeFunction = function(changes) { | 215 var observeFunction = function(changes) { |
140 pendingObserves = pendingObserves - 1; | 216 pendingObserves = pendingObserves - 1; |
141 if (changes.database.name === db1_name) { | 217 if (changes.database.name === db1_name) { |
142 compareChanges(changes, expectedChanges1); | 218 assertChangesEqual(changes, expectedChanges1); |
143 assert_true(connection1 != null); | 219 assert_true(connection1 != null); |
144 obs.unobserve(connection1); | 220 obs.unobserve(connection1); |
145 } else if (changes.database.name === db2_name) { | 221 } else if (changes.database.name === db2_name) { |
146 compareChanges(changes, expectedChanges2); | 222 assertChangesEqual(changes, expectedChanges2); |
147 assert_true(connection2 != null); | 223 assert_true(connection2 != null); |
148 obs.unobserve(connection2); | 224 obs.unobserve(connection2); |
149 } | 225 } |
150 if (pendingObserves === 0) { | 226 if (pendingObserves === 0) { |
151 t.done(); | 227 t.done(); |
152 } else if (pendingObserves < 0) { | 228 } else if (pendingObserves < 0) { |
153 assert_unreached("incorrect pendingObserves"); | 229 assert_unreached("incorrect pendingObserves"); |
154 } | 230 } |
155 }; | 231 }; |
156 | 232 |
(...skipping 23 matching lines...) Expand all Loading... |
180 records: { | 256 records: { |
181 'store1': [{type: 'delete', key: {lower: 'a', upper: 'b'}}, | 257 'store1': [{type: 'delete', key: {lower: 'a', upper: 'b'}}, |
182 {type: 'put', key: 'a'}], | 258 {type: 'put', key: 'a'}], |
183 'store2': [{type: 'add', key: 'z'}] | 259 'store2': [{type: 'add', key: 'z'}] |
184 } | 260 } |
185 }; | 261 }; |
186 | 262 |
187 var connection = null; | 263 var connection = null; |
188 var pendingObserves = 2; | 264 var pendingObserves = 2; |
189 var observeFunction = function(changes) { | 265 var observeFunction = function(changes) { |
190 compareChanges(changes, expectedChanges); | 266 assertChangesEqual(changes, expectedChanges); |
191 pendingObserves = pendingObserves - 1; | 267 pendingObserves = pendingObserves - 1; |
192 if (pendingObserves === 0) { | 268 if (pendingObserves === 0) { |
193 assert_true(connection != null); | 269 assert_true(connection != null, "Observer called before db opened."); |
194 obs.unobserve(connection); | 270 obs.unobserve(connection); |
195 t.done(); | 271 t.done(); |
196 } else if (pendingObserves < 0) { | 272 } else if (pendingObserves < 0) { |
197 assert_unreached("incorrect pendingObserves"); | 273 assert_unreached("incorrect pendingObserves"); |
198 } | 274 } |
199 }; | 275 }; |
200 | 276 |
201 var obs = new IDBObserver(t.step_func(observeFunction)); | 277 var obs = new IDBObserver(t.step_func(observeFunction)); |
202 | 278 |
203 openDB(t, db1_name, t.step_func(function(db) { | 279 openDB(t, db1_name, t.step_func(function(db) { |
(...skipping 16 matching lines...) Expand all Loading... |
220 var expectedChanges2 = { | 296 var expectedChanges2 = { |
221 dbName: db1_name, | 297 dbName: db1_name, |
222 records: { | 298 records: { |
223 'store2': [{type: 'add', key: 'z'}] | 299 'store2': [{type: 'add', key: 'z'}] |
224 } | 300 } |
225 }; | 301 }; |
226 | 302 |
227 var connection = null; | 303 var connection = null; |
228 var changeNumber = 0; | 304 var changeNumber = 0; |
229 var observeFunction = function(changes) { | 305 var observeFunction = function(changes) { |
230 assert_true(connection != null); | 306 assert_true(connection != null, "Observer called before db opened."); |
231 if (changeNumber === 0) { | 307 if (changes.records.has('store1')) { |
232 compareChanges(changes, expectedChanges1); | 308 assertChangesEqual(changes, expectedChanges1); |
233 } else if(changeNumber === 1) { | 309 } else if(changes.records.has('store2')) { |
234 compareChanges(changes, expectedChanges2); | 310 assertChangesEqual(changes, expectedChanges2); |
| 311 } |
| 312 ++changeNumber; |
| 313 assert_less_than_equal(changeNumber, 2, "incorrect pendingObserves"); |
| 314 if (changeNumber == 2) { |
235 obs.unobserve(connection); | 315 obs.unobserve(connection); |
236 t.done(); | 316 t.done(); |
237 } | 317 } |
238 ++changeNumber; | |
239 assert_less_than_equal(changeNumber, 1, "incorrect pendingObserves"); | |
240 }; | 318 }; |
241 | 319 |
242 var obs = new IDBObserver(t.step_func(observeFunction)); | 320 var obs = new IDBObserver(t.step_func(observeFunction)); |
243 | 321 |
244 openDB(t, db1_name, t.step_func(function(db) { | 322 openDB(t, db1_name, t.step_func(function(db) { |
245 connection = db; | 323 connection = db; |
246 var txn = db.transaction(['store1', 'store2'], 'readonly'); | 324 var txn = db.transaction(['store1', 'store2'], 'readonly'); |
247 obs.observe(db, txn, {operationTypes: ['put']}); | 325 obs.observe(db, txn, {operationTypes: ['put']}); |
248 obs.observe(db, txn, {operationTypes: ['add']}); | 326 obs.observe(db, txn, {operationTypes: ['add']}); |
249 txn.oncomplete = observers_added_callback; | 327 txn.oncomplete = observers_added_callback; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 var connection3 = null; | 365 var connection3 = null; |
288 var observers_added_barrier = create_barrier(observers_added_callback); | 366 var observers_added_barrier = create_barrier(observers_added_callback); |
289 | 367 |
290 var pendingObserves = 4; | 368 var pendingObserves = 4; |
291 var observeFunction = function(changes) { | 369 var observeFunction = function(changes) { |
292 pendingObserves = pendingObserves - 1; | 370 pendingObserves = pendingObserves - 1; |
293 var firstRound = pendingObserves != 0; | 371 var firstRound = pendingObserves != 0; |
294 | 372 |
295 if (changes.database === connection1) { | 373 if (changes.database === connection1) { |
296 assert_true(firstRound, "connection 1 should have been unobserved"); | 374 assert_true(firstRound, "connection 1 should have been unobserved"); |
297 compareChanges(changes, partOneChanges1); | 375 assertChangesEqual(changes, partOneChanges1); |
298 obs.unobserve(connection1); | 376 obs.unobserve(connection1); |
299 } else if (changes.database === connection2) { | 377 } else if (changes.database === connection2) { |
300 if (firstRound) | 378 if (firstRound) |
301 compareChanges(changes, partOneChanges2); | 379 assertChangesEqual(changes, partOneChanges2); |
302 else | 380 else |
303 compareChanges(changes, partTwoChanges2); | 381 assertChangesEqual(changes, partTwoChanges2); |
304 } else if (changes.database === connection3) { | 382 } else if (changes.database === connection3) { |
305 assert_true(firstRound, "connection 3 should have been unobserved "); | 383 assert_true(firstRound, "connection 3 should have been unobserved "); |
306 compareChanges(changes, partOneChanges3); | 384 assertChangesEqual(changes, partOneChanges3); |
307 obs.unobserve(connection3); | 385 obs.unobserve(connection3); |
308 } else { | 386 } else { |
309 assert_unreached('Unknown connection supplied with changes.'); | 387 assert_unreached('Unknown connection supplied with changes.'); |
310 } | 388 } |
311 if (pendingObserves === 0) { | 389 if (pendingObserves === 0) { |
312 t.done(); | 390 t.done(); |
313 } else if (pendingObserves < 0) { | 391 } else if (pendingObserves < 0) { |
314 assert_unreached("incorrect pendingObserves"); | 392 assert_unreached("incorrect pendingObserves"); |
315 } | 393 } |
316 }; | 394 }; |
(...skipping 23 matching lines...) Expand all Loading... |
340 obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); | 418 obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
341 txn.oncomplete = cb3; | 419 txn.oncomplete = cb3; |
342 txn.onerror = t.unreached_func('transaction should not fail') | 420 txn.onerror = t.unreached_func('transaction should not fail') |
343 })); | 421 })); |
344 }, 'IDB Observers: Three connections, unobserve two'); | 422 }, 'IDB Observers: Three connections, unobserve two'); |
345 | 423 |
346 indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac
k) { | 424 indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac
k) { |
347 var connection1 = null; | 425 var connection1 = null; |
348 var connection2 = null; | 426 var connection2 = null; |
349 | 427 |
| 428 var observedTimes = 0; |
350 var observeFunction = function(changes) { | 429 var observeFunction = function(changes) { |
| 430 assert_true(connection2 != null, "Observer called before db opened."); |
| 431 observedTimes++; |
| 432 assert_equals(1, observedTimes, "Observer was called after calling unobserve
."); |
351 assert_equals(changes.database, connection2); | 433 assert_equals(changes.database, connection2); |
352 obs.unobserve(connection2); | 434 obs.unobserve(connection2); |
353 t.done(); | 435 t.done(); |
354 }; | 436 }; |
355 | 437 |
356 var obs = new IDBObserver(t.step_func(observeFunction)); | 438 var obs = new IDBObserver(t.step_func(observeFunction)); |
357 | 439 |
358 openDB(t, db1_name, t.step_func(function(db) { | 440 openDB(t, db1_name, t.step_func(function(db) { |
359 connection1 = db; | 441 connection1 = db; |
360 var txn = db.transaction(['store1'], 'readonly'); | 442 var txn = db.transaction(['store1'], 'readonly'); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 var connection2 = null; | 508 var connection2 = null; |
427 var observers_added_barrier = create_barrier(observers_added_callback); | 509 var observers_added_barrier = create_barrier(observers_added_callback); |
428 | 510 |
429 var connection1Observes = 0; | 511 var connection1Observes = 0; |
430 var connection2Observes = 0; | 512 var connection2Observes = 0; |
431 var observeFunction = function(changes) { | 513 var observeFunction = function(changes) { |
432 if (changes.database === connection1) { | 514 if (changes.database === connection1) { |
433 connection1Observes = connection1Observes + 1; | 515 connection1Observes = connection1Observes + 1; |
434 assert_true(connection1Observes <= 2); | 516 assert_true(connection1Observes <= 2); |
435 if (changes.records.has('store1')) { | 517 if (changes.records.has('store1')) { |
436 compareChanges(changes, expectedChanges1); | 518 assertChangesEqual(changes, expectedChanges1); |
437 } else if (changes.records.has('store2')) { | 519 } else if (changes.records.has('store2')) { |
438 compareChanges(changes, expectedChanges2); | 520 assertChangesEqual(changes, expectedChanges2); |
439 } else { | 521 } else { |
440 assert_unreached("unknown changes"); | 522 assert_unreached("unknown changes"); |
441 } | 523 } |
442 if (connection1Observes === 2) { | 524 if (connection1Observes === 2) { |
443 obs.unobserve(connection1); | 525 obs.unobserve(connection1); |
444 } | 526 } |
445 } else if (changes.database === connection2) { | 527 } else if (changes.database === connection2) { |
446 connection2Observes = connection2Observes + 1; | 528 connection2Observes = connection2Observes + 1; |
447 if (connection2Observes > 1) { | 529 if (connection2Observes > 1) { |
448 t.done(); | 530 t.done(); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
498 var connection2 = null; | 580 var connection2 = null; |
499 var observers_added_barrier = create_barrier(observers_added_callback); | 581 var observers_added_barrier = create_barrier(observers_added_callback); |
500 | 582 |
501 var connection1Observes = 0; | 583 var connection1Observes = 0; |
502 var connection2Observes = 0; | 584 var connection2Observes = 0; |
503 var observeFunction = function(changes) { | 585 var observeFunction = function(changes) { |
504 if (changes.database === connection1) { | 586 if (changes.database === connection1) { |
505 connection1Observes = connection1Observes + 1; | 587 connection1Observes = connection1Observes + 1; |
506 assert_true(connection1Observes <= 2); | 588 assert_true(connection1Observes <= 2); |
507 if (changes.records.has('store1')) { | 589 if (changes.records.has('store1')) { |
508 compareChanges(changes, expectedChanges1); | 590 assertChangesEqual(changes, expectedChanges1); |
509 } else if (changes.records.has('store2')) { | 591 } else if (changes.records.has('store2')) { |
510 compareChanges(changes, expectedChanges2); | 592 assertChangesEqual(changes, expectedChanges2); |
511 } else { | 593 } else { |
512 assert_unreached("unknown changes"); | 594 assert_unreached("unknown changes"); |
513 } | 595 } |
514 if (connection1Observes === 2) { | 596 if (connection1Observes === 2) { |
515 connection1.close(); | 597 connection1.close(); |
516 } | 598 } |
517 } else if (changes.database === connection2) { | 599 } else if (changes.database === connection2) { |
518 connection2Observes = connection2Observes + 1; | 600 connection2Observes = connection2Observes + 1; |
519 if (connection2Observes > 1) { | 601 if (connection2Observes > 1) { |
520 t.done(); | 602 t.done(); |
(...skipping 24 matching lines...) Expand all Loading... |
545 openDB(t, db2_name, t.step_func(function(db) { | 627 openDB(t, db2_name, t.step_func(function(db) { |
546 connection2 = db; | 628 connection2 = db; |
547 var txn = db.transaction(['store3'], 'readonly'); | 629 var txn = db.transaction(['store3'], 'readonly'); |
548 obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); | 630 obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
549 txn.oncomplete = cb3; | 631 txn.oncomplete = cb3; |
550 txn.onerror = t.unreached_func('transaction should not fail'); | 632 txn.onerror = t.unreached_func('transaction should not fail'); |
551 })); | 633 })); |
552 }, 'IDB Observers: Close connection removes observers'); | 634 }, 'IDB Observers: Close connection removes observers'); |
553 | 635 |
554 done(); | 636 done(); |
OLD | NEW |