From d189a217e96e8266e5e105d714ce4de48de6f522 Mon Sep 17 00:00:00 2001 From: Nika Layzell Date: Fri, 28 Jun 2024 17:34:07 +0000 Subject: [PATCH] Bug 1901387 - Part 1: Ensure URLInfo is safe to use OMT, r=extension-reviewers,robwu Previously accessing Scheme() on a URLInfo was main-thread-only. As more extension methods are used OMT, this needs to be switched to the threadsafe NS_Atomize method instead. Differential Revision: https://phabricator.services.mozilla.com/D215024 --- toolkit/components/extensions/MatchPattern.cpp | 3 ++- toolkit/components/extensions/MatchPattern.h | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/toolkit/components/extensions/MatchPattern.cpp b/toolkit/components/extensions/MatchPattern.cpp index 13d117e9171f..6a627650d675 100644 --- a/toolkit/components/extensions/MatchPattern.cpp +++ b/toolkit/components/extensions/MatchPattern.cpp @@ -119,7 +119,7 @@ nsAtom* URLInfo::Scheme() const { if (!mScheme) { nsCString scheme; if (NS_SUCCEEDED(mURI->GetScheme(scheme))) { - mScheme = NS_AtomizeMainThread(NS_ConvertASCIItoUTF16(scheme)); + mScheme = NS_Atomize(scheme); } } return mScheme; @@ -196,6 +196,7 @@ bool URLInfo::InheritsPrincipal() const { } bool URLInfo::IsNonOpaqueURL() const { + MOZ_ASSERT(NS_IsMainThread()); if (!mIsNonOpaqueURL.isSome()) { RefPtr nonOpaqueSchemes = NonOpaqueSchemes(); mIsNonOpaqueURL.emplace(nonOpaqueSchemes->Contains(Scheme())); diff --git a/toolkit/components/extensions/MatchPattern.h b/toolkit/components/extensions/MatchPattern.h index 67a051648dc3..17f7b717e3dd 100644 --- a/toolkit/components/extensions/MatchPattern.h +++ b/toolkit/components/extensions/MatchPattern.h @@ -112,6 +112,8 @@ class URLInfo final { // that document were to have an opaque origin (null principal). // These URLs are more verbose than the precursor (origin) of a null // principal, and therefore preferred for matching purposes. + // + // NOTE: This method is main-thread only bool IsNonOpaqueURL() const; private: