mozilla-bmo1822730.patch
branchfirefox122
changeset 1200 2a0735b1eb92
parent 1193 16de98d33e97
--- a/mozilla-bmo1822730.patch	Tue Jan 23 17:32:46 2024 +0100
+++ b/mozilla-bmo1822730.patch	Thu Feb 22 20:31:18 2024 +0100
@@ -3,13 +3,18 @@
 # Date 1695432215 25200
 #      Fri Sep 22 18:23:35 2023 -0700
 # Node ID e6a8a9f0956d124e8de34eb4bcf09d8e17077d9d
-# Parent  677cbf2e64cdcd3a93e644f781be2bdc2529ba1a
+# Parent  5dbbabbfaca21d2c5994f95ed095313284611c44
 Bug 1822730 - Add basic blob protocol handling for blob URIs that contain parsable http/s protocols
 
 diff --git a/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs b/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs
 --- a/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs
 +++ b/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs
-@@ -221,11 +221,13 @@ export class DownloadLastDir {
+@@ -216,38 +216,49 @@ export class DownloadLastDir {
+       Services.prefs.setComplexValue(LAST_DIR_PREF, nsIFile, aFile);
+     } else if (Services.prefs.prefHasUserValue(LAST_DIR_PREF)) {
+       Services.prefs.clearUserPref(LAST_DIR_PREF);
+     }
+   }
  
    /**
     * Pre-processor to extract a domain name to be used with the content-prefs
@@ -20,12 +25,13 @@
     *  - 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.
+    *  - blob: URIs share the same folder as their origin. This is done by
+    *    ContentPrefs already, so we just let the url fall-through.
     * 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 {
+    * @param {string|nsIURI|URL} url The URL to parse
+    * @returns {string} the domain name to use, or the original url.
     */
    #cpsGroupFromURL(url) {
      if (typeof url == "string") {
@@ -35,7 +41,7 @@
        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;
      }
@@ -50,3 +56,8 @@
      if (url.protocol == "data:") {
        return url.href.match(/^data:[^;,]*/i)[0].replace(/:$/, ":text/plain");
      }
+     if (url.protocol == "file:") {
+       return "file:///";
+     }
+     return url.href;
+   }