tor-browser

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

commit a6901c3f1d520a3893be49cea4da6ee031f72a72
parent c2b5cb885aaa3a83843c8f8e983efe63f8cf4068
Author: Tooru Fujisawa <arai_a@mac.com>
Date:   Wed, 22 Oct 2025 04:35:34 +0000

Bug 1991607 - Part 6: Remove ScriptLoadRequest::mReferrerPolicy. r=bthrall,dom-worker-reviewers,edenchuang

Differential Revision: https://phabricator.services.mozilla.com/D267355

Diffstat:
Mdom/script/ModuleLoader.cpp | 11+++++------
Mdom/script/ScriptLoader.cpp | 5++---
Mdom/workers/ScriptLoader.cpp | 9++++-----
Mdom/workers/loader/WorkerModuleLoader.cpp | 6+++---
Mdom/worklet/WorkletFetchHandler.cpp | 5++---
Mdom/worklet/loader/WorkletModuleLoader.cpp | 4++--
Mjs/loader/LoadedScript.h | 9+++++++++
Mjs/loader/ModuleLoadRequest.cpp | 8+++-----
Mjs/loader/ModuleLoadRequest.h | 5-----
Mjs/loader/ScriptLoadRequest.cpp | 18++++++++----------
Mjs/loader/ScriptLoadRequest.h | 9---------
Mjs/xpconnect/loader/SyncModuleLoader.cpp | 6+++---
Mjs/xpconnect/loader/mozJSModuleLoader.cpp | 3+--
13 files changed, 42 insertions(+), 56 deletions(-)

