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
content / test / data / browsing_data / site_data_worker.js [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
async function hasFileSystemAccess() {
try {
let dir = await navigator.storage.getDirectory();
await dir.getFileHandle("worker.txt", { create: false });
return true;
} catch (e) {
return false;
}
}
async function setFileSystemAccess() {
try {
let dir = await navigator.storage.getDirectory();
await dir.getFileHandle("worker.txt", { create: true });
return true;
} catch (e) {
return false;
}
}
async function setIndexedDb() {
return new Promise((resolve) => {
let open = indexedDB.open('worker_db', 2);
open.onupgradeneeded = function () {
open.result.createObjectStore('store');
}
open.onsuccess = function () {
open.result.close();
resolve(true);
}
open.onerror = (e) => {
resolve(false);
}
});
}
async function hasIndexedDb() {
return new Promise((resolve) => {
let open = indexedDB.open('worker_db');
open.onsuccess = function () {
let hasStore = open.result.objectStoreNames.contains('store');
open.result.close();
resolve(hasStore);
}
open.onerror = () => resolve(false);
});
}
async function setCacheStorage() {
try {
let cache = await caches.open("worker_cache")
await cache.put("/foo", new Response("bar"))
return true;
} catch {
return false;
}
}
async function hasCacheStorage() {
try {
let cache = await caches.open("worker_cache")
let keys = await cache.keys()
return keys.length > 0;
} catch {
return false;
}
}
onmessage = async function (e) {
let result = await this[e.data]();
postMessage(result);
}