Bug 1875836 - Part 2: Support dynamic import in ComponentModuleLoader. r=jonco

Differential Revision: https://phabricator.services.mozilla.com/D199279
This commit is contained in:
Tooru Fujisawa
2024-01-23 23:29:53 +00:00
parent 8d9ed15dd6
commit 412ee81bc1
4 changed files with 73 additions and 5 deletions

View File

@@ -200,6 +200,12 @@ class ModuleLoaderBase : public nsISupports {
virtual ~ModuleLoaderBase();
#ifdef DEBUG
const ScriptLoadRequestList& DynamicImportRequests() const {
return mDynamicImportRequests;
}
#endif
public:
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
NS_DECL_CYCLE_COLLECTION_CLASS(ModuleLoaderBase)
@@ -234,6 +240,9 @@ class ModuleLoaderBase : public nsISupports {
JSContext* aCx, nsIURI* aURI, LoadedScript* aMaybeActiveScript,
JS::Handle<JSString*> aSpecifier, JS::Handle<JSObject*> aPromise) = 0;
// Called when dynamic import started successfully.
virtual void OnDynamicImportStarted(ModuleLoadRequest* aRequest) {}
// Check whether we can load a module. May return false with |aRvOut| set to
// NS_OK to abort load without returning an error.
virtual bool CanStartLoad(ModuleLoadRequest* aRequest, nsresult* aRvOut) = 0;
@@ -298,7 +307,7 @@ class ModuleLoaderBase : public nsISupports {
nsresult EvaluateModuleInContext(JSContext* aCx, ModuleLoadRequest* aRequest,
JS::ModuleErrorBehaviour errorBehaviour);
void StartDynamicImport(ModuleLoadRequest* aRequest);
nsresult StartDynamicImport(ModuleLoadRequest* aRequest);
void ProcessDynamicImport(ModuleLoadRequest* aRequest);
void CancelAndClearDynamicImports();