replaced by .editorconfig # ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D287841
61 lines
1.8 KiB
JavaScript
61 lines
1.8 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
"use strict";
|
|
|
|
// JSON contains a multibyte character
|
|
const JSON_BYTES_1 = '"\xE3';
|
|
const JSON_BYTES_2 = '\x81\x82"';
|
|
|
|
// stolen from file_blocked_script.sjs
|
|
function setGlobalState(data, key) {
|
|
const x = {
|
|
data,
|
|
QueryInterface: ChromeUtils.generateQI([]),
|
|
};
|
|
x.wrappedJSObject = x;
|
|
setObjectState(key, x);
|
|
}
|
|
|
|
function getGlobalState(key) {
|
|
let data;
|
|
getObjectState(key, function (x) {
|
|
data = x && x.wrappedJSObject.data;
|
|
});
|
|
return data;
|
|
}
|
|
|
|
function handleRequest(request, response) {
|
|
if (/^complete/.test(request.queryString)) {
|
|
// Unblock the previous request.
|
|
response.setStatusLine(request.httpVersion, 200, "OK");
|
|
response.setHeader("Cache-Control", "no-cache", false);
|
|
response.setHeader("Content-Type", "application/json", false);
|
|
response.write("true"); // the payload doesn't matter.
|
|
|
|
const blockedResponse = getGlobalState("devtools-webconsole");
|
|
if (blockedResponse) {
|
|
blockedResponse.write(JSON_BYTES_2);
|
|
blockedResponse.finish();
|
|
|
|
setGlobalState(undefined, "devtools-webconsole");
|
|
}
|
|
} else {
|
|
// Getting the JSON
|
|
const partial = /^partial/.test(request.queryString);
|
|
if (!partial) {
|
|
response.processAsync();
|
|
}
|
|
response.setStatusLine(request.httpVersion, 200, "OK");
|
|
response.setHeader("Cache-Control", "no-cache", false);
|
|
response.setHeader("Content-Type", "application/json; charset=utf8", false);
|
|
response.write(JSON_BYTES_1);
|
|
if (!partial) {
|
|
// Store the response in the global state
|
|
setGlobalState(response, "devtools-webconsole");
|
|
response.bodyOutputStream.flush();
|
|
}
|
|
}
|
|
}
|