Blame layout/generic/test/file_SlowImage.sjs
|
Packit |
f0b94e |
"use strict";
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
const IMG_BYTES = atob(
|
|
Packit |
f0b94e |
"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAA" +
|
|
Packit |
f0b94e |
"DUlEQVQImWNgY2P7DwABOgESJhRQtgAAAABJRU5ErkJggg==");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
function handleRequest(request, response) {
|
|
Packit |
f0b94e |
response.processAsync();
|
|
Packit |
f0b94e |
getObjectState("context", function(obj) {
|
|
Packit |
f0b94e |
let ctx;
|
|
Packit |
f0b94e |
if (obj == null) {
|
|
Packit |
f0b94e |
ctx = {
|
|
Packit |
f0b94e |
QueryInterface: function(iid) {
|
|
Packit |
f0b94e |
if (iid.equals(Components.interfaces.nsISupports))
|
|
Packit |
f0b94e |
return this;
|
|
Packit |
f0b94e |
throw Components.results.NS_ERROR_NO_INTERFACE;
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
};
|
|
Packit |
f0b94e |
ctx.wrappedJSObject = ctx;
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
ctx.promise = new Promise(resolve => {
|
|
Packit |
f0b94e |
ctx.resolve = resolve;
|
|
Packit |
f0b94e |
});
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
setObjectState("context", ctx);
|
|
Packit |
f0b94e |
} else {
|
|
Packit |
f0b94e |
ctx = obj.wrappedJSObject;
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
Promise.resolve(ctx).then(next);
|
|
Packit |
f0b94e |
});
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
function next(ctx) {
|
|
Packit |
f0b94e |
if (request.queryString.indexOf("continue") >= 0) {
|
|
Packit |
f0b94e |
ctx.resolve();
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
ctx.promise.then(() => {
|
|
Packit |
f0b94e |
response.setHeader("Content-Type", "image/png");
|
|
Packit |
f0b94e |
response.write(IMG_BYTES);
|
|
Packit |
f0b94e |
response.finish();
|
|
Packit |
f0b94e |
});
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
}
|