tor-browser

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

utils.js (1350B)


      1 // Utilities
      2 // =========
      3 
      4 // Helper that uses FileReader or FileReaderSync based on context and returns
      5 // a Promise that resolves with the text or rejects with error.
      6 function readAsText(blob) {
      7  if (typeof FileReader !== "undefined") {
      8    return new Promise(function (resolve, reject) {
      9      var fs = new FileReader();
     10      fs.onload = function () {
     11        resolve(fs.result);
     12      };
     13      fs.onerror = reject;
     14      fs.readAsText(blob);
     15    });
     16  } else {
     17    var fs = new FileReaderSync();
     18    return Promise.resolve(fs.readAsText(blob));
     19  }
     20 }
     21 
     22 function readAsArrayBuffer(blob) {
     23  if (typeof FileReader !== "undefined") {
     24    return new Promise(function (resolve, reject) {
     25      var fs = new FileReader();
     26      fs.onload = function () {
     27        resolve(fs.result);
     28      };
     29      fs.onerror = reject;
     30      fs.readAsArrayBuffer(blob);
     31    });
     32  } else {
     33    var fs = new FileReaderSync();
     34    return Promise.resolve(fs.readAsArrayBuffer(blob));
     35  }
     36 }
     37 
     38 function waitForState(worker, state, context) {
     39  return new Promise(resolve => {
     40    if (worker.state === state) {
     41      resolve(context);
     42      return;
     43    }
     44    worker.addEventListener("statechange", function onStateChange() {
     45      if (worker.state === state) {
     46        worker.removeEventListener("statechange", onStateChange);
     47        resolve(context);
     48      }
     49    });
     50  });
     51 }