diff options
Diffstat (limited to 'layout/style/test/redundant_font_download.sjs')
-rw-r--r-- | layout/style/test/redundant_font_download.sjs | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/layout/style/test/redundant_font_download.sjs b/layout/style/test/redundant_font_download.sjs new file mode 100644 index 0000000000..09236563de --- /dev/null +++ b/layout/style/test/redundant_font_download.sjs @@ -0,0 +1,63 @@ +"use strict"; + +const BinaryOutputStream = Components.Constructor( + "@mozilla.org/binaryoutputstream;1", + "nsIBinaryOutputStream", + "setOutputStream" +); + +// this is simply a hex dump of a red square .PNG image +// prettier-ignore +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) { + let query = {}; + request.queryString.split("&").forEach(function (val) { + let [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); + + let log = getState("bug-879963-request-log") || ""; + + let 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); +} |