Bug 1247687 - Handle cancellation of long running modules; r=jonco
This is a slightly annoying thing that can happen. When we abruptly cancel (such as an infinitely running script being forcibly terminated) we will be in a state where the EvaluateModule call will finish _after_ the loader is destroyed. So, instead we track if there has been a forcible cancelation, and exit early. Depends on D155690 Differential Revision: https://phabricator.services.mozilla.com/D155568
This commit is contained in:
@@ -1219,6 +1219,11 @@ nsresult ModuleLoaderBase::EvaluateModuleInContext(
|
||||
// unless the user cancels execution.
|
||||
MOZ_ASSERT_IF(ok, !JS_IsExceptionPending(aCx));
|
||||
|
||||
// For long running scripts, the request may be cancelled abruptly.
|
||||
if (request->IsCanceled() || !mLoader) {
|
||||
return NS_ERROR_ABORT;
|
||||
}
|
||||
|
||||
if (!ok) {
|
||||
LOG(("ScriptLoadRequest (%p): evaluation failed", aRequest));
|
||||
// For a dynamic import, the promise is rejected. Otherwise an error is
|
||||
|
||||
Reference in New Issue
Block a user