summaryrefslogtreecommitdiffstats
path: root/devtools/client/storage/test/storage-listings-usercontextid.html
blob: d6eb6baf3cff7c51999f22da6afa3fc5310caf67 (plain)
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>