summarylogtreecommitdiffstats
path: root/0032-Bug-1822730-Add-basic-blob-protocol-handling-for-blo.patch
diff options
context:
space:
mode:
Diffstat (limited to '0032-Bug-1822730-Add-basic-blob-protocol-handling-for-blo.patch')
-rw-r--r--0032-Bug-1822730-Add-basic-blob-protocol-handling-for-blo.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/0032-Bug-1822730-Add-basic-blob-protocol-handling-for-blo.patch b/0032-Bug-1822730-Add-basic-blob-protocol-handling-for-blo.patch
new file mode 100644
index 000000000000..76d06bba9029
--- /dev/null
+++ b/0032-Bug-1822730-Add-basic-blob-protocol-handling-for-blo.patch
@@ -0,0 +1,55 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Rob Krum <biggestsonicfan@gmail.com>
+Date: Fri, 22 Sep 2023 18:23:35 -0700
+Subject: [PATCH] Bug 1822730 - Add basic blob protocol handling for blob URIs
+ that contain parsable http/s protocols
+
+---
+ .../mozapps/downloads/DownloadLastDir.sys.mjs | 17 +++++++++++++++--
+ 1 file changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs b/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs
+index 9fe90a0ecdc533593001d9a2763f8a21f393ce7d..2a2f524716c909dfa3f04b649b9f078fecd3d1f9 100644
+--- a/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs
++++ b/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs
+@@ -221,11 +221,13 @@ export class DownloadLastDir {
+
+ /**
+ * Pre-processor to extract a domain name to be used with the content-prefs
+- * service. This specially handles data and file URIs so that the download
+- * dirs are recalled in a more consistent way:
++ * service. This specially handles data, file and blob URIs so that the
++ * download dirs are recalled in a more consistent way:
+ * - all file:/// URIs share the same folder
+ * - data: URIs share a folder per mime-type. If a mime-type is not
+ * specified text/plain is assumed.
++ * - blob: blob URIs are tested for http/https and the blob protocol
++ * is stripped.
+ * In any other case the original URL is returned as a string and ContentPrefs
+ * will do its usual parsing.
+ *
+@@ -234,6 +236,9 @@ export class DownloadLastDir {
+ */
+ #cpsGroupFromURL(url) {
+ if (typeof url == "string") {
++ if (url.startsWith("blob:http://") || url.startsWith("blob:https://")) {
++ url = url.replace("blob:", "");
++ }
+ url = new URL(url);
+ } else if (url instanceof Ci.nsIURI) {
+ url = URL.fromURI(url);
+@@ -241,6 +246,14 @@ export class DownloadLastDir {
+ if (!URL.isInstance(url)) {
+ return url;
+ }
++ if (url.protocol == "blob:") {
++ if (
++ url.href.startsWith("blob:http://") ||
++ url.href.startsWith("blob:https://")
++ ) {
++ return url.href.replace("blob:", "");
++ }
++ }
+ if (url.protocol == "data:") {
+ return url.href.match(/^data:[^;,]*/i)[0].replace(/:$/, ":text/plain");
+ }