diff --git a/dom/script/ModuleLoader.cpp b/dom/script/ModuleLoader.cpp @@ -450,10 +450,9 @@ already_AddRefed<ModuleLoadRequest> ModuleLoader::CreateTopLevel( ScriptFetchOptions* aFetchOptions, const SRIMetadata& aIntegrity, nsIURI* aReferrer, ScriptLoadContext* aContext, ScriptLoadRequestType aRequestType) { - RefPtr<ModuleLoadRequest> request = - new ModuleLoadRequest(aURI, JS::ModuleType::JavaScript, aReferrerPolicy, - aFetchOptions, aIntegrity, aReferrer, aContext, - ModuleLoadRequest::Kind::TopLevel, this, nullptr); + RefPtr<ModuleLoadRequest> request = new ModuleLoadRequest( + aURI, JS::ModuleType::JavaScript, aFetchOptions, aIntegrity, aReferrer, + aContext, ModuleLoadRequest::Kind::TopLevel, this, nullptr); GetScriptLoader()->TryUseCache(aReferrerPolicy, request, aElement, aFetchOptions->mNonce, aRequestType); @@ -485,8 +484,8 @@ already_AddRefed<ModuleLoadRequest> ModuleLoader::CreateRequest( JS::ModuleType moduleType = GetModuleRequestType(aCx, aModuleRequest); RefPtr<ModuleLoadRequest> request = - new ModuleLoadRequest(aURI, moduleType, aReferrerPolicy, aOptions, - aSriMetadata, aBaseURL, context, kind, this, root); + new ModuleLoadRequest(aURI, moduleType, aOptions, aSriMetadata, aBaseURL, + context, kind, this, root); GetScriptLoader()->TryUseCache(aReferrerPolicy, request); diff --git a/dom/script/ScriptLoader.cpp b/dom/script/ScriptLoader.cpp @@ -1141,9 +1141,8 @@ already_AddRefed<ScriptLoadRequest> ScriptLoader::CreateLoadRequest( MOZ_ASSERT(aKind == ScriptKind::eClassic || aKind == ScriptKind::eImportMap); - RefPtr<ScriptLoadRequest> request = - new ScriptLoadRequest(aKind, aURI, aReferrerPolicy, fetchOptions, - aIntegrity, referrer, context); + RefPtr<ScriptLoadRequest> request = new ScriptLoadRequest( + aKind, aURI, fetchOptions, aIntegrity, referrer, context); TryUseCache(aReferrerPolicy, request, aElement, aNonce, aRequestType); diff --git a/dom/workers/ScriptLoader.cpp b/dom/workers/ScriptLoader.cpp @@ -699,8 +699,8 @@ already_AddRefed<ScriptLoadRequest> WorkerScriptLoader::CreateScriptLoadRequest( // Bug 1817259 - For now the debugger scripts are always loaded a Classic. if (mWorkerRef->Private()->WorkerType() == WorkerType::Classic || IsDebuggerScript()) { - request = new ScriptLoadRequest(ScriptKind::eClassic, uri, referrerPolicy, - fetchOptions, SRIMetadata(), + request = new ScriptLoadRequest(ScriptKind::eClassic, uri, fetchOptions, + SRIMetadata(), nullptr, // mReferrer loadContext); } else { @@ -729,9 +729,8 @@ already_AddRefed<ScriptLoadRequest> WorkerScriptLoader::CreateScriptLoadRequest( // Part of Step 2. This sets the Top-level flag to true request = new ModuleLoadRequest( - uri, JS::ModuleType::JavaScript, referrerPolicy, fetchOptions, - SRIMetadata(), referrer, loadContext, ModuleLoadRequest::Kind::TopLevel, - moduleLoader, nullptr); + uri, JS::ModuleType::JavaScript, fetchOptions, SRIMetadata(), referrer, + loadContext, ModuleLoadRequest::Kind::TopLevel, moduleLoader, nullptr); } // Set the mURL, it will be used for error handling and debugging. diff --git a/dom/workers/loader/WorkerModuleLoader.cpp b/dom/workers/loader/WorkerModuleLoader.cpp @@ -96,9 +96,9 @@ already_AddRefed<ModuleLoadRequest> WorkerModuleLoader::CreateRequest( } JS::ModuleType moduleType = JS::GetModuleRequestType(aCx, aModuleRequest); - RefPtr<ModuleLoadRequest> request = new ModuleLoadRequest( - aURI, moduleType, aReferrerPolicy, aOptions, SRIMetadata(), aBaseURL, - loadContext, kind, this, root); + RefPtr<ModuleLoadRequest> request = + new ModuleLoadRequest(aURI, moduleType, aOptions, SRIMetadata(), aBaseURL, + loadContext, kind, this, root); request->mURL = request->mURI->GetSpecOrDefault(); request->NoCacheEntryFound(aReferrerPolicy); diff --git a/dom/worklet/WorkletFetchHandler.cpp b/dom/worklet/WorkletFetchHandler.cpp @@ -114,9 +114,8 @@ NS_IMETHODIMP StartModuleLoadRunnable::RunOnWorkletThread() { // Part of Step 2. This sets the Top-level flag to true RefPtr<ModuleLoadRequest> request = new ModuleLoadRequest( - mURI, JS::ModuleType::JavaScript, ReferrerPolicy::_empty, fetchOptions, - SRIMetadata(), mReferrer, loadContext, ModuleLoadRequest::Kind::TopLevel, - moduleLoader, nullptr); + mURI, JS::ModuleType::JavaScript, fetchOptions, SRIMetadata(), mReferrer, + loadContext, ModuleLoadRequest::Kind::TopLevel, moduleLoader, nullptr); request->mURL = request->mURI->GetSpecOrDefault(); request->NoCacheEntryFound(ReferrerPolicy::_empty); diff --git a/dom/worklet/loader/WorkletModuleLoader.cpp b/dom/worklet/loader/WorkletModuleLoader.cpp @@ -79,8 +79,8 @@ already_AddRefed<ModuleLoadRequest> WorkletModuleLoader::CreateRequest( context->GetHandlerRef(); RefPtr<WorkletLoadContext> loadContext = new WorkletLoadContext(handlerRef); RefPtr<ModuleLoadRequest> request = new ModuleLoadRequest( - aURI, moduleType, aReferrerPolicy, aOptions, SRIMetadata(), aBaseURL, - loadContext, ModuleLoadRequest::Kind::StaticImport, this, root); + aURI, moduleType, aOptions, SRIMetadata(), aBaseURL, loadContext, + ModuleLoadRequest::Kind::StaticImport, this, root); request->mURL = request->mURI->GetSpecOrDefault(); request->NoCacheEntryFound(aReferrerPolicy); diff --git a/js/loader/LoadedScript.h b/js/loader/LoadedScript.h @@ -295,6 +295,8 @@ class LoadedScript : public nsIMemoryReporter { const ScriptKind mKind; protected: + // The referrer policy used for the initial fetch and for fetching any + // imported modules mozilla::dom::ReferrerPolicy mReferrerPolicy; public: @@ -362,6 +364,13 @@ class LoadedScriptDelegate { return GetLoadedScript()->IsImportMapScript(); } + mozilla::dom::ReferrerPolicy ReferrerPolicy() const { + return GetLoadedScript()->ReferrerPolicy(); + } + void UpdateReferrerPolicy(mozilla::dom::ReferrerPolicy aReferrerPolicy) { + GetLoadedScript()->AsModuleScript()->UpdateReferrerPolicy(aReferrerPolicy); + } + bool IsUnknownDataType() const { return GetLoadedScript()->IsUnknownDataType(); } diff --git a/js/loader/ModuleLoadRequest.cpp b/js/loader/ModuleLoadRequest.cpp @@ -45,14 +45,12 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(ModuleLoadRequest, NS_IMPL_CYCLE_COLLECTION_TRACE_END ModuleLoadRequest::ModuleLoadRequest( - nsIURI* aURI, ModuleType aModuleType, - mozilla::dom::ReferrerPolicy aReferrerPolicy, - ScriptFetchOptions* aFetchOptions, + nsIURI* aURI, ModuleType aModuleType, ScriptFetchOptions* aFetchOptions, const mozilla::dom::SRIMetadata& aIntegrity, nsIURI* aReferrer, LoadContextBase* aContext, Kind aKind, ModuleLoaderBase* aLoader, ModuleLoadRequest* aRootModule) - : ScriptLoadRequest(ScriptKind::eModule, aURI, aReferrerPolicy, - aFetchOptions, aIntegrity, aReferrer, aContext), + : ScriptLoadRequest(ScriptKind::eModule, aURI, aFetchOptions, aIntegrity, + aReferrer, aContext), mKind(aKind), mModuleType(aModuleType), mErroredLoadingImports(false), diff --git a/js/loader/ModuleLoadRequest.h b/js/loader/ModuleLoadRequest.h @@ -51,7 +51,6 @@ class ModuleLoadRequest final : public ScriptLoadRequest { }; ModuleLoadRequest(nsIURI* aURI, ModuleType aModuleType, - mozilla::dom::ReferrerPolicy aReferrerPolicy, ScriptFetchOptions* aFetchOptions, const SRIMetadata& aIntegrity, nsIURI* aReferrer, LoadContextBase* aContext, Kind aKind, @@ -107,10 +106,6 @@ class ModuleLoadRequest final : public ScriptLoadRequest { void LoadFinished(); - void UpdateReferrerPolicy(mozilla::dom::ReferrerPolicy aReferrerPolicy) { - mReferrerPolicy = aReferrerPolicy; - } - const Kind mKind; void SetErroredLoadingImports() { diff --git a/js/loader/ScriptLoadRequest.cpp b/js/loader/ScriptLoadRequest.cpp @@ -86,16 +86,15 @@ NS_IMPL_CYCLE_COLLECTION(ScriptLoadRequest, mFetchOptions, mLoadedScript, NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(ScriptLoadRequest) NS_IMPL_CYCLE_COLLECTION_TRACE_END -ScriptLoadRequest::ScriptLoadRequest( - ScriptKind aKind, nsIURI* aURI, - mozilla::dom::ReferrerPolicy aReferrerPolicy, - ScriptFetchOptions* aFetchOptions, const SRIMetadata& aIntegrity, - nsIURI* aReferrer, LoadContextBase* aContext) +ScriptLoadRequest::ScriptLoadRequest(ScriptKind aKind, nsIURI* aURI, + ScriptFetchOptions* aFetchOptions, + const SRIMetadata& aIntegrity, + nsIURI* aReferrer, + LoadContextBase* aContext) : mKind(aKind), mState(State::CheckingCache), mFetchSourceOnly(false), mHasSourceMapURL_(false), - mReferrerPolicy(aReferrerPolicy), mFetchOptions(aFetchOptions), mIntegrity(aIntegrity), mReferrer(aReferrer), @@ -230,16 +229,15 @@ void ScriptLoadRequest::NoCacheEntryFound( // At the time where we check in the cache, the mBaseURL is not set, as this // is resolved by the network. Thus we use the mURI, for checking the cache // and later replace the mBaseURL using what the Channel->GetURI will provide. - MOZ_ASSERT(mReferrerPolicy == aReferrerPolicy); switch (mKind) { case ScriptKind::eClassic: - mLoadedScript = new ClassicScript(mReferrerPolicy, mFetchOptions, mURI); + mLoadedScript = new ClassicScript(aReferrerPolicy, mFetchOptions, mURI); break; case ScriptKind::eImportMap: - mLoadedScript = new ImportMapScript(mReferrerPolicy, mFetchOptions, mURI); + mLoadedScript = new ImportMapScript(aReferrerPolicy, mFetchOptions, mURI); break; case ScriptKind::eModule: - mLoadedScript = new ModuleScript(mReferrerPolicy, mFetchOptions, mURI); + mLoadedScript = new ModuleScript(aReferrerPolicy, mFetchOptions, mURI); break; case ScriptKind::eEvent: MOZ_ASSERT_UNREACHABLE("EventScripts are not using ScriptLoadRequest"); diff --git a/js/loader/ScriptLoadRequest.h b/js/loader/ScriptLoadRequest.h @@ -92,7 +92,6 @@ class ScriptLoadRequest : public nsISupports, public: using SRIMetadata = mozilla::dom::SRIMetadata; ScriptLoadRequest(ScriptKind aKind, nsIURI* aURI, - mozilla::dom::ReferrerPolicy aReferrerPolicy, ScriptFetchOptions* aFetchOptions, const SRIMetadata& aIntegrity, nsIURI* aReferrer, LoadContextBase* aContext); @@ -156,10 +155,6 @@ class ScriptLoadRequest : public nsISupports, return mFetchOptions->mFetchPriority; } - enum mozilla::dom::ReferrerPolicy ReferrerPolicy() const { - return mReferrerPolicy; - } - enum ParserMetadata ParserMetadata() const { return mFetchOptions->mParserMetadata; } @@ -269,10 +264,6 @@ class ScriptLoadRequest : public nsISupports, CachingPlan mDiskCachingPlan = CachingPlan::Uninitialized; CachingPlan mMemoryCachingPlan = CachingPlan::Uninitialized; - // The referrer policy used for the initial fetch and for fetching any - // imported modules - enum mozilla::dom::ReferrerPolicy mReferrerPolicy; - CacheExpirationTime mExpirationTime = CacheExpirationTime::Never(); RefPtr<ScriptFetchOptions> mFetchOptions; diff --git a/js/xpconnect/loader/SyncModuleLoader.cpp b/js/xpconnect/loader/SyncModuleLoader.cpp @@ -80,9 +80,9 @@ already_AddRefed<ModuleLoadRequest> SyncModuleLoader::CreateRequest( kind = ModuleLoadRequest::Kind::StaticImport; } - RefPtr<ModuleLoadRequest> request = new ModuleLoadRequest( - aURI, moduleType, aReferrerPolicy, aOptions, dom::SRIMetadata(), aBaseURL, - context, kind, this, root); + RefPtr<ModuleLoadRequest> request = + new ModuleLoadRequest(aURI, moduleType, aOptions, dom::SRIMetadata(), + aBaseURL, context, kind, this, root); request->NoCacheEntryFound(aReferrerPolicy); return request.forget(); } diff --git a/js/xpconnect/loader/mozJSModuleLoader.cpp b/js/xpconnect/loader/mozJSModuleLoader.cpp @@ -1085,8 +1085,7 @@ nsresult mozJSModuleLoader::ImportESModule( RefPtr<SyncLoadContext> context = new SyncLoadContext(); RefPtr<ModuleLoadRequest> request = new ModuleLoadRequest( - uri, JS::ModuleType::JavaScript, dom::ReferrerPolicy::No_referrer, - options, dom::SRIMetadata(), + uri, JS::ModuleType::JavaScript, options, dom::SRIMetadata(), /* aReferrer = */ nullptr, context, ModuleLoadRequest::Kind::TopLevel, mModuleLoader, nullptr);