parallel-cursors-upgrade.any.js (1599B)
1 // META: title=IndexedDB: Parallel iteration of cursors in upgradeneeded 2 // META: global=window,worker 3 // META: script=resources/support-promises.js 4 // META: timeout=long 5 6 'use strict'; 7 8 for (const cursorCount of [2, 20, 200, 2000]) { 9 promise_test(testCase => { 10 return createDatabase(testCase, (database, transaction) => { 11 const store = 12 database.createObjectStore('cache', {keyPath: 'key'}); 13 store.put({key: '42'}); 14 15 const promises = []; 16 17 for (let j = 0; j < 2; j += 1) { 18 const promise = new Promise((resolve, reject) => { 19 let request = null; 20 for (let i = 0; i < cursorCount / 2; i += 1) { 21 request = store.openCursor(); 22 } 23 24 let continued = false; 25 request.onsuccess = testCase.step_func(() => { 26 const cursor = request.result; 27 28 if (!continued) { 29 assert_equals(cursor.key, '42'); 30 assert_equals(cursor.value.key, '42'); 31 continued = true; 32 cursor.continue(); 33 } else { 34 assert_equals(cursor, null); 35 resolve(); 36 } 37 }); 38 request.onerror = () => reject(request.error); 39 }); 40 promises.push(promise); 41 } 42 return Promise.all(promises); 43 }).then(database => { 44 database.close(); 45 }); 46 }, `${cursorCount} cursors`); 47 }