commit 38ff0924505c4fe051b76f902766f6ac95f69532
parent 1ef85f97ca493b55ba1ed4dd73906dcde05c0ee9
Author: Tooru Fujisawa <arai_a@mac.com>
Date: Wed, 29 Oct 2025 14:30:55 +0000
Bug 1995985 - Add assertion to avoid using request expiration time for cached case. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D270109
Diffstat:
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/dom/script/ScriptLoader.cpp b/dom/script/ScriptLoader.cpp
@@ -3283,6 +3283,7 @@ ScriptLoader::CacheBehavior ScriptLoader::GetCacheBehavior(
void ScriptLoader::TryCacheRequest(ScriptLoadRequest* aRequest) {
MOZ_ASSERT(aRequest->HasStencil());
+ MOZ_ASSERT(!aRequest->IsCachedStencil());
if (aRequest->IsMarkedNotCacheable()) {
aRequest->ClearStencil();
@@ -3306,11 +3307,10 @@ void ScriptLoader::TryCacheRequest(ScriptLoadRequest* aRequest) {
cacheBehavior = CacheBehavior::Evict;
}
- aRequest->ConvertToCachedStencil();
-
if (cacheBehavior == CacheBehavior::Insert) {
auto loadData =
MakeRefPtr<ScriptLoadData>(this, aRequest, aRequest->getLoadedScript());
+ aRequest->ConvertToCachedStencil();
mCache->Insert(*loadData);
LOG(("ScriptLoader (%p): Inserting in-memory cache for %s.", this,
aRequest->URI()->GetSpecOrDefault().get()));
diff --git a/js/loader/ScriptLoadRequest.h b/js/loader/ScriptLoadRequest.h
@@ -107,7 +107,14 @@ class ScriptLoadRequest : public nsISupports,
ModuleLoadRequest* AsModuleRequest();
const ModuleLoadRequest* AsModuleRequest() const;
- CacheExpirationTime ExpirationTime() const { return mExpirationTime; }
+ CacheExpirationTime ExpirationTime() const {
+ // The request's expiration time is used only when it's received from
+ // necko. For in-memory cached, case, the
+ // SharedSubResourceCache::CompleteSubResource::mExpirationTime field is
+ // used instead.
+ MOZ_ASSERT(!IsCachedStencil());
+ return mExpirationTime;
+ }
void SetMinimumExpirationTime(const CacheExpirationTime& aExpirationTime) {
mExpirationTime.SetMinimum(aExpirationTime);