commit 793840c062418aea8105375bb9f7be4721d47d01
parent 4998e85111b68faae1379f1de33d4e4a45d17dae
Author: Tooru Fujisawa <arai_a@mac.com>
Date: Thu, 23 Oct 2025 04:16:55 +0000
Bug 1992341 - Part 1: Move the DiskCacheReference handling into ScriptLoader. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D269518
Diffstat:
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/dom/script/ScriptLoadHandler.cpp b/dom/script/ScriptLoadHandler.cpp
@@ -467,22 +467,10 @@ ScriptLoadHandler::OnStreamComplete(nsIIncrementalStreamLoader* aLoader,
// Everything went well, keep the CacheInfoChannel alive such that we can
// later save the bytecode on the cache entry.
- if (NS_SUCCEEDED(rv) && mRequest->IsSource() &&
- StaticPrefs::dom_script_loader_bytecode_cache_enabled()) {
- mRequest->getLoadedScript()->mCacheInfo = do_QueryInterface(channelRequest);
- LOG(("ScriptLoadRequest (%p): nsICacheInfoChannel = %p", mRequest.get(),
- mRequest->getLoadedScript()->mCacheInfo.get()));
- }
-
// we have to mediate and use mRequest.
rv = mScriptLoader->OnStreamComplete(aLoader, mRequest, aStatus, mSRIStatus,
mSRIDataVerifier.get());
- // In case of failure, clear the mCacheInfoChannel to avoid keeping it alive.
- if (NS_FAILED(rv)) {
- mRequest->getLoadedScript()->DropDiskCacheReference();
- }
-
return rv;
}
diff --git a/dom/script/ScriptLoader.cpp b/dom/script/ScriptLoader.cpp
@@ -3975,6 +3975,17 @@ nsresult ScriptLoader::OnStreamComplete(
nsresult rv = VerifySRI(aRequest, aLoader, aSRIStatus, aSRIDataVerifier);
if (NS_SUCCEEDED(rv)) {
+ if (aRequest->IsSource() &&
+ StaticPrefs::dom_script_loader_bytecode_cache_enabled()) {
+ nsCOMPtr<nsIRequest> channelRequest;
+ aLoader->GetRequest(getter_AddRefs(channelRequest));
+
+ aRequest->getLoadedScript()->mCacheInfo =
+ do_QueryInterface(channelRequest);
+ LOG(("ScriptLoadRequest (%p): nsICacheInfoChannel = %p", aRequest,
+ aRequest->getLoadedScript()->mCacheInfo.get()));
+ }
+
// If we are loading from source, save the computed SRI hash or a dummy SRI
// hash in case we are going to save the bytecode of this script in the
// cache.
@@ -3987,6 +3998,7 @@ nsresult ScriptLoader::OnStreamComplete(
}
if (NS_FAILED(rv)) {
+ aRequest->getLoadedScript()->DropDiskCacheReference();
ReportErrorToConsole(aRequest, rv);
}
}