import from UXP: [DOM] Fix access to shared RuntimeService::mNavigatorProperties. (2f1af755)

This commit is contained in:
2026-04-24 10:14:54 +08:00
parent 74d13a53ae
commit 7614fe3db4
3 changed files with 12 additions and 4 deletions
+8 -1
View File
@@ -1636,6 +1636,8 @@ RuntimeService::RegisterWorker(WorkerPrivate* aWorkerPrivate)
}
else {
if (!mNavigatorPropertiesLoaded) {
MutexAutoLock lock(mMutex);
Navigator::AppName(mNavigatorProperties.mAppName,
false /* aUsePrefOverriddenValue */);
if (NS_FAILED(Navigator::GetAppVersion(mNavigatorProperties.mAppVersion,
@@ -2564,6 +2566,7 @@ void
RuntimeService::UpdateAppVersionOverridePreference(const nsAString& aValue)
{
AssertIsOnMainThread();
MutexAutoLock lock(mMutex);
mNavigatorProperties.mAppVersionOverridden = aValue;
}
@@ -2571,6 +2574,7 @@ void
RuntimeService::UpdatePlatformOverridePreference(const nsAString& aValue)
{
AssertIsOnMainThread();
MutexAutoLock lock(mMutex);
mNavigatorProperties.mPlatformOverridden = aValue;
}
@@ -2585,7 +2589,10 @@ RuntimeService::UpdateAllWorkerLanguages(const nsTArray<nsString>& aLanguages)
{
MOZ_ASSERT(NS_IsMainThread());
mNavigatorProperties.mLanguages = aLanguages;
{
MutexAutoLock lock(mMutex);
mNavigatorProperties.mLanguages = aLanguages;
}
BROADCAST_ALL_WORKERS(UpdateLanguages, aLanguages);
}
+3 -2
View File
@@ -75,7 +75,7 @@ class RuntimeService final : public nsIObserver
struct IdleThreadInfo;
mozilla::Mutex mMutex;
mutable mozilla::Mutex mMutex;
// Protected by mMutex.
nsClassHashtable<nsCStringHashKey, WorkerDomainInfo> mDomainMap;
@@ -157,9 +157,10 @@ public:
void
ForgetSharedWorker(WorkerPrivate* aWorkerPrivate);
const NavigatorProperties&
NavigatorProperties
GetNavigatorProperties() const
{
MutexAutoLock lock(mMutex);
return mNavigatorProperties;
}
+1 -1
View File
@@ -51,7 +51,7 @@ WorkerNavigator::Create(bool aOnLine)
RuntimeService* rts = RuntimeService::GetService();
MOZ_ASSERT(rts);
const RuntimeService::NavigatorProperties& properties =
RuntimeService::NavigatorProperties properties =
rts->GetNavigatorProperties();
RefPtr<WorkerNavigator> navigator =