tor-browser

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

xhr_worker.js (2252B)


      1 /**
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/publicdomain/zero/1.0/
      4 */
      5 var xhr = new XMLHttpRequest();
      6 
      7 function onload(event) {
      8  if (event.target != xhr) {
      9    throw new Error("onload event.target != xhr");
     10  }
     11 
     12  if (event.target.status != 200) {
     13    const message = { type: "error", error: event.target.status };
     14    postMessage(message);
     15  }
     16 
     17  const message = { type: "load", data: xhr.responseText };
     18  postMessage(message);
     19 }
     20 
     21 xhr.onload = onload;
     22 xhr.addEventListener("load", onload);
     23 xhr.removeEventListener("load", onload);
     24 if (!xhr.onload) {
     25  const message = { type: "error", error: "Lost message listener!" };
     26  postMessage(message);
     27 }
     28 
     29 xhr.onerror = function (event) {
     30  if (event.target != xhr) {
     31    throw new Error("onerror event.target != xhr");
     32  }
     33  var message = { type: "error", error: event.target.status };
     34  postMessage(message);
     35 };
     36 // eslint-disable-next-line no-self-assign
     37 xhr.onerror = xhr.onerror;
     38 // eslint-disable-next-line no-self-compare
     39 if (!xhr.onerror || xhr.onerror != xhr.onerror) {
     40  throw new Error("onerror wasn't set properly");
     41 }
     42 
     43 function onprogress(event) {
     44  if (event.target != xhr) {
     45    throw new Error("onprogress event.target != xhr");
     46  }
     47  const message = {
     48    type: "progress",
     49    current: event.loaded,
     50    total: event.total,
     51  };
     52  postMessage(message);
     53 }
     54 xhr.addEventListener("progress", onprogress);
     55 
     56 xhr.addEventListener("foopety", function () {});
     57 xhr.removeEventListener("doopety", function () {});
     58 
     59 xhr.onloadend = function () {
     60  const message = { type: "loadend" };
     61  postMessage(message);
     62 };
     63 
     64 var upload = xhr.upload;
     65 upload.onprogress = function () {};
     66 upload.addEventListener("foo", function () {});
     67 upload.removeEventListener("foo", function () {});
     68 upload.addEventListener("load", function () {});
     69 upload.removeEventListener("foo", function () {});
     70 upload.onload = function () {
     71  const message = { type: "upload.load" };
     72  postMessage(message);
     73 };
     74 
     75 onmessage = function (event) {
     76  if (xhr.DONE != 4 || XMLHttpRequest.DONE != 4) {
     77    throw new Error("xhr constants not correct!");
     78  }
     79  if (xhr.readystate > xhr.UNSENT) {
     80    throw new Error("XHR already running!");
     81  }
     82  xhr.open("POST", event.data);
     83  xhr.send("Data to send");
     84 };