From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- dom/tests/mochitest/script/file_blocked_script.sjs | 70 ++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 dom/tests/mochitest/script/file_blocked_script.sjs (limited to 'dom/tests/mochitest/script/file_blocked_script.sjs') diff --git a/dom/tests/mochitest/script/file_blocked_script.sjs b/dom/tests/mochitest/script/file_blocked_script.sjs new file mode 100644 index 0000000000..a5b375a23d --- /dev/null +++ b/dom/tests/mochitest/script/file_blocked_script.sjs @@ -0,0 +1,70 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* 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/. */ + +function setGlobalState(data, key) { + x = { + data, + QueryInterface(iid) { + return this; + }, + }; + x.wrappedJSObject = x; + setObjectState(key, x); +} + +function getGlobalState(key) { + var data; + getObjectState(key, function (x) { + data = x && x.wrappedJSObject.data; + }); + return data; +} + +function finishBlockedRequest(request, response, query) { + response.setStatusLine(request.httpVersion, 200, "OK"); + response.setHeader("Cache-Control", "no-cache", false); + response.setHeader("Content-Type", "application/javascript", false); + response.write("scriptLoaded('" + query[1] + "');"); + response.finish(); + + setGlobalState(undefined, query[1]); +} + +function handleRequest(request, response) { + var query = request.queryString.split("&"); + switch (query[0]) { + case "blocked": + var alreadyUnblocked = getGlobalState(query[1]); + + response.processAsync(); + if (alreadyUnblocked === true) { + // the unblock request came before the blocked request, just go on and finish synchronously + finishBlockedRequest(request, response, query); + } else { + setGlobalState(response, query[1]); + } + break; + + case "unblock": + response.setStatusLine(request.httpVersion, 200, "OK"); + response.setHeader("Cache-Control", "no-cache", false); + response.setHeader("Content-Type", "image/png", false); + response.write("\x89PNG"); // just a broken image is enough for our purpose + + var blockedResponse = getGlobalState(query[1]); + if (blockedResponse === undefined) { + // the unblock request came before the blocked request, remember to not block it + setGlobalState(true, query[1]); + } else if (typeof blockedResponse == "object") { + finishBlockedRequest(request, blockedResponse, query); + } + break; + + default: + response.setStatusLine(request.httpVersion, 400, "Bad request"); + break; + } +} -- cgit v1.2.3