43 lines
986 B
JavaScript
43 lines
986 B
JavaScript
function setOurState(data) {
|
|
x = {
|
|
data,
|
|
QueryInterface(iid) {
|
|
return this;
|
|
},
|
|
};
|
|
x.wrappedJSObject = x;
|
|
setObjectState("bug602838", x);
|
|
}
|
|
|
|
function getOurState() {
|
|
var data;
|
|
getObjectState("bug602838", function (x) {
|
|
// x can be null if no one has set any state yet
|
|
if (x) {
|
|
data = x.wrappedJSObject.data;
|
|
}
|
|
});
|
|
return data;
|
|
}
|
|
|
|
function handleRequest(request, response) {
|
|
if (request.queryString) {
|
|
let blockedResponse = getOurState();
|
|
if (typeof blockedResponse == "object") {
|
|
blockedResponse.finish();
|
|
setOurState(null);
|
|
} else {
|
|
setOurState("unblocked");
|
|
}
|
|
return;
|
|
}
|
|
response.setHeader("Cache-Control", "no-cache", false);
|
|
response.setHeader("Content-Type", "text/javascript", false);
|
|
response.write(
|
|
"ok(asyncRan, 'Async script should have run first.'); firstRan = true;"
|
|
);
|
|
if (getOurState() != "unblocked") {
|
|
response.processAsync();
|
|
setOurState(response);
|
|
}
|
|
}
|