tor-browser

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

1430818.sjs (1687B)


      1 function getFileStream(filename)
      2 {
      3   let self = Components.classes["@mozilla.org/file/local;1"]
      4                        .createInstance(Components.interfaces.nsIFile);
      5   self.initWithPath(getState("__LOCATION__"));
      6   let file = self.parent;
      7   file.append(filename);
      8   let stream  = Components.classes['@mozilla.org/network/file-input-stream;1']
      9                           .createInstance(Components.interfaces.nsIFileInputStream);
     10   stream.init(file, -1, -1, false);
     11   return stream;
     12 }
     13 
     14 function handleRequest(request, response)
     15 {
     16   response.processAsync();
     17   response.setStatusLine(null, 200, "OK");
     18   response.setHeader("Content-Type", "text/xml", false);
     19 
     20   switch (request.queryString) {
     21     case "stylesheet":
     22     {
     23       let timer = Components.classes["@mozilla.org/timer;1"]
     24                             .createInstance(Components.interfaces.nsITimer);
     25       timer.initWithCallback(() => {
     26         setState("xslt", "loaded");
     27         response.finish();
     28         timer.cancel();
     29       }, 1000 /* milliseconds */, Components.interfaces.nsITimer.TYPE_REPEATING_SLACK);
     30       break;
     31     }
     32     default:
     33     {
     34       let stream = getFileStream("1430818.xml");
     35       response.bodyOutputStream.writeFrom(stream,
     36                                           stream.available());
     37       stream.close();
     38       let timer = Components.classes["@mozilla.org/timer;1"]
     39                             .createInstance(Components.interfaces.nsITimer);
     40       timer.initWithCallback(() => {
     41         if (getState("xslt") == "loaded") {
     42           response.finish();
     43           timer.cancel();
     44         }
     45       }, 100 /* milliseconds */, Components.interfaces.nsITimer.TYPE_REPEATING_SLACK);
     46       break;
     47     }
     48   }
     49 }