commit f37b7dac5c5d95a9d18da4e0c30630cd0c8ecbdf
parent 88d5873dc7c8beee2f6782101ad82570f2b93ee1
Author: Tom Schuster <tschuster@mozilla.com>
Date: Fri, 21 Nov 2025 08:24:19 +0000
Bug 2001386 - Support moz-src: in nsContentSecurityUtils::FilenameToFilenameType. r=tjr
Differential Revision: https://phabricator.services.mozilla.com/D273457
Diffstat:
3 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/dom/security/metrics.yaml b/dom/security/metrics.yaml
@@ -349,6 +349,7 @@ security:
Expected values are:
- chromeuri - chrome:// file
- resourceuri - resource:// file
+ - mozsrcuri - moz-src:// file
- datauri - a data URI
- bloburi - a blob URI
- abouturi - an about URI
diff --git a/dom/security/nsContentSecurityUtils.cpp b/dom/security/nsContentSecurityUtils.cpp
@@ -321,6 +321,7 @@ FilenameTypeAndDetails nsContentSecurityUtils::FilenameToFilenameType(
// These are strings because the Telemetry Events API only accepts strings
static constexpr auto kChromeURI = "chromeuri"_ns;
static constexpr auto kResourceURI = "resourceuri"_ns;
+ static constexpr auto kMozSrcURI = "mozsrcuri"_ns;
static constexpr auto kBlobUri = "bloburi"_ns;
static constexpr auto kDataUri = "dataurl"_ns;
static constexpr auto kAboutUri = "abouturi"_ns;
@@ -372,6 +373,9 @@ FilenameTypeAndDetails nsContentSecurityUtils::FilenameToFilenameType(
}
return FilenameTypeAndDetails(kResourceURI, Some(StripQueryRef(fileName)));
}
+ if (StringBeginsWith(fileName, "moz-src://"_ns)) {
+ return FilenameTypeAndDetails(kMozSrcURI, Some(StripQueryRef(fileName)));
+ }
// blob: and data:
if (StringBeginsWith(fileName, "blob:"_ns)) {
diff --git a/dom/security/test/gtest/TestFilenameEvalParser.cpp b/dom/security/test/gtest/TestFilenameEvalParser.cpp
@@ -17,6 +17,7 @@
static constexpr auto kChromeURI = "chromeuri"_ns;
static constexpr auto kResourceURI = "resourceuri"_ns;
+static constexpr auto kMozSrcURI = "mozsrcuri"_ns;
static constexpr auto kBlobUri = "bloburi"_ns;
static constexpr auto kDataUri = "dataurl"_ns;
static constexpr auto kAboutUri = "abouturi"_ns;
@@ -78,6 +79,22 @@ TEST(FilenameEvalParser, ResourceChrome)
ASSERT_EQ(ret.first, kChromeURI);
ASSERT_EQ(ret.second.value(), "chrome://foo/bar.js"_ns);
}
+ {
+ constexpr auto str =
+ "moz-src:///toolkit/components/search/SearchUtils.sys.mjs"_ns;
+ FilenameTypeAndDetails ret =
+ nsContentSecurityUtils::FilenameToFilenameType(str, false);
+ ASSERT_EQ(ret.first, kMozSrcURI);
+ ASSERT_EQ(ret.second.value(), str);
+ }
+ {
+ constexpr auto str =
+ "moz-src:///browser/components/genai/LinkPreview.sys.mjs"_ns;
+ FilenameTypeAndDetails ret =
+ nsContentSecurityUtils::FilenameToFilenameType(str, false);
+ ASSERT_EQ(ret.first, kMozSrcURI);
+ ASSERT_EQ(ret.second.value(), str);
+ }
}
TEST(FilenameEvalParser, BlobData)