Bug 1877792 - Part 3: Update module map methods to take ModuleMapKey instead of nsIURI r=spidermonkey-reviewers,jonco
Differential Revision: https://phabricator.services.mozilla.com/D218209
This commit is contained in:
@@ -128,7 +128,8 @@ void ModuleLoadRequest::ModuleLoaded() {
|
||||
|
||||
MOZ_ASSERT(IsFetching() || IsPendingFetchingError());
|
||||
|
||||
mModuleScript = mLoader->GetFetchedModule(mURI);
|
||||
mModuleScript =
|
||||
mLoader->GetFetchedModule(ModuleMapKey(mURI, ModuleType::JavaScript));
|
||||
if (IsErrored()) {
|
||||
ModuleErrored();
|
||||
return;
|
||||
|
||||
@@ -149,7 +149,8 @@ JSObject* ModuleLoaderBase::HostResolveImportedModule(
|
||||
|
||||
// Let resolved module script be moduleMap[url]. (This entry must exist for
|
||||
// us to have gotten to this point.)
|
||||
ModuleScript* ms = loader->GetFetchedModule(uri);
|
||||
ModuleScript* ms =
|
||||
loader->GetFetchedModule(ModuleMapKey(uri, ModuleType::JavaScript));
|
||||
MOZ_ASSERT(ms, "Resolved module not found in module map");
|
||||
MOZ_ASSERT(!ms->HasParseError());
|
||||
MOZ_ASSERT(ms->ModuleRecord());
|
||||
@@ -452,8 +453,9 @@ nsresult ModuleLoaderBase::StartOrRestartModuleLoad(ModuleLoadRequest* aRequest,
|
||||
|
||||
// If we're restarting the request, the module should already be in the
|
||||
// "fetching" map.
|
||||
MOZ_ASSERT_IF(aRestart == RestartRequest::Yes,
|
||||
IsModuleFetching(aRequest->mURI));
|
||||
MOZ_ASSERT_IF(
|
||||
aRestart == RestartRequest::Yes,
|
||||
IsModuleFetching(ModuleMapKey(aRequest->mURI, ModuleType::JavaScript)));
|
||||
|
||||
// Check with the derived class whether we should load this module.
|
||||
nsresult rv = NS_OK;
|
||||
@@ -465,7 +467,9 @@ nsresult ModuleLoaderBase::StartOrRestartModuleLoad(ModuleLoadRequest* aRequest,
|
||||
// and if so wait for it rather than starting a new fetch.
|
||||
ModuleLoadRequest* request = aRequest->AsModuleRequest();
|
||||
|
||||
if (aRestart == RestartRequest::No && ModuleMapContainsURL(request->mURI)) {
|
||||
if (aRestart == RestartRequest::No &&
|
||||
ModuleMapContainsURL(
|
||||
ModuleMapKey(request->mURI, ModuleType::JavaScript))) {
|
||||
LOG(("ScriptLoadRequest (%p): Waiting for module fetch", aRequest));
|
||||
WaitForModuleFetch(request);
|
||||
return NS_OK;
|
||||
@@ -483,16 +487,16 @@ nsresult ModuleLoaderBase::StartOrRestartModuleLoad(ModuleLoadRequest* aRequest,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
bool ModuleLoaderBase::ModuleMapContainsURL(nsIURI* aURL) const {
|
||||
return IsModuleFetching(aURL) || IsModuleFetched(aURL);
|
||||
bool ModuleLoaderBase::ModuleMapContainsURL(const ModuleMapKey& key) const {
|
||||
return IsModuleFetching(key) || IsModuleFetched(key);
|
||||
}
|
||||
|
||||
bool ModuleLoaderBase::IsModuleFetching(nsIURI* aURL) const {
|
||||
return mFetchingModules.Contains(ModuleMapKey(aURL, ModuleType::JavaScript));
|
||||
bool ModuleLoaderBase::IsModuleFetching(const ModuleMapKey& key) const {
|
||||
return mFetchingModules.Contains(key);
|
||||
}
|
||||
|
||||
bool ModuleLoaderBase::IsModuleFetched(nsIURI* aURL) const {
|
||||
return mFetchedModules.Contains(ModuleMapKey(aURL, ModuleType::JavaScript));
|
||||
bool ModuleLoaderBase::IsModuleFetched(const ModuleMapKey& key) const {
|
||||
return mFetchedModules.Contains(key);
|
||||
}
|
||||
|
||||
nsresult ModuleLoaderBase::GetFetchedModuleURLs(nsTArray<nsCString>& aURLs) {
|
||||
@@ -515,7 +519,7 @@ void ModuleLoaderBase::SetModuleFetchStarted(ModuleLoadRequest* aRequest) {
|
||||
ModuleMapKey moduleMapKey(aRequest->mURI, ModuleType::JavaScript);
|
||||
|
||||
MOZ_ASSERT(aRequest->IsFetching() || aRequest->IsPendingFetchingError());
|
||||
MOZ_ASSERT(!ModuleMapContainsURL(aRequest->mURI));
|
||||
MOZ_ASSERT(!ModuleMapContainsURL(moduleMapKey));
|
||||
|
||||
RefPtr<LoadingRequest> loadingRequest = new LoadingRequest();
|
||||
loadingRequest->mRequest = aRequest;
|
||||
@@ -589,9 +593,8 @@ void ModuleLoaderBase::ResumeWaitingRequest(ModuleLoadRequest* aRequest,
|
||||
}
|
||||
|
||||
void ModuleLoaderBase::WaitForModuleFetch(ModuleLoadRequest* aRequest) {
|
||||
nsIURI* uri = aRequest->mURI;
|
||||
MOZ_ASSERT(ModuleMapContainsURL(uri));
|
||||
ModuleMapKey moduleMapKey(uri, ModuleType::JavaScript);
|
||||
ModuleMapKey moduleMapKey(aRequest->mURI, ModuleType::JavaScript);
|
||||
MOZ_ASSERT(ModuleMapContainsURL(moduleMapKey));
|
||||
|
||||
if (auto entry = mFetchingModules.Lookup(moduleMapKey)) {
|
||||
RefPtr<LoadingRequest> loadingRequest = entry.Data();
|
||||
@@ -605,14 +608,14 @@ void ModuleLoaderBase::WaitForModuleFetch(ModuleLoadRequest* aRequest) {
|
||||
ResumeWaitingRequest(aRequest, bool(ms));
|
||||
}
|
||||
|
||||
ModuleScript* ModuleLoaderBase::GetFetchedModule(nsIURI* aURL) const {
|
||||
ModuleScript* ModuleLoaderBase::GetFetchedModule(
|
||||
const ModuleMapKey& moduleMapKey) const {
|
||||
if (LOG_ENABLED()) {
|
||||
nsAutoCString url;
|
||||
aURL->GetAsciiSpec(url);
|
||||
moduleMapKey.mUri->GetAsciiSpec(url);
|
||||
LOG(("GetFetchedModule %s", url.get()));
|
||||
}
|
||||
|
||||
ModuleMapKey moduleMapKey(aURL, ModuleType::JavaScript);
|
||||
bool found;
|
||||
ModuleScript* ms = mFetchedModules.GetWeak(moduleMapKey, &found);
|
||||
MOZ_ASSERT(found);
|
||||
|
||||
@@ -392,8 +392,8 @@ class ModuleLoaderBase : public nsISupports {
|
||||
// https://html.spec.whatwg.org/multipage/webappapis.html#disallow-further-import-maps
|
||||
void DisallowImportMaps() { mImportMapsAllowed = false; }
|
||||
|
||||
// Returns true if the module for given URL is already fetched.
|
||||
bool IsModuleFetched(nsIURI* aURL) const;
|
||||
// Returns true if the module for given module key is already fetched.
|
||||
bool IsModuleFetched(const ModuleMapKey& key) const;
|
||||
|
||||
nsresult GetFetchedModuleURLs(nsTArray<nsCString>& aURLs);
|
||||
|
||||
@@ -466,12 +466,12 @@ class ModuleLoaderBase : public nsISupports {
|
||||
nsresult StartOrRestartModuleLoad(ModuleLoadRequest* aRequest,
|
||||
RestartRequest aRestart);
|
||||
|
||||
bool ModuleMapContainsURL(nsIURI* aURL) const;
|
||||
bool IsModuleFetching(nsIURI* aURL) const;
|
||||
bool ModuleMapContainsURL(const ModuleMapKey& key) const;
|
||||
bool IsModuleFetching(const ModuleMapKey& key) const;
|
||||
void WaitForModuleFetch(ModuleLoadRequest* aRequest);
|
||||
void SetModuleFetchStarted(ModuleLoadRequest* aRequest);
|
||||
|
||||
ModuleScript* GetFetchedModule(nsIURI* aURL) const;
|
||||
ModuleScript* GetFetchedModule(const ModuleMapKey& moduleMapKey) const;
|
||||
|
||||
JS::Value FindFirstParseError(ModuleLoadRequest* aRequest);
|
||||
static nsresult InitDebuggerDataForModuleGraph(JSContext* aCx,
|
||||
|
||||
@@ -1430,7 +1430,8 @@ nsresult mozJSModuleLoader::IsModuleLoaded(const nsACString& aLocation,
|
||||
nsresult rv = mjsInfo.EnsureURI();
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (mModuleLoader->IsModuleFetched(mjsInfo.URI())) {
|
||||
if (mModuleLoader->IsModuleFetched(
|
||||
JS::loader::ModuleMapKey(mjsInfo.URI(), ModuleType::JavaScript))) {
|
||||
*retval = true;
|
||||
return NS_OK;
|
||||
}
|
||||
@@ -1475,7 +1476,8 @@ nsresult mozJSModuleLoader::IsESModuleLoaded(const nsACString& aLocation,
|
||||
nsresult rv = info.EnsureURI();
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (mModuleLoader->IsModuleFetched(info.URI())) {
|
||||
if (mModuleLoader->IsModuleFetched(
|
||||
JS::loader::ModuleMapKey(info.URI(), ModuleType::JavaScript))) {
|
||||
*retval = true;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user