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

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:867c532b8f07
1 const BinaryOutputStream = Components.Constructor("@mozilla.org/binaryoutputstream;1", "nsIBinaryOutputStream", "setOutputStream");
2
3 function isCatchall(v)
4 {
5 // "image/*" item exactly or with a quality factor
6 return /^image\/\*(?:|;q=(?:1(?:\.0{0,3})?|0(?:\.\d{0,3})?))$/.test(v);
7 }
8
9 /*
10 # Python used to generate the following byte array
11 def toHex(n):
12 if n < 16: return "0x" + hex(n)[2:].upper()
13 return "0x" + hex(n)[2:].upper()
14
15 def hexFile(name):
16 f = open(name, "rb")
17 try:
18 while True:
19 print toHex(ord(f.read(1))) + ", ",
20 except:
21 pass
22
23 hexFile("image/test/reftest/generic/green.png")
24 */
25
26 const IMAGE_DATA =
27 [
28 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00,
29 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00,
30 0x00, 0x64, 0x08, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x02, 0x03,
31 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xAE, 0xCE,
32 0x1C, 0xE9, 0x00, 0x00, 0x00, 0x9E, 0x49, 0x44, 0x41, 0x54, 0x78,
33 0xDA, 0xED, 0xD0, 0x31, 0x01, 0x00, 0x00, 0x08, 0x03, 0xA0, 0x69,
34 0xFF, 0xCE, 0x5A, 0xC1, 0xCF, 0x07, 0x22, 0x50, 0x99, 0x70, 0xD4,
35 0x0A, 0x64, 0xC9, 0x92, 0x25, 0x4B, 0x96, 0x2C, 0x05, 0xB2, 0x64,
36 0xC9, 0x92, 0x25, 0x4B, 0x96, 0x02, 0x59, 0xB2, 0x64, 0xC9, 0x92,
37 0x25, 0x4B, 0x81, 0x2C, 0x59, 0xB2, 0x64, 0xC9, 0x92, 0xA5, 0x40,
38 0x96, 0x2C, 0x59, 0xB2, 0x64, 0xC9, 0x52, 0x20, 0x4B, 0x96, 0x2C,
39 0x59, 0xB2, 0x64, 0x29, 0x90, 0x25, 0x4B, 0x96, 0x2C, 0x59, 0xB2,
40 0x14, 0xC8, 0x92, 0x25, 0x4B, 0x96, 0x2C, 0x59, 0x0A, 0x64, 0xC9,
41 0x92, 0x25, 0x4B, 0x96, 0x2C, 0x05, 0xB2, 0x64, 0xC9, 0x92, 0x25,
42 0x4B, 0x96, 0x02, 0x59, 0xB2, 0x64, 0xC9, 0x92, 0x25, 0x4B, 0x81,
43 0x2C, 0x59, 0xB2, 0x64, 0xC9, 0x92, 0xA5, 0x40, 0x96, 0x2C, 0x59,
44 0xB2, 0x64, 0xC9, 0x52, 0x20, 0x4B, 0x96, 0x2C, 0x59, 0xB2, 0x64,
45 0x29, 0x90, 0x25, 0x4B, 0x96, 0x2C, 0x59, 0xB2, 0x14, 0xC8, 0x92,
46 0x25, 0x4B, 0x96, 0x2C, 0x59, 0x0A, 0x64, 0xC9, 0xFA, 0xB6, 0x89,
47 0x5F, 0x01, 0xC7, 0x24, 0x83, 0xB2, 0x0C, 0x00, 0x00, 0x00, 0x00,
48 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82,
49 ];
50
51 function handleRequest(request, response)
52 {
53 response.setHeader("Content-Type", "text/plain", false);
54 response.setHeader("Cache-Control", "no-cache", false);
55
56 var accept = request.hasHeader("Accept")
57 ? request.getHeader("Accept")
58 : "";
59
60 if (accept.split(",").some(isCatchall))
61 {
62 response.setHeader("Content-Type", "image/png", false);
63
64 var stream = new BinaryOutputStream(response.bodyOutputStream);
65 stream.writeByteArray(IMAGE_DATA, IMAGE_DATA.length);
66 }
67 else
68 {
69 response.setStatusLine(request.httpVersion, 404, "Not found");
70 response.write("Accept header contained: " + accept);
71 }
72 }

mercurial