tor-browser

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

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:
Mdom/script/ScriptLoadHandler.cpp | 12------------
Mdom/script/ScriptLoader.cpp | 12++++++++++++
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); } }