From 9e3c08db40b8916968b9f30096c7be3f00ce9647 Mon Sep 17 00:00:00 2001
From: Daniel Baumann <daniel.baumann@progress-linux.org>
Date: Sun, 21 Apr 2024 13:44:51 +0200
Subject: Adding upstream version 1:115.7.0.

Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
---
 .../source-map-loader/utils/network-request.js     | 43 ++++++++++++++++++++++
 1 file changed, 43 insertions(+)
 create mode 100644 devtools/client/shared/source-map-loader/utils/network-request.js

(limited to 'devtools/client/shared/source-map-loader/utils/network-request.js')

diff --git a/devtools/client/shared/source-map-loader/utils/network-request.js b/devtools/client/shared/source-map-loader/utils/network-request.js
new file mode 100644
index 0000000000..f331dc446e
--- /dev/null
+++ b/devtools/client/shared/source-map-loader/utils/network-request.js
@@ -0,0 +1,43 @@
+/* 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";
+
+async function networkRequest(url, opts) {
+  const supportedProtocols = ["http:", "https:", "data:"];
+
+  // Add file, chrome or moz-extension if the initial source was served by the
+  // same protocol.
+  const ADDITIONAL_PROTOCOLS = ["chrome:", "file:", "moz-extension:"];
+  for (const protocol of ADDITIONAL_PROTOCOLS) {
+    if (opts.sourceMapBaseURL?.startsWith(protocol)) {
+      supportedProtocols.push(protocol);
+    }
+  }
+
+  if (supportedProtocols.every(protocol => !url.startsWith(protocol))) {
+    throw new Error(`unsupported protocol for sourcemap request ${url}`);
+  }
+
+  const response = await fetch(url, {
+    cache: opts.loadFromCache ? "default" : "no-cache",
+    redirect: opts.allowRedirects ? "follow" : "error",
+  });
+
+  if (response.ok) {
+    if (response.headers.get("Content-Type") === "application/wasm") {
+      const buffer = await response.arrayBuffer();
+      return {
+        content: buffer,
+        isDwarf: true,
+      };
+    }
+    const text = await response.text();
+    return { content: text };
+  }
+
+  throw new Error(`request failed with status ${response.status}`);
+}
+
+module.exports = { networkRequest };
-- 
cgit v1.2.3