1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
<!DOCTYPE HTML>
<html>
<!--
Storage inspector front end for userContextId - tests
-->
<head>
<meta charset="utf-8">
<title>Storage inspector test for listing hosts and storages</title>
</head>
<body>
<iframe src="http://sectest1.example.org/browser/devtools/client/storage/test/storage-unsecured-iframe-usercontextid.html"></iframe>
<iframe src="https://sectest1.example.org:443/browser/devtools/client/storage/test/storage-secured-iframe-usercontextid.html"></iframe>
<script type="application/javascript">
"use strict";
const partialHostname = location.hostname.match(/^[^.]+(\..*)$/)[1];
const cookieExpiresTime1 = 2000000000000;
const cookieExpiresTime2 = 2000000001000;
// Setting up some cookies to eat.
document.cookie = "c1uc1=foobar; expires=" +
new Date(cookieExpiresTime1).toGMTString() + "; path=/browser";
document.cookie = "cs2uc1=sessionCookie; path=/; domain=" + partialHostname;
document.cookie = "c3uc1=foobar-2; expires=" +
new Date(cookieExpiresTime2).toGMTString() + "; path=/";
// ... and some local storage items ..
localStorage.setItem("ls1uc1", "foobar");
localStorage.setItem("ls2uc1", "foobar-2");
// ... and finally some session storage items too
sessionStorage.setItem("ss1uc1", "foobar-3");
dump("added cookies and storage from main page\n");
const idbGenerator = async function () {
let request = indexedDB.open("idb1uc1", 1);
request.onerror = function() {
throw new Error("error opening db connection");
};
const db = await new Promise(done => {
request.onupgradeneeded = event => {
const _db = event.target.result;
const store1 = _db.createObjectStore("obj1uc1", { keyPath: "id" });
store1.createIndex("name", "name", { unique: false });
store1.createIndex("email", "email", { unique: true });
_db.createObjectStore("obj2uc1", { keyPath: "id2" });
store1.transaction.oncomplete = () => {
done(_db);
};
};
});
// Prevents AbortError
await new Promise(done => {
request.onsuccess = done;
});
const transaction = db.transaction(["obj1uc1", "obj2uc1"], "readwrite");
const store1 = transaction.objectStore("obj1uc1");
const store2 = transaction.objectStore("obj2uc1");
store1.add({id: 1, name: "foo", email: "foo@bar.com"});
store1.add({id: 2, name: "foo2", email: "foo2@bar.com"});
store1.add({id: 3, name: "foo2", email: "foo3@bar.com"});
store2.add({
id2: 1,
name: "foo",
email: "foo@bar.com",
extra: "baz"
});
// Prevents AbortError during close()
await new Promise(success => {
transaction.oncomplete = success;
});
db.close();
request = indexedDB.open("idb2uc1", 1);
const db2 = await new Promise(done => {
request.onupgradeneeded = event => {
const _db2 = event.target.result;
const store3 = _db2.createObjectStore("obj3uc1", { keyPath: "id3" });
store3.createIndex("name2", "name2", { unique: true });
store3.transaction.oncomplete = () => {
done(_db2);
}
};
});
// Prevents AbortError during close()
await new Promise(done => {
request.onsuccess = done;
});
db2.close();
dump("added indexedDB from main page\n");
};
function deleteDB(dbName) {
return new Promise(resolve => {
dump("removing database " + dbName + " from " + document.location + "\n");
indexedDB.deleteDatabase(dbName).onsuccess = resolve;
});
}
async function fetchPut(cache, url) {
const response = await fetch(url);
await cache.put(url, response);
}
const cacheGenerator = async function () {
const cache = await caches.open("plopuc1");
await fetchPut(cache, "404_cached_file.js");
await fetchPut(cache, "browser_storage_basic.js");
};
window.setup = async function () {
await idbGenerator();
if (window.caches) {
await cacheGenerator();
}
};
window.clear = async function () {
await deleteDB("idb1uc1");
await deleteDB("idb2uc1");
if (window.caches) {
await caches.delete("plopuc1");
}
dump("removed indexedDB and cache data from " + document.location + "\n");
};
</script>
</body>
</html>
|