mirror of
https://github.com/roytam1/basilisk55.git
synced 2026-05-27 00:41:46 +00:00
import from UXP: Issue #618 - Further align error handling for module scripts with the spec (743bdc04)
This commit is contained in:
@@ -43,10 +43,16 @@ void ModuleLoadRequest::Cancel()
|
||||
ScriptLoadRequest::Cancel();
|
||||
mModuleScript = nullptr;
|
||||
mProgress = ScriptLoadRequest::Progress::Ready;
|
||||
CancelImports();
|
||||
mReady.RejectIfExists(NS_ERROR_DOM_ABORT_ERR, __func__);
|
||||
}
|
||||
|
||||
void
|
||||
ModuleLoadRequest::CancelImports()
|
||||
{
|
||||
for (size_t i = 0; i < mImports.Length(); i++) {
|
||||
mImports[i]->Cancel();
|
||||
}
|
||||
mReady.RejectIfExists(NS_ERROR_FAILURE, __func__);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -77,25 +83,53 @@ ModuleLoadRequest::ModuleLoaded()
|
||||
// been loaded.
|
||||
|
||||
mModuleScript = mLoader->GetFetchedModule(mURI);
|
||||
if (!mModuleScript || mModuleScript->IsErrored()) {
|
||||
ModuleErrored();
|
||||
return;
|
||||
}
|
||||
|
||||
mLoader->StartFetchingModuleDependencies(this);
|
||||
}
|
||||
|
||||
void
|
||||
ModuleLoadRequest::ModuleErrored()
|
||||
{
|
||||
mLoader->CheckModuleDependenciesLoaded(this);
|
||||
MOZ_ASSERT(!mModuleScript || mModuleScript->IsErrored());
|
||||
|
||||
CancelImports();
|
||||
SetReady();
|
||||
LoadFinished();
|
||||
}
|
||||
|
||||
void
|
||||
ModuleLoadRequest::DependenciesLoaded()
|
||||
{
|
||||
// The module and all of its dependencies have been successfully fetched and
|
||||
// compiled.
|
||||
|
||||
MOZ_ASSERT(mModuleScript);
|
||||
|
||||
mLoader->CheckModuleDependenciesLoaded(this);
|
||||
SetReady();
|
||||
mLoader->ProcessLoadedModuleTree(this);
|
||||
mLoader = nullptr;
|
||||
mParent = nullptr;
|
||||
LoadFinished();
|
||||
}
|
||||
|
||||
void
|
||||
ModuleLoadRequest::LoadFailed()
|
||||
{
|
||||
// We failed to load the source text or an error occurred unrelated to the
|
||||
// content of the module (e.g. OOM).
|
||||
|
||||
MOZ_ASSERT(!mModuleScript);
|
||||
|
||||
Cancel();
|
||||
LoadFinished();
|
||||
}
|
||||
|
||||
void
|
||||
ModuleLoadRequest::LoadFinished()
|
||||
{
|
||||
mLoader->ProcessLoadedModuleTree(this);
|
||||
mLoader = nullptr;
|
||||
mParent = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user