summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/common/custom-cors-response.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /testing/web-platform/tests/common/custom-cors-response.js
parentInitial commit. (diff)
downloadthunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz
thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/common/custom-cors-response.js')
-rw-r--r--testing/web-platform/tests/common/custom-cors-response.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/testing/web-platform/tests/common/custom-cors-response.js b/testing/web-platform/tests/common/custom-cors-response.js
new file mode 100644
index 0000000000..be9c7ce3bd
--- /dev/null
+++ b/testing/web-platform/tests/common/custom-cors-response.js
@@ -0,0 +1,32 @@
+const custom_cors_response = (payload, base_url) => {
+ base_url = base_url || new URL(location.href);
+
+ // Clone the given `payload` so that, as we modify it, we won't be mutating
+ // the caller's value in unexpected ways.
+ payload = Object.assign({}, payload);
+ payload.headers = payload.headers || {};
+ // Note that, in order to have out-of-the-box support for tests that don't
+ // call `setup({'allow_uncaught_exception': true})` we return a no-op JS
+ // payload. This approach will avoid hitting syntax errors if the resource is
+ // interpreted as script. Without this workaround, the SyntaxError would be
+ // caught by the test harness and trigger a test failure.
+ payload.content = payload.content || '/* custom-cors-response.js content */';
+ payload.status_code = payload.status_code || 200;
+
+ // Assume that we'll be doing a CORS-enabled fetch so we'll need to set ACAO.
+ const acao = "Access-Control-Allow-Origin";
+ if (!(acao in payload.headers)) {
+ payload.headers[acao] = '*';
+ }
+
+ if (!("Content-Type" in payload.headers)) {
+ payload.headers["Content-Type"] = "text/javascript";
+ }
+
+ let ret = new URL("/common/CustomCorsResponse.py", base_url);
+ for (const key in payload) {
+ ret.searchParams.append(key, JSON.stringify(payload[key]));
+ }
+
+ return ret;
+};