tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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:
Mdom/security/metrics.yaml | 1+
Mdom/security/nsContentSecurityUtils.cpp | 4++++
Mdom/security/test/gtest/TestFilenameEvalParser.cpp | 17+++++++++++++++++
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)