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 }