tor-browser

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

visited_image_loading.sjs (2725B)


      1 function handleRequest(request, response) {
      2   response.setHeader("Cache-Control", "no-cache", false);
      3   var query = request.queryString;
      4   switch (query) {
      5     case "reset":
      6       response.setHeader("Content-Type", "application/ecmascript", false);
      7       setState("1l", "");
      8       setState("1v", "");
      9       setState("2l", "");
     10       setState("2v", "");
     11       break;
     12     case "1l":
     13     case "1v":
     14     case "2l":
     15     case "2v":
     16       setState(query, "load");
     17       response.setStatusLine("1.1", 302, "Found");
     18       // redirect to a solid blue image
     19       response.setHeader(
     20         "Location",
     21         "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVQI12NgYPgPAAEDAQDZqt2zAAAAAElFTkSuQmCC"
     22       );
     23       response.setHeader("Content-Type", "text/plain", false);
     24       break;
     25 
     26     case "waitforresult":
     27       response.setHeader("Content-Type", "application/ecmascript", false);
     28       response.write("var start = Date.now();\n");
     29     // fall through!
     30 
     31     case "waitforresult-internal":
     32       response.setHeader("Content-Type", "application/ecmascript", false);
     33       response.write(
     34         "if ('" +
     35           getState("1l") +
     36           "' == 'load' && '" +
     37           getState("1v") +
     38           "' == '' && '" +
     39           getState("2l") +
     40           "' == 'load' && '" +
     41           getState("2v") +
     42           "' == '') { \n"
     43       );
     44       response.write("setTimeout(function() {\n");
     45       response.write("var s = document.createElement('script');\n");
     46       response.write("s.src = 'visited_image_loading.sjs?result';\n");
     47       response.write("document.body.appendChild(s);");
     48       response.write("}, Math.max(100, 2 * (Date.now() - start)));\n");
     49       response.write("} else setTimeout(function() {\n");
     50       response.write("var s = document.createElement('script');\n");
     51       response.write(
     52         "s.src = 'visited_image_loading.sjs?waitforresult-internal';\n"
     53       );
     54       response.write("document.body.appendChild(s);");
     55       response.write("}, 10);\n");
     56       break;
     57 
     58     case "result":
     59       response.setHeader("Content-Type", "application/ecmascript", false);
     60       response.write(
     61         "is('" +
     62           getState("1l") +
     63           "', 'load', 'image 1l should have been loaded once')\n"
     64       );
     65       response.write(
     66         "is('" +
     67           getState("1v") +
     68           "', '', 'image 1v should not have been loaded')\n"
     69       );
     70       response.write(
     71         "is('" +
     72           getState("2l") +
     73           "', 'load', 'image 2l should have been loaded once')\n"
     74       );
     75       response.write(
     76         "is('" +
     77           getState("2v") +
     78           "', '', 'image 2v should not have been loaded')\n"
     79       );
     80       response.write("SimpleTest.finish()");
     81       break;
     82   }
     83 }