Merge remote-tracking branch 'origin/tracking' into custom

This commit is contained in:
roytam1 2023-11-30 10:05:11 +08:00
commit c889903081
34 changed files with 846 additions and 195 deletions

View file

@ -185,7 +185,11 @@ ScriptLoadRequest::MaybeCancelOffThreadScript()
}
JSContext* cx = danger::GetJSContext();
JS::CancelOffThreadScript(cx, mOffThreadToken);
if (IsModuleRequest()) {
JS::CancelOffThreadModule(cx, mOffThreadToken);
} else {
JS::CancelOffThreadScript(cx, mOffThreadToken);
}
mOffThreadToken = nullptr;
}
@ -1109,8 +1113,9 @@ void ScriptLoader::EnsureModuleHooksInitialized() {
JS::SetModuleResolveHook(rt, HostResolveImportedModule);
JS::SetModuleMetadataHook(jsapi.cx(), HostPopulateImportMeta);
JS::SetScriptPrivateFinalizeHook(jsapi.cx(), HostFinalizeTopLevelScript);
JS::SetScriptPrivateReferenceHooks(jsapi.cx(), HostAddRefTopLevelScript,
HostReleaseTopLevelScript);
Preferences::RegisterCallbackAndCall(DynamicImportPrefChangedCallback,
"javascript.options.dynamicImport",
(void*)nullptr);
@ -2648,7 +2653,7 @@ ScriptLoader::OnStreamComplete(nsIIncrementalStreamLoader* aLoader,
// Process our request and/or any pending ones
ProcessPendingRequests();
return NS_OK;
return rv;
}
nsresult
@ -2758,6 +2763,9 @@ ScriptLoader::HandleLoadError(ScriptLoadRequest *aRequest, nsresult aResult) {
if (aRequest->isInList()) {
RefPtr<ScriptLoadRequest> req = mDynamicImportRequests.Steal(aRequest);
modReq->Cancel();
// FinishDynamicImport must happen exactly once for each dynamic import
// request. If the load is aborted we do it when we remove the request
// from mDynamicImportRequests.
FinishDynamicImport(modReq, aResult);
}
} else {
@ -2979,8 +2987,12 @@ ScriptLoader::ParsingComplete(bool aTerminated)
for (ScriptLoadRequest* req = mDynamicImportRequests.getFirst(); req;
req = req->getNext()) {
req->Cancel();
// FinishDynamicImport must happen exactly once for each dynamic import
// request. If the load is aborted we do it when we remove the request
// from mDynamicImportRequests.
FinishDynamicImport(req->AsModuleRequest(), NS_ERROR_ABORT);
}
mDynamicImportRequests.Clear();
if (mParserBlockingRequest) {
mParserBlockingRequest->Cancel();