layout/reftests/backgrounds/delay-image-response.sjs

Thu, 15 Jan 2015 15:55:04 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 15:55:04 +0100
branch
TOR_BUG_9701
changeset 9
a63d609f5ebe
permissions
-rw-r--r--

Back out 97036ab72558 which inappropriately compared turds to third parties.

michael@0 1 const BinaryOutputStream = Components.Constructor("@mozilla.org/binaryoutputstream;1", "nsIBinaryOutputStream", "setOutputStream");
michael@0 2 /* This data is picked from image/test/reftest/generic/check-header.sjs */
michael@0 3 const IMAGE_DATA =
michael@0 4 [
michael@0 5 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00,
michael@0 6 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00,
michael@0 7 0x00, 0x64, 0x08, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x02, 0x03,
michael@0 8 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xAE, 0xCE,
michael@0 9 0x1C, 0xE9, 0x00, 0x00, 0x00, 0x9E, 0x49, 0x44, 0x41, 0x54, 0x78,
michael@0 10 0xDA, 0xED, 0xD0, 0x31, 0x01, 0x00, 0x00, 0x08, 0x03, 0xA0, 0x69,
michael@0 11 0xFF, 0xCE, 0x5A, 0xC1, 0xCF, 0x07, 0x22, 0x50, 0x99, 0x70, 0xD4,
michael@0 12 0x0A, 0x64, 0xC9, 0x92, 0x25, 0x4B, 0x96, 0x2C, 0x05, 0xB2, 0x64,
michael@0 13 0xC9, 0x92, 0x25, 0x4B, 0x96, 0x02, 0x59, 0xB2, 0x64, 0xC9, 0x92,
michael@0 14 0x25, 0x4B, 0x81, 0x2C, 0x59, 0xB2, 0x64, 0xC9, 0x92, 0xA5, 0x40,
michael@0 15 0x96, 0x2C, 0x59, 0xB2, 0x64, 0xC9, 0x52, 0x20, 0x4B, 0x96, 0x2C,
michael@0 16 0x59, 0xB2, 0x64, 0x29, 0x90, 0x25, 0x4B, 0x96, 0x2C, 0x59, 0xB2,
michael@0 17 0x14, 0xC8, 0x92, 0x25, 0x4B, 0x96, 0x2C, 0x59, 0x0A, 0x64, 0xC9,
michael@0 18 0x92, 0x25, 0x4B, 0x96, 0x2C, 0x05, 0xB2, 0x64, 0xC9, 0x92, 0x25,
michael@0 19 0x4B, 0x96, 0x02, 0x59, 0xB2, 0x64, 0xC9, 0x92, 0x25, 0x4B, 0x81,
michael@0 20 0x2C, 0x59, 0xB2, 0x64, 0xC9, 0x92, 0xA5, 0x40, 0x96, 0x2C, 0x59,
michael@0 21 0xB2, 0x64, 0xC9, 0x52, 0x20, 0x4B, 0x96, 0x2C, 0x59, 0xB2, 0x64,
michael@0 22 0x29, 0x90, 0x25, 0x4B, 0x96, 0x2C, 0x59, 0xB2, 0x14, 0xC8, 0x92,
michael@0 23 0x25, 0x4B, 0x96, 0x2C, 0x59, 0x0A, 0x64, 0xC9, 0xFA, 0xB6, 0x89,
michael@0 24 0x5F, 0x01, 0xC7, 0x24, 0x83, 0xB2, 0x0C, 0x00, 0x00, 0x00, 0x00,
michael@0 25 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82,
michael@0 26 ];
michael@0 27
michael@0 28 /**
michael@0 29 * The timer is needed when a delay is set. We need it to be out of the method
michael@0 30 * so it is not eaten alive by the GC.
michael@0 31 */
michael@0 32 var timer;
michael@0 33
michael@0 34 function handleRequest(request, response) {
michael@0 35 var query = {};
michael@0 36 request.queryString.split('&').forEach(function (val) {
michael@0 37 var [name, value] = val.split('=');
michael@0 38 query[name] = unescape(value);
michael@0 39 });
michael@0 40
michael@0 41 response.setStatusLine(request.httpVersion, 200, "OK");
michael@0 42 response.setHeader("Content-Type", "image/png", false);
michael@0 43
michael@0 44 function imageWrite() {
michael@0 45 var stream = new BinaryOutputStream(response.bodyOutputStream);
michael@0 46 stream.writeByteArray(IMAGE_DATA, IMAGE_DATA.length);
michael@0 47 }
michael@0 48
michael@0 49 // If there is no delay, we write the image and leave.
michael@0 50 if (!("delay" in query)) {
michael@0 51 imageWrite();
michael@0 52 return;
michael@0 53 }
michael@0 54
michael@0 55 // If there is a delay, we create a timer which, when it fires, will write
michael@0 56 // image and leave.
michael@0 57 response.processAsync();
michael@0 58 const nsITimer = Components.interfaces.nsITimer;
michael@0 59
michael@0 60 timer = Components.classes["@mozilla.org/timer;1"].createInstance(nsITimer);
michael@0 61 timer.initWithCallback(function() {
michael@0 62 imageWrite();
michael@0 63 response.finish();
michael@0 64 }, query["delay"], nsITimer.TYPE_ONE_SHOT);
michael@0 65 }

mercurial