tor-browser

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

worker-owner.js (1011B)


      1 const is_worker = !('window' in self);
      2 const parent_or_self = is_worker ? self : self.parent;
      3 
      4 function startWorkerAndObserveReports(worker_url, wait_for_report) {
      5  const worker = new Worker(worker_url);
      6  const result_promise = new Promise(resolve => {
      7    worker.onmessage = _ => resolve('success');
      8    worker.onerror = _ => resolve('error');
      9  });
     10  worker.postMessage("postMessage('reply to owner from worker');");
     11 
     12  const report_promise = new Promise(resolve => {
     13    const observer = new ReportingObserver(reports => {
     14      observer.disconnect();
     15      resolve(reports.map(r => r.toJSON()));
     16    });
     17    observer.observe();
     18  });
     19 
     20  if (wait_for_report) {
     21    Promise.all([result_promise, report_promise]).then(results => {
     22      parent_or_self.postMessage(results[1]);
     23    });
     24  } else {
     25    result_promise.then(result => {
     26      parent_or_self.postMessage([]);
     27    });
     28  }
     29 }
     30 
     31 if (is_worker) {
     32  onmessage = e => {
     33    startWorkerAndObserveReports(e.data.worker_url, e.data.wait_for_report);
     34  };
     35 }