layout/style/test/visited_image_loading.sjs

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/layout/style/test/visited_image_loading.sjs	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,60 @@
     1.4 +function handleRequest(request, response)
     1.5 +{
     1.6 +  response.setHeader("Cache-Control", "no-cache", false);
     1.7 +  var query = request.queryString;
     1.8 +  switch (query) {
     1.9 +    case "reset":
    1.10 +      response.setHeader("Content-Type", "application/ecmascript", false);
    1.11 +      setState("1l", "");
    1.12 +      setState("1v", "");
    1.13 +      setState("2l", "");
    1.14 +      setState("2v", "");
    1.15 +      break;
    1.16 +    case "1l":
    1.17 +    case "1v":
    1.18 +    case "2l":
    1.19 +    case "2v":
    1.20 +      setState(query, getState(query) + "load");
    1.21 +      response.setStatusLine("1.1", 302, "Found");
    1.22 +      // redirect to a solid blue image
    1.23 +      response.setHeader("Location", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVQI12NgYPgPAAEDAQDZqt2zAAAAAElFTkSuQmCC");
    1.24 +      response.setHeader("Content-Type", "text/plain", false);
    1.25 +      break;
    1.26 +
    1.27 +    case "waitforresult":
    1.28 +      response.setHeader("Content-Type", "application/ecmascript", false);
    1.29 +      response.write("var start = Date.now();\n");
    1.30 +      // fall through!
    1.31 +
    1.32 +    case "waitforresult-internal":
    1.33 +      response.setHeader("Content-Type", "application/ecmascript", false);
    1.34 +      response.write("if ('" + getState("1l") + "' == 'load' && '" +
    1.35 +                     getState("1v") + "' == '' && '" +
    1.36 +                     getState("2l") + "' == 'load' && '" +
    1.37 +                     getState("2v") + "' == '') { \n");
    1.38 +      response.write("setTimeout(function() {\n");
    1.39 +      response.write("var s = document.createElement('script');\n");
    1.40 +      response.write("s.src = 'visited_image_loading.sjs?result';\n");
    1.41 +      response.write("document.body.appendChild(s);");
    1.42 +      response.write("}, Math.max(100, 2 * (Date.now() - start)));\n");
    1.43 +      response.write("} else setTimeout(function() {\n");
    1.44 +      response.write("var s = document.createElement('script');\n");
    1.45 +      response.write("s.src = 'visited_image_loading.sjs?waitforresult-internal';\n");
    1.46 +      response.write("document.body.appendChild(s);");
    1.47 +      response.write("}, 10);\n");
    1.48 +      break;
    1.49 +
    1.50 +    case "result":
    1.51 +      response.setHeader("Content-Type", "application/ecmascript", false);
    1.52 +      response.write("is('" + getState("1l") +
    1.53 +                     "', 'load', 'image 1l should have been loaded once')\n");
    1.54 +      response.write("is('" + getState("1v") +
    1.55 +                     "', '', 'image 1v should not have been loaded')\n");
    1.56 +      response.write("is('" + getState("2l") +
    1.57 +                     "', 'load', 'image 2l should have been loaded once')\n");
    1.58 +      response.write("is('" + getState("2v") +
    1.59 +                     "', '', 'image 2v should not have been loaded')\n");
    1.60 +      response.write("SimpleTest.finish()");
    1.61 +      break;
    1.62 +  }
    1.63 +}

mercurial