michael@0: function handleRequest(request, response) michael@0: { michael@0: response.setHeader("Cache-Control", "no-cache", false); michael@0: var query = request.queryString; michael@0: switch (query) { michael@0: case "reset": michael@0: response.setHeader("Content-Type", "application/ecmascript", false); michael@0: setState("1l", ""); michael@0: setState("1v", ""); michael@0: setState("2l", ""); michael@0: setState("2v", ""); michael@0: break; michael@0: case "1l": michael@0: case "1v": michael@0: case "2l": michael@0: case "2v": michael@0: setState(query, getState(query) + "load"); michael@0: response.setStatusLine("1.1", 302, "Found"); michael@0: // redirect to a solid blue image michael@0: response.setHeader("Location", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVQI12NgYPgPAAEDAQDZqt2zAAAAAElFTkSuQmCC"); michael@0: response.setHeader("Content-Type", "text/plain", false); michael@0: break; michael@0: michael@0: case "waitforresult": michael@0: response.setHeader("Content-Type", "application/ecmascript", false); michael@0: response.write("var start = Date.now();\n"); michael@0: // fall through! michael@0: michael@0: case "waitforresult-internal": michael@0: response.setHeader("Content-Type", "application/ecmascript", false); michael@0: response.write("if ('" + getState("1l") + "' == 'load' && '" + michael@0: getState("1v") + "' == '' && '" + michael@0: getState("2l") + "' == 'load' && '" + michael@0: getState("2v") + "' == '') { \n"); michael@0: response.write("setTimeout(function() {\n"); michael@0: response.write("var s = document.createElement('script');\n"); michael@0: response.write("s.src = 'visited_image_loading.sjs?result';\n"); michael@0: response.write("document.body.appendChild(s);"); michael@0: response.write("}, Math.max(100, 2 * (Date.now() - start)));\n"); michael@0: response.write("} else setTimeout(function() {\n"); michael@0: response.write("var s = document.createElement('script');\n"); michael@0: response.write("s.src = 'visited_image_loading.sjs?waitforresult-internal';\n"); michael@0: response.write("document.body.appendChild(s);"); michael@0: response.write("}, 10);\n"); michael@0: break; michael@0: michael@0: case "result": michael@0: response.setHeader("Content-Type", "application/ecmascript", false); michael@0: response.write("is('" + getState("1l") + michael@0: "', 'load', 'image 1l should have been loaded once')\n"); michael@0: response.write("is('" + getState("1v") + michael@0: "', '', 'image 1v should not have been loaded')\n"); michael@0: response.write("is('" + getState("2l") + michael@0: "', 'load', 'image 2l should have been loaded once')\n"); michael@0: response.write("is('" + getState("2v") + michael@0: "', '', 'image 2v should not have been loaded')\n"); michael@0: response.write("SimpleTest.finish()"); michael@0: break; michael@0: } michael@0: }