Skip to content

Instantly share code, notes, and snippets.

@tanriol
Created November 2, 2017 16:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tanriol/9f27f3482d04b5ca7beff821fb966d73 to your computer and use it in GitHub Desktop.
Save tanriol/9f27f3482d04b5ca7beff821fb966d73 to your computer and use it in GitHub Desktop.
Firefox IDB pools illustration
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
function createDB(store, version, storage_class) {
console.log("start", store);
let options = {version};
if(storage_class !== undefined)
options.storage = storage_class;
let opener = indexedDB.open("MyDatabase", options);
opener.onupgradeneeded = function() {
let db = opener.result;
console.log("onupgradeneeded", store, db.objectStoreNames);
db.createObjectStore(store);
};
opener.onsuccess = function() {
let db = opener.result;
console.log("onsuccess", store, db.objectStoreNames);
};
}
// Adapt setTimeout for Promises
function timeout(delay) {
return new Promise(resolve => setTimeout(() => resolve(), delay));
}
async function test() {
console.log("start");
await timeout(1000);
createDB("missing", 1);
await timeout(1000);
createDB("default", 2, "default");
await timeout(1000);
createDB("temporary", 3, "temporary");
await timeout(1000);
createDB("persistent", 4, "persistent");
await timeout(30000);
console.log("deleting databases");
indexedDB.deleteDatabase("MyDatabase");
await timeout(100);
indexedDB.deleteDatabase("MyDatabase", {storage: 'temporary'});
await timeout(100);
indexedDB.deleteDatabase("MyDatabase", {storage: 'persistent'});
//indexedDB.deleteDatabase("MyDatabase", {storage: 'permanent'});
await timeout(100);
indexedDB.deleteDatabase("MyDatabase", {storage: 'default'});
console.log("all dbs should be deleted");
}
test()
</script>
</head>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment