Issue #618 - Simplify module map interface

Ref: BZ 1365187
This commit is contained in:
Gaming4JC 2020-08-02 12:46:52 -04:00 • committed by Roy Tam
commit f0d6e293a3
2 changed files with 14 additions and 14 deletions

View file

@ -388,12 +388,12 @@ ScriptLoader::ModuleScriptsEnabled()
} }
bool bool
ScriptLoader::ModuleMapContainsModule(ModuleLoadRequest *aRequest) const ScriptLoader::ModuleMapContainsURL(nsIURI* aURL) const
{ {
// Returns whether we have fetched, or are currently fetching, a module script // Returns whether we have fetched, or are currently fetching, a module script
// for the request's URL. // for a URL.
return mFetchingModules.Contains(aRequest->mURI) || return mFetchingModules.Contains(aURL) ||
mFetchedModules.Contains(aRequest->mURI); mFetchedModules.Contains(aURL);
} }
bool bool
@ -410,7 +410,7 @@ ScriptLoader::SetModuleFetchStarted(ModuleLoadRequest *aRequest)
// Update the module map to indicate that a module is currently being fetched. // Update the module map to indicate that a module is currently being fetched.
MOZ_ASSERT(aRequest->IsLoading()); MOZ_ASSERT(aRequest->IsLoading());
MOZ_ASSERT(!ModuleMapContainsModule(aRequest)); MOZ_ASSERT(!ModuleMapContainsURL(aRequest->mURI));
mFetchingModules.Put(aRequest->mURI, nullptr); mFetchingModules.Put(aRequest->mURI, nullptr);
} }
@ -443,21 +443,21 @@ ScriptLoader::SetModuleFetchFinishedAndResumeWaitingRequests(ModuleLoadRequest *
} }
RefPtr<GenericPromise> RefPtr<GenericPromise>
ScriptLoader::WaitForModuleFetch(ModuleLoadRequest *aRequest) ScriptLoader::WaitForModuleFetch(nsIURI* aURL)
{ {
MOZ_ASSERT(ModuleMapContainsModule(aRequest)); MOZ_ASSERT(ModuleMapContainsURL(aURL));
RefPtr<GenericPromise::Private> promise; RefPtr<GenericPromise::Private> promise;
if (mFetchingModules.Get(aRequest->mURI, getter_AddRefs(promise))) { if (mFetchingModules.Get(aURL, getter_AddRefs(promise))) {
if (!promise) { if (!promise) {
promise = new GenericPromise::Private(__func__); promise = new GenericPromise::Private(__func__);
mFetchingModules.Put(aRequest->mURI, promise); mFetchingModules.Put(aURL, promise);
} }
return promise; return promise;
} }
RefPtr<ModuleScript> ms; RefPtr<ModuleScript> ms;
MOZ_ALWAYS_TRUE(mFetchedModules.Get(aRequest->mURI, getter_AddRefs(ms))); MOZ_ALWAYS_TRUE(mFetchedModules.Get(aURL, getter_AddRefs(ms)));
if (!ms) { if (!ms) {
return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__); return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
} }
@ -984,8 +984,8 @@ ScriptLoader::StartLoad(ScriptLoadRequest *aRequest, const nsAString &aType,
// Check whether the module has been fetched or is currently being fetched, // Check whether the module has been fetched or is currently being fetched,
// and if so wait for it. // and if so wait for it.
ModuleLoadRequest* request = aRequest->AsModuleRequest(); ModuleLoadRequest* request = aRequest->AsModuleRequest();
if (ModuleMapContainsModule(request)) { if (ModuleMapContainsURL(request->mURI)) {
WaitForModuleFetch(request) WaitForModuleFetch(request->mURI)
->Then(AbstractThread::GetCurrent(), __func__, request, ->Then(AbstractThread::GetCurrent(), __func__, request,
&ModuleLoadRequest::ModuleLoaded, &ModuleLoadRequest::ModuleLoaded,
&ModuleLoadRequest::LoadFailed); &ModuleLoadRequest::LoadFailed);

View file

@ -572,8 +572,8 @@ private:
bool IsFetchingModule(ModuleLoadRequest *aRequest) const; bool IsFetchingModule(ModuleLoadRequest *aRequest) const;
bool ModuleMapContainsModule(ModuleLoadRequest *aRequest) const; bool ModuleMapContainsURL(nsIURI* aURL) const;
RefPtr<mozilla::GenericPromise> WaitForModuleFetch(ModuleLoadRequest *aRequest); RefPtr<mozilla::GenericPromise> WaitForModuleFetch(nsIURI* aURL);
ModuleScript* GetFetchedModule(nsIURI* aURL) const; ModuleScript* GetFetchedModule(nsIURI* aURL) const;
friend bool friend bool