tor-browser

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

indexeddb-worker.js (1685B)


      1 self.addEventListener('message', function(e) {
      2    var message = e.data;
      3    if (message.action === 'create') {
      4      e.waitUntil(deleteDB()
      5          .then(doIndexedDBTest)
      6          .then(function() {
      7              message.port.postMessage({ type: 'created' });
      8            })
      9          .catch(function(reason) {
     10              message.port.postMessage({ type: 'error', value: reason });
     11            }));
     12    } else if (message.action === 'cleanup') {
     13      e.waitUntil(deleteDB()
     14          .then(function() {
     15              message.port.postMessage({ type: 'done' });
     16            })
     17          .catch(function(reason) {
     18              message.port.postMessage({ type: 'error', value: reason });
     19            }));
     20    }
     21  });
     22 
     23 function deleteDB() {
     24  return new Promise(function(resolve, reject) {
     25      var delete_request = indexedDB.deleteDatabase('db');
     26 
     27      delete_request.onsuccess = resolve;
     28      delete_request.onerror = reject;
     29    });
     30 }
     31 
     32 function doIndexedDBTest(port) {
     33  return new Promise(function(resolve, reject) {
     34      var open_request = indexedDB.open('db');
     35 
     36      open_request.onerror = reject;
     37      open_request.onupgradeneeded = function() {
     38        var db = open_request.result;
     39        db.createObjectStore('store');
     40      };
     41      open_request.onsuccess = function() {
     42        var db = open_request.result;
     43        var tx = db.transaction('store', 'readwrite');
     44        var store = tx.objectStore('store');
     45        store.put('value', 'key');
     46 
     47        tx.onerror = function() {
     48            db.close();
     49            reject(tx.error);
     50          };
     51        tx.oncomplete = function() {
     52            db.close();
     53            resolve();
     54          };
     55      };
     56    });
     57 }