tor-browser

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

blob-delete-objectstore-db.any.js (1791B)


      1 // META: title=Blob Delete Object Store
      2 // META: script=resources/support.js
      3 'use strict';
      4 
      5 let key = "blob key";
      6 
      7 indexeddb_test(
      8    function upgrade(t, db) {
      9      const store0 = db.createObjectStore('store0');
     10      const store1 = db.createObjectStore('store1');
     11 
     12      const blobAContent = "First blob content";
     13      const blobA = new Blob([blobAContent], {"type" : "text/plain"});
     14 
     15      store0.put(blobA, key);
     16    },
     17    function success(t, db) {
     18      db.close();
     19      const request = indexedDB.open(db.name, 2);
     20 
     21      request.onupgradeneeded = t.step_func(function(e) {
     22        const db = e.target.result;
     23        db.deleteObjectStore('store0');
     24 
     25        request.onsuccess = t.step_func(function() {
     26          const blobBContent = "Second blob content";
     27          const trans = db.transaction('store1', 'readwrite');
     28          const store1 = trans.objectStore('store1');
     29          const blobB = new Blob([blobBContent], {"type" : "text/plain"});
     30          store1.put(blobB, key);
     31 
     32          trans.oncomplete = t.step_func(function() {
     33            db.close();
     34            const delete_request = indexedDB.deleteDatabase(db.name);
     35 
     36            // The test passes if it successfully completes.
     37            delete_request.onsuccess = t.step_func_done();
     38 
     39            delete_request.onerror = t.unreached_func("Request should not fail.");
     40          });
     41 
     42          trans.onabort = t.unreached_func("Transaction should not be aborted.");
     43        });
     44      });
     45      request.onsuccess = t.unreached_func("Request should not succeed without an upgrade.");
     46      request.onerror = t.unreached_func("Request should not fail.");
     47      request.onblocked = t.unreached_func("Request should not be blocked.");
     48    }, "Deleting an object store and a database containing blobs doesn't crash.");