tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

permission-helper.js (855B)


      1 export function permissionTest(origin, sender) {
      2  function ping(message) {
      3    if (!globalThis.WorkerGlobalScope) {
      4      window.top.postMessage(message, origin);
      5    } else {
      6      globalThis.postMessage(message);
      7    }
      8    n.close();
      9  }
     10 
     11  const n = new Notification(sender);
     12  const permission = Notification.permission;
     13  n.onshow = () => ping({ sender, permission, shown: true });
     14  n.onerror = () => ping({ sender, permission, shown: false });
     15 
     16  if (!globalThis.WorkerGlobalScope) {
     17    Notification.requestPermission().then(permission => ping({ sender: `${sender}Request`, permission }));
     18 
     19    const workerUrl = new URL(`./permission-worker.js`, import.meta.url);
     20    workerUrl.searchParams.set("sender", `${sender}Worker`);
     21    const worker = new Worker(workerUrl, { type: "module" });
     22    worker.onmessage = ev => ping(ev.data, origin);
     23  }
     24 }