mirror of
https://github.com/roytam1/UXP.git
synced 2026-05-26 23:18:26 +00:00
Issue #618 - Handle errors for inline module scripts and ensure we update the
module map after fetch errors.
This commit is contained in:
+18
-12
@@ -486,8 +486,6 @@ ScriptLoader::ProcessFetchedModuleSource(ModuleLoadRequest* aRequest)
|
||||
nsresult rv = CreateModuleScript(aRequest);
|
||||
MOZ_ASSERT(NS_FAILED(rv) == !aRequest->mModuleScript);
|
||||
|
||||
SetModuleFetchFinishedAndResumeWaitingRequests(aRequest, rv);
|
||||
|
||||
free(aRequest->mScriptTextBuf);
|
||||
aRequest->mScriptTextBuf = nullptr;
|
||||
aRequest->mScriptTextLength = 0;
|
||||
@@ -497,6 +495,10 @@ ScriptLoader::ProcessFetchedModuleSource(ModuleLoadRequest* aRequest)
|
||||
return rv;
|
||||
}
|
||||
|
||||
if (!aRequest->mIsInline) {
|
||||
SetModuleFetchFinishedAndResumeWaitingRequests(aRequest, rv);
|
||||
}
|
||||
|
||||
if (!aRequest->mModuleScript->HasParseError()) {
|
||||
StartFetchingModuleDependencies(aRequest);
|
||||
}
|
||||
@@ -1457,20 +1459,19 @@ ScriptLoader::ProcessScriptElement(nsIScriptElement *aElement)
|
||||
if (request->IsModuleRequest()) {
|
||||
ModuleLoadRequest* modReq = request->AsModuleRequest();
|
||||
modReq->mBaseURL = mDocument->GetDocBaseURI();
|
||||
rv = CreateModuleScript(modReq);
|
||||
MOZ_ASSERT(NS_FAILED(rv) == !modReq->mModuleScript);
|
||||
if (NS_FAILED(rv)) {
|
||||
modReq->LoadFailed();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (aElement->GetScriptAsync()) {
|
||||
mLoadingAsyncRequests.AppendElement(request);
|
||||
modReq->mIsAsync = true;
|
||||
mLoadingAsyncRequests.AppendElement(modReq);
|
||||
} else {
|
||||
AddDeferRequest(request);
|
||||
AddDeferRequest(modReq);
|
||||
}
|
||||
if (!modReq->mModuleScript->HasParseError()) {
|
||||
StartFetchingModuleDependencies(modReq);
|
||||
|
||||
nsresult rv = ProcessFetchedModuleSource(modReq);
|
||||
if (NS_FAILED(rv)) {
|
||||
HandleLoadError(modReq, rv);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
request->mProgress = ScriptLoadRequest::Progress::Ready;
|
||||
@@ -2324,6 +2325,11 @@ ScriptLoader::HandleLoadError(ScriptLoadRequest *aRequest, nsresult aResult) {
|
||||
mDocument->AddBlockedTrackingNode(cont);
|
||||
}
|
||||
|
||||
if (aRequest->IsModuleRequest() && !aRequest->mIsInline) {
|
||||
auto request = aRequest->AsModuleRequest();
|
||||
SetModuleFetchFinishedAndResumeWaitingRequests(request, aResult);
|
||||
}
|
||||
|
||||
if (aRequest->mIsDefer) {
|
||||
MOZ_ASSERT_IF(aRequest->IsModuleRequest(),
|
||||
aRequest->AsModuleRequest()->IsTopLevel());
|
||||
|
||||
Reference in New Issue
Block a user