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.");