commit 37731eea187a14665bb0c26aee6bf1bc80c3afe7
parent 2d1895402a72c669fa5a465cb897dc26200e7f7d
Author: Tooru Fujisawa <arai_a@mac.com>
Date: Wed, 22 Oct 2025 11:17:16 +0000
Bug 1991607 - Part 6: Remove ScriptLoadRequest::mReferrerPolicy. r=bthrall,dom-worker-reviewers,edenchuang
Differential Revision: https://phabricator.services.mozilla.com/D267355
Diffstat:
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);