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
content / test / data / browsing_data / storage_accessor.html [blame]
<html>
<script>
async function accessStorage() {
// Set cookie which persists across restart.
document.cookie = `persistent=persistent;max-age=3600;` +
'path=/;SameSite=None;Secure';
// Set a non-persistent cookie.
document.cookie = 'session_only=session_only; path=/;' +
'SameSite=None;Secure';
// Set a previously unseen cookie which has already expired.
document.cookie = 'expired=;expires=Thu, 01 Jan 1970 00:00:00 GMT;' +
'SameSite=None; Secure';
// Access local storage.
localStorage.setItem('foo', 'bar');
try {
// Third-party context WebSQL is disabled as of M97.
window.openDatabase('foo', '1.0', 'foo DB', 1024);
} catch (e) {}
// Access file system.
await new Promise(resolve => {
window.webkitRequestFileSystem(TEMPORARY, 1024, function (fs) {
fs.root.getFile('foo.txt', { create : true }, fileEntry => {
fileEntry.createWriter(function (fileWriter) {
fileWriter.onwriteend = () => resolve();
let blob = new Blob([1,2,3], { type: 'text/plain' });
fileWriter.write(blob);
});
},
);
}, () => resolve());
});
// Access service worker.
await navigator.serviceWorker.register("empty.js");
// Access cache storage.
await caches.open('test');
// Access Indexed DB.
await new Promise(resolve => {
let open = indexedDB.open('test');
open.onupgradeneeded = () => {
open.result.createObjectStore('store', { keyPath: 'id' });
}
open.onsuccess = () => {
let db = open.result;
let tx = db.transaction('store', 'readwrite');
let store = tx.objectStore('store');
store.put({ id: 42, value: 43 });
tx.oncomplete = () => {
db.close();
resolve();
};
}
});
return true;
}
</script>
<body>
</body>
</html>