tor-browser

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

delayedframe.sjs (1656B)


      1 function getFileStream(filename)
      2 {
      3   // Get the location of this sjs file, and then use that to figure out where
      4   // to find where our other files are.
      5   var self = Components.classes["@mozilla.org/file/local;1"]
      6                        .createInstance(Components.interfaces.nsIFile);
      7   self.initWithPath(getState("__LOCATION__"));
      8   var file = self.parent;
      9   file.append(filename);
     10   dump(file.path + "\n");
     11 
     12   var fileStream = Components.classes['@mozilla.org/network/file-input-stream;1']
     13                      .createInstance(Components.interfaces.nsIFileInputStream);
     14   fileStream.init(file, 1, 0, false);
     15 
     16   return fileStream;
     17 }
     18 
     19 var gTimer;
     20 
     21 function handleRequest(request, response)
     22 {
     23   response.processAsync();
     24   response.setStatusLine(request.httpVersion, 200, "OK");
     25   response.setHeader("Content-Type", "image/gif", false);
     26 
     27   var firststream = getFileStream("threeframes-start.gif");
     28   response.bodyOutputStream.writeFrom(firststream, firststream.available())
     29   firststream.close();
     30 
     31   gTimer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer);
     32   gTimer.initWithCallback(function()
     33   {
     34     var secondstream = getFileStream("threeframes-end.gif");
     35     response.bodyOutputStream.writeFrom(secondstream, secondstream.available())
     36     secondstream.close();
     37     response.finish();
     38 
     39     // This time needs to be longer than the animation timer in
     40     // threeframes-start.gif. That's specified as 100ms; just use 5 seconds as
     41     // a reasonable upper bound. Since this is just a crashtest, timeouts
     42     // aren't a big deal.
     43   }, 5 * 1000 /* milliseconds */, Components.interfaces.nsITimer.TYPE_ONE_SHOT);
     44 }