summaryrefslogtreecommitdiffstats
path: root/layout/style/test/redundant_font_download.sjs
blob: a28fc081d24dd485d97d4637d7391b3d418850e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
const BinaryOutputStream =
  Components.Constructor("@mozilla.org/binaryoutputstream;1",
                         "nsIBinaryOutputStream",
                         "setOutputStream");

// this is simply a hex dump of a red square .PNG image
const RED_SQUARE =
  [
    0x89,  0x50,  0x4E,  0x47,  0x0D,  0x0A,  0x1A,  0x0A,  0x00,  0x00,
    0x00,  0x0D,  0x49,  0x48,  0x44,  0x52,  0x00,  0x00,  0x00,  0x20,
    0x00,  0x00,  0x00,  0x20,  0x08,  0x02,  0x00,  0x00,  0x00,  0xFC,
    0x18,  0xED,  0xA3,  0x00,  0x00,  0x00,  0x01,  0x73,  0x52,  0x47,
    0x42,  0x00,  0xAE,  0xCE,  0x1C,  0xE9,  0x00,  0x00,  0x00,  0x28,
    0x49,  0x44,  0x41,  0x54,  0x48,  0xC7,  0xED,  0xCD,  0x41,  0x0D,
    0x00,  0x00,  0x08,  0x04,  0xA0,  0xD3,  0xFE,  0x9D,  0x35,  0x85,
    0x0F,  0x37,  0x28,  0x40,  0x4D,  0x6E,  0x75,  0x04,  0x02,  0x81,
    0x40,  0x20,  0x10,  0x08,  0x04,  0x02,  0xC1,  0x93,  0x60,  0x01,
    0xA3,  0xC4,  0x01,  0x3F,  0x58,  0x1D,  0xEF,  0x27,  0x00,  0x00,
    0x00,  0x00,  0x49,  0x45,  0x4E,  0x44,  0xAE,  0x42,  0x60,  0x82
  ];

function handleRequest(request, response)
{
  var query = {};
  request.queryString.split('&').forEach(function (val) {
    var [name, value] = val.split('=');
    query[name] = unescape(value);
  });

  response.setHeader("Cache-Control", "no-cache");

  response.setStatusLine(request.httpVersion, 200, "OK");
  response.setHeader("Content-Type", "text/plain", false);

  var log = getState("bug-879963-request-log") || "";

  var stream = new BinaryOutputStream(response.bodyOutputStream);

  if (query["q"] == "init") {
    log = "init"; // initialize the log, and return a PNG image
    response.setHeader("Content-Type", "image/png", false);
    stream.writeByteArray(RED_SQUARE);
  } else if (query["q"] == "image") {
    log = log + ";" + query["q"];
    response.setHeader("Content-Type", "image/png", false);
    stream.writeByteArray(RED_SQUARE);
  } else if (query["q"] == "font") {
    log = log + ";" + query["q"];
    // we don't provide a real font; that's ok, OTS will just reject it
    response.write("Junk");
  } else if (query["q"] == "report") {
    // don't include the actual "report" request in the log we return
    response.write(log);
  } else {
    log = log + ";" + query["q"];
    response.setStatusLine(request.httpVersion, 404, "Not Found");
  }

  setState("bug-879963-request-log", log);
}