image/test/reftest/generic/check-header.sjs

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/image/test/reftest/generic/check-header.sjs	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,72 @@
     1.4 +const BinaryOutputStream = Components.Constructor("@mozilla.org/binaryoutputstream;1", "nsIBinaryOutputStream", "setOutputStream");
     1.5 +
     1.6 +function isCatchall(v)
     1.7 +{
     1.8 +  // "image/*" item exactly or with a quality factor
     1.9 +  return /^image\/\*(?:|;q=(?:1(?:\.0{0,3})?|0(?:\.\d{0,3})?))$/.test(v);
    1.10 +}
    1.11 +
    1.12 +/*
    1.13 +# Python used to generate the following byte array
    1.14 +def toHex(n):
    1.15 +  if n < 16: return "0x" + hex(n)[2:].upper()
    1.16 +  return "0x" + hex(n)[2:].upper()
    1.17 +
    1.18 +def hexFile(name):
    1.19 +  f = open(name, "rb")
    1.20 +  try:
    1.21 +    while True:
    1.22 +      print toHex(ord(f.read(1))) + ", ",
    1.23 +  except:
    1.24 +    pass
    1.25 +
    1.26 +hexFile("image/test/reftest/generic/green.png")
    1.27 +*/
    1.28 +
    1.29 +const IMAGE_DATA =
    1.30 +  [
    1.31 +   0x89,  0x50,  0x4E,  0x47,  0x0D,  0x0A,  0x1A,  0x0A,  0x00,  0x00,  0x00,
    1.32 +   0x0D,  0x49,  0x48,  0x44,  0x52,  0x00,  0x00,  0x00,  0x64,  0x00,  0x00,
    1.33 +   0x00,  0x64,  0x08,  0x02,  0x00,  0x00,  0x00,  0xFF,  0x80,  0x02,  0x03,
    1.34 +   0x00,  0x00,  0x00,  0x01,  0x73,  0x52,  0x47,  0x42,  0x00,  0xAE,  0xCE,
    1.35 +   0x1C,  0xE9,  0x00,  0x00,  0x00,  0x9E,  0x49,  0x44,  0x41,  0x54,  0x78,
    1.36 +   0xDA,  0xED,  0xD0,  0x31,  0x01,  0x00,  0x00,  0x08,  0x03,  0xA0,  0x69,
    1.37 +   0xFF,  0xCE,  0x5A,  0xC1,  0xCF,  0x07,  0x22,  0x50,  0x99,  0x70,  0xD4,
    1.38 +   0x0A,  0x64,  0xC9,  0x92,  0x25,  0x4B,  0x96,  0x2C,  0x05,  0xB2,  0x64,
    1.39 +   0xC9,  0x92,  0x25,  0x4B,  0x96,  0x02,  0x59,  0xB2,  0x64,  0xC9,  0x92,
    1.40 +   0x25,  0x4B,  0x81,  0x2C,  0x59,  0xB2,  0x64,  0xC9,  0x92,  0xA5,  0x40,
    1.41 +   0x96,  0x2C,  0x59,  0xB2,  0x64,  0xC9,  0x52,  0x20,  0x4B,  0x96,  0x2C,
    1.42 +   0x59,  0xB2,  0x64,  0x29,  0x90,  0x25,  0x4B,  0x96,  0x2C,  0x59,  0xB2,
    1.43 +   0x14,  0xC8,  0x92,  0x25,  0x4B,  0x96,  0x2C,  0x59,  0x0A,  0x64,  0xC9,
    1.44 +   0x92,  0x25,  0x4B,  0x96,  0x2C,  0x05,  0xB2,  0x64,  0xC9,  0x92,  0x25,
    1.45 +   0x4B,  0x96,  0x02,  0x59,  0xB2,  0x64,  0xC9,  0x92,  0x25,  0x4B,  0x81,
    1.46 +   0x2C,  0x59,  0xB2,  0x64,  0xC9,  0x92,  0xA5,  0x40,  0x96,  0x2C,  0x59,
    1.47 +   0xB2,  0x64,  0xC9,  0x52,  0x20,  0x4B,  0x96,  0x2C,  0x59,  0xB2,  0x64,
    1.48 +   0x29,  0x90,  0x25,  0x4B,  0x96,  0x2C,  0x59,  0xB2,  0x14,  0xC8,  0x92,
    1.49 +   0x25,  0x4B,  0x96,  0x2C,  0x59,  0x0A,  0x64,  0xC9,  0xFA,  0xB6,  0x89,
    1.50 +   0x5F,  0x01,  0xC7,  0x24,  0x83,  0xB2,  0x0C,  0x00,  0x00,  0x00,  0x00,
    1.51 +   0x49,  0x45,  0x4E,  0x44,  0xAE,  0x42,  0x60,  0x82,
    1.52 +  ];
    1.53 +
    1.54 +function handleRequest(request, response)
    1.55 +{
    1.56 +  response.setHeader("Content-Type", "text/plain", false);
    1.57 +  response.setHeader("Cache-Control", "no-cache", false);
    1.58 +
    1.59 +  var accept = request.hasHeader("Accept")
    1.60 +             ? request.getHeader("Accept")
    1.61 +             : "";
    1.62 +
    1.63 +  if (accept.split(",").some(isCatchall))
    1.64 +  {
    1.65 +    response.setHeader("Content-Type", "image/png", false);
    1.66 +
    1.67 +    var stream = new BinaryOutputStream(response.bodyOutputStream);
    1.68 +    stream.writeByteArray(IMAGE_DATA, IMAGE_DATA.length);
    1.69 +  }
    1.70 +  else
    1.71 +  {
    1.72 +    response.setStatusLine(request.httpVersion, 404, "Not found");
    1.73 +    response.write("Accept header contained: " + accept);
    1.74 +  }
    1.75 +}

mercurial