@@ -807,7 +807,7 @@ ResolveResult ModuleLoaderBase::ResolveModuleSpecifier(
807
807
}
808
808
809
809
nsresult ModuleLoaderBase::ResolveRequestedModules (
810
- ModuleLoadRequest* aRequest, nsCOMArray<nsIURI >* aUrlsOut ) {
810
+ ModuleLoadRequest* aRequest, nsTArray<ModuleMapKey >* aRequestedModulesOut ) {
811
811
ModuleScript* ms = aRequest->mModuleScript ;
812
812
813
813
AutoJSAPI jsapi;
@@ -850,8 +850,9 @@ nsresult ModuleLoaderBase::ResolveRequestedModules(
850
850
}
851
851
852
852
nsCOMPtr<nsIURI> uri = result.unwrap ();
853
- if (aUrlsOut) {
854
- aUrlsOut->AppendElement (uri.forget ());
853
+ if (aRequestedModulesOut) {
854
+ aRequestedModulesOut->AppendElement (
855
+ ModuleMapKey (uri, JS::ModuleType::JavaScript));
855
856
}
856
857
}
857
858
@@ -876,50 +877,47 @@ void ModuleLoaderBase::StartFetchingModuleDependencies(
876
877
877
878
aRequest->mState = ModuleLoadRequest::State::LoadingImports;
878
879
879
- nsCOMArray<nsIURI> urls ;
880
- nsresult rv = ResolveRequestedModules (aRequest, &urls );
880
+ nsTArray<ModuleMapKey> requestedModules ;
881
+ nsresult rv = ResolveRequestedModules (aRequest, &requestedModules );
881
882
if (NS_FAILED(rv)) {
882
883
aRequest->mModuleScript = nullptr ;
883
884
aRequest->ModuleErrored ();
884
885
return ;
885
886
}
886
887
887
- // Remove already visited URLs from the list. Put unvisited URLs into the
888
- // visited set.
889
- int32_t i = 0 ;
890
- while (i < urls.Count ()) {
891
- nsIURI* url = urls[i];
892
- ModuleMapKey moduleMapKey (url, ModuleType::JavaScript);
893
-
894
- if (visitedSet->Contains (moduleMapKey)) {
895
- urls.RemoveObjectAt (i);
888
+ // Remove already visited requested modules from the list. Put unvisited
889
+ // requested modules into the visited set.
890
+ size_t i = 0 ;
891
+ while (i < requestedModules.Length ()) {
892
+ if (visitedSet->Contains (requestedModules[i])) {
893
+ requestedModules.RemoveElementAt (i);
896
894
} else {
897
- visitedSet->PutEntry (moduleMapKey );
895
+ visitedSet->PutEntry (requestedModules[i] );
898
896
i++;
899
897
}
900
898
}
901
899
902
- if (urls. Count () == 0 ) {
900
+ if (requestedModules. Length () == 0 ) {
903
901
// There are no descendants to load so this request is ready.
904
902
aRequest->DependenciesLoaded ();
905
903
return ;
906
904
}
907
905
908
906
MOZ_ASSERT (aRequest->mAwaitingImports == 0 );
909
- aRequest->mAwaitingImports = urls. Count ();
907
+ aRequest->mAwaitingImports = requestedModules. Length ();
910
908
911
- // For each url in urls, fetch a module script graph given url, module
912
- // script's CORS setting, and module script's settings object.
913
- for (auto * url : urls) {
914
- StartFetchingModuleAndDependencies (aRequest, url);
909
+ // For each requested module in `requestedModules`, fetch a module script
910
+ // graph given url, module script's CORS setting, and module script's
911
+ // settings object.
912
+ for (const ModuleMapKey& requestedModule : requestedModules) {
913
+ StartFetchingModuleAndDependencies (aRequest, requestedModule);
915
914
}
916
915
}
917
916
918
917
void ModuleLoaderBase::StartFetchingModuleAndDependencies (
919
- ModuleLoadRequest* aParent, nsIURI* aURI) {
920
- MOZ_ASSERT (aURI);
921
-
922
- RefPtr<ModuleLoadRequest> childRequest = CreateStaticImport (aURI, aParent);
918
+ ModuleLoadRequest* aParent, const ModuleMapKey& aRequestedModule) {
919
+ RefPtr<ModuleLoadRequest> childRequest =
920
+ CreateStaticImport (aRequestedModule.mUri , aParent);
923
921
924
922
aParent->mImports .AppendElement (childRequest);
925
923
@@ -928,7 +926,7 @@ void ModuleLoaderBase::StartFetchingModuleAndDependencies(
928
926
aParent->mURI ->GetAsciiSpec (url1);
929
927
930
928
nsAutoCString url2;
931
- aURI ->GetAsciiSpec (url2);
929
+ aRequestedModule. mUri ->GetAsciiSpec (url2);
932
930
933
931
LOG ((" ScriptLoadRequest (%p): Start fetching dependency %p" , aParent,
934
932
childRequest.get ()));
0 commit comments