tor-browser

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

bug1180105.sjs (1880B)


      1 /* Any copyright is dedicated to the Public Domain.
      2  * http://creativecommons.org/publicdomain/zero/1.0/
      3  */
      4 
      5 var counter = 100;
      6 var timer = Cc["@mozilla.org/timer;1"];
      7 var partTimer = timer.createInstance(Ci.nsITimer);
      8 
      9 function getFileAsInputStream(aFilename) {
     10   var file = Services.dirsvc.get("CurWorkD", Ci.nsIFile);
     11 
     12   file.append("tests");
     13   file.append("image");
     14   file.append("test");
     15   file.append("mochitest");
     16   file.append(aFilename);
     17 
     18   var fileStream = Cc[
     19     "@mozilla.org/network/file-input-stream;1"
     20   ].createInstance(Ci.nsIFileInputStream);
     21   fileStream.init(file, 1, 0, false);
     22   return fileStream;
     23 }
     24 
     25 function handleRequest(request, response) {
     26   response.setHeader(
     27     "Content-Type",
     28     "multipart/x-mixed-replace;boundary=BOUNDARYOMG",
     29     false
     30   );
     31   response.setHeader("Cache-Control", "no-cache", false);
     32   response.setStatusLine(request.httpVersion, 200, "OK");
     33   // We're sending parts off in a delayed fashion, to let the tests occur.
     34   response.processAsync();
     35   response.write("--BOUNDARYOMG\r\n");
     36   sendParts(response);
     37 }
     38 
     39 function sendParts(response) {
     40   if (counter-- == 0) {
     41     sendClose(response);
     42     setSharedState("all-parts-done", "1");
     43     return;
     44   }
     45   sendNextPart(response);
     46   partTimer.initWithCallback(
     47     function () {
     48       sendParts(response);
     49     },
     50     1,
     51     Ci.nsITimer.TYPE_ONE_SHOT
     52   );
     53 }
     54 
     55 function sendClose(response) {
     56   response.write("--BOUNDARYOMG--\r\n");
     57   response.finish();
     58 }
     59 
     60 function sendNextPart(response) {
     61   var nextPartHead = "Content-Type: image/jpeg\r\n\r\n";
     62   var inputStream = getFileAsInputStream("damon.jpg");
     63   response.bodyOutputStream.write(nextPartHead, nextPartHead.length);
     64   response.bodyOutputStream.writeFrom(inputStream, inputStream.available());
     65   inputStream.close();
     66   // Toss in the boundary, so the browser can know this part is complete
     67   response.write("--BOUNDARYOMG\r\n");
     68 }