Bug 1839316: part 11) Factor preparing the incremental stream loader out of `StartLoadInternal`. r=smaug

Differential Revision: https://phabricator.services.mozilla.com/D187181
This commit is contained in:
Mirko Brodesser 2023-09-05 12:07:20 +00:00
Родитель 6ab61c105c
Коммит 06c09b51d1
2 изменённых файлов: 24 добавлений и 14 удалений

Просмотреть файл

@ -765,6 +765,26 @@ nsresult ScriptLoader::PrepareHttpRequestAndInitiatorType(
return rv;
}
nsresult ScriptLoader::PrepareIncrementalStreamLoader(
nsIIncrementalStreamLoader** aOutLoader, ScriptLoadRequest* aRequest) {
UniquePtr<mozilla::dom::SRICheckDataVerifier> sriDataVerifier;
if (!aRequest->mIntegrity.IsEmpty()) {
nsAutoCString sourceUri;
if (mDocument->GetDocumentURI()) {
mDocument->GetDocumentURI()->GetAsciiSpec(sourceUri);
}
sriDataVerifier = MakeUnique<SRICheckDataVerifier>(aRequest->mIntegrity,
sourceUri, mReporter);
}
RefPtr<ScriptLoadHandler> handler =
new ScriptLoadHandler(this, aRequest, std::move(sriDataVerifier));
nsresult rv = NS_NewIncrementalStreamLoader(aOutLoader, handler);
NS_ENSURE_SUCCESS(rv, rv);
return rv;
}
nsresult ScriptLoader::StartLoadInternal(
ScriptLoadRequest* aRequest, nsSecurityFlags securityFlags,
const Maybe<nsAutoString>& aCharsetForPreload) {
@ -808,21 +828,8 @@ nsresult ScriptLoader::StartLoadInternal(
nsINetworkPredictor::LEARN_LOAD_SUBRESOURCE,
mDocument->NodePrincipal()->OriginAttributesRef());
UniquePtr<mozilla::dom::SRICheckDataVerifier> sriDataVerifier;
if (!aRequest->mIntegrity.IsEmpty()) {
nsAutoCString sourceUri;
if (mDocument->GetDocumentURI()) {
mDocument->GetDocumentURI()->GetAsciiSpec(sourceUri);
}
sriDataVerifier = MakeUnique<SRICheckDataVerifier>(aRequest->mIntegrity,
sourceUri, mReporter);
}
RefPtr<ScriptLoadHandler> handler =
new ScriptLoadHandler(this, aRequest, std::move(sriDataVerifier));
nsCOMPtr<nsIIncrementalStreamLoader> loader;
rv = NS_NewIncrementalStreamLoader(getter_AddRefs(loader), handler);
rv = PrepareIncrementalStreamLoader(getter_AddRefs(loader), aRequest);
NS_ENSURE_SUCCESS(rv, rv);
auto key = PreloadHashKey::CreateAsScript(

Просмотреть файл

@ -512,6 +512,9 @@ class ScriptLoader final : public JS::loader::ScriptLoaderInterface {
nsIChannel* aChannel, ScriptLoadRequest* aRequest,
const Maybe<nsAutoString>& aCharsetForPreload);
[[nodiscard]] nsresult PrepareIncrementalStreamLoader(
nsIIncrementalStreamLoader** aOutLoader, ScriptLoadRequest* aRequest);
/**
* Start a load for a script (module or classic) URI.
*