tor-browser

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

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:
Mdom/script/ScriptLoader.cpp | 4++--
Mjs/loader/ScriptLoadRequest.h | 9++++++++-
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);