tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }