tor-browser

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

file_SlowImage.sjs (1047B)


      1 "use strict";
      2 
      3 const IMG_BYTES = atob(
      4   "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAA" +
      5     "DUlEQVQImWNgY2P7DwABOgESJhRQtgAAAABJRU5ErkJggg=="
      6 );
      7 
      8 function handleRequest(request, response) {
      9   response.processAsync();
     10   getObjectState("context", function (obj) {
     11     let ctx;
     12     if (obj == null) {
     13       ctx = {
     14         QueryInterface: function (iid) {
     15           if (iid.equals(Ci.nsISupports)) {
     16             return this;
     17           }
     18           throw Components.Exception("", Cr.NS_ERROR_NO_INTERFACE);
     19         },
     20       };
     21       ctx.wrappedJSObject = ctx;
     22 
     23       ctx.promise = new Promise(resolve => {
     24         ctx.resolve = resolve;
     25       });
     26 
     27       setObjectState("context", ctx);
     28     } else {
     29       ctx = obj.wrappedJSObject;
     30     }
     31     Promise.resolve(ctx).then(next);
     32   });
     33 
     34   function next(ctx) {
     35     if (request.queryString.indexOf("continue") >= 0) {
     36       ctx.resolve();
     37     }
     38 
     39     ctx.promise.then(() => {
     40       response.setHeader("Content-Type", "image/png");
     41       response.write(IMG_BYTES);
     42       response.finish();
     43     });
     44   }
     45 }