commit 444f24047fd42b5c066d1be42b10c0cde3a47164
parent 3d14ba282465a04561840b2c494ffd446a238d59
Author: Yoshi Cheng-Hao Huang <allstars.chh@gmail.com>
Date: Thu, 23 Oct 2025 08:47:59 +0000
Bug 1968885 - Part 2: Remove ResolveRequestedModules. r=jonco
Differential Revision: https://phabricator.services.mozilla.com/D269567
Diffstat:
4 files changed, 0 insertions(+), 159 deletions(-)
diff --git a/js/loader/ModuleLoaderBase.cpp b/js/loader/ModuleLoaderBase.cpp
@@ -1031,19 +1031,6 @@ nsresult ModuleLoaderBase::CreateModuleScript(ModuleLoadRequest* aRequest) {
}
moduleScript->SetModuleRecord(module);
-
- // TODO: Bug 1968885: Remove ModuleLoaderBase::ResolveRequestedModules
- //
- // Validate requested modules and treat failure to resolve module specifiers
- // the same as a parse error.
- rv = ResolveRequestedModules(aRequest, nullptr);
- if (NS_FAILED(rv)) {
- if (!aRequest->IsErrored()) {
- aRequest->mModuleScript = nullptr;
- return rv;
- }
- return NS_OK;
- }
}
LOG(("ScriptLoadRequest (%p): module script == %p", aRequest,
@@ -1112,76 +1099,6 @@ ResolveResult ModuleLoaderBase::ResolveModuleSpecifier(
aSpecifier);
}
-nsresult ModuleLoaderBase::ResolveRequestedModules(
- ModuleLoadRequest* aRequest, nsTArray<ModuleMapKey>* aRequestedModulesOut) {
- MOZ_ASSERT_IF(aRequestedModulesOut, aRequestedModulesOut->IsEmpty());
-
- ModuleScript* ms = aRequest->mModuleScript;
-
- AutoJSAPI jsapi;
- if (!jsapi.Init(mGlobalObject)) {
- return NS_ERROR_FAILURE;
- }
-
- JSContext* cx = jsapi.cx();
- Rooted<JSObject*> moduleRecord(cx, ms->ModuleRecord());
-
- if (!IsCyclicModule(moduleRecord)) {
- return NS_OK;
- }
-
- uint32_t length = GetRequestedModulesCount(cx, moduleRecord);
-
- for (uint32_t i = 0; i < length; i++) {
- Rooted<JSString*> str(cx, GetRequestedModuleSpecifier(cx, moduleRecord, i));
- if (!str) {
- Rooted<Value> pendingException(cx);
- if (!JS_GetPendingException(cx, &pendingException)) {
- return NS_ERROR_FAILURE;
- }
- ms->SetParseError(pendingException);
- JS_ClearPendingException(cx);
- return NS_ERROR_FAILURE;
- }
-
- nsAutoJSString specifier;
- if (!specifier.init(cx, str)) {
- return NS_ERROR_FAILURE;
- }
-
- // Let url be the result of resolving a module specifier given module script
- // and requested.
- ModuleLoaderBase* loader = aRequest->mLoader;
- auto result = loader->ResolveModuleSpecifier(ms, specifier);
- if (result.isErr()) {
- uint32_t lineNumber = 0;
- ColumnNumberOneOrigin columnNumber;
- GetRequestedModuleSourcePos(cx, moduleRecord, i, &lineNumber,
- &columnNumber);
-
- Rooted<Value> error(cx);
- nsresult rv =
- loader->HandleResolveFailure(cx, ms, specifier, result.unwrapErr(),
- lineNumber, columnNumber, &error);
- NS_ENSURE_SUCCESS(rv, rv);
-
- ms->SetParseError(error);
- return NS_ERROR_FAILURE;
- }
-
- nsCOMPtr<nsIURI> uri = result.unwrap();
- if (aRequestedModulesOut) {
- // Let moduleType be the result of running the module type from module
- // request steps given moduleRequest.
- ModuleType moduleType = GetRequestedModuleType(cx, moduleRecord, i);
-
- aRequestedModulesOut->AppendElement(ModuleMapKey(uri, moduleType));
- }
- }
-
- return NS_OK;
-}
-
void ModuleLoaderBase::StartFetchingModuleDependencies(
ModuleLoadRequest* aRequest) {
if (aRequest->IsCanceled()) {
diff --git a/js/loader/ModuleLoaderBase.h b/js/loader/ModuleLoaderBase.h
@@ -525,10 +525,6 @@ class ModuleLoaderBase : public nsISupports {
private:
ModuleScript* GetFetchedModule(const ModuleMapKey& moduleMapKey) const;
- nsresult ResolveRequestedModules(
- ModuleLoadRequest* aRequest,
- nsTArray<ModuleMapKey>* aRequestedModulesOut);
-
already_AddRefed<LoadingRequest> SetModuleFetchFinishedAndGetWaitingRequests(
ModuleLoadRequest* aRequest, nsresult aResult);
void ResumeWaitingRequests(LoadingRequest* aLoadingRequest, bool aSuccess);
diff --git a/js/public/Modules.h b/js/public/Modules.h
@@ -277,27 +277,6 @@ extern JS_PUBLIC_API bool ThrowOnModuleEvaluationFailure(
ModuleErrorBehaviour errorBehaviour = ReportModuleErrorsAsync);
/*
- * Functions to access the module specifiers of a source text module record used
- * to request module imports.
- *
- * Clients can use GetRequestedModulesCount() to get the number of specifiers
- * and GetRequestedModuleSpecifier() / GetRequestedModuleSourcePos() to get the
- * individual elements.
- */
-extern JS_PUBLIC_API uint32_t
-GetRequestedModulesCount(JSContext* cx, Handle<JSObject*> moduleRecord);
-
-extern JS_PUBLIC_API JSString* GetRequestedModuleSpecifier(
- JSContext* cx, Handle<JSObject*> moduleRecord, uint32_t index);
-
-/*
- * Get the position of a requested module's name in the source.
- */
-extern JS_PUBLIC_API void GetRequestedModuleSourcePos(
- JSContext* cx, Handle<JSObject*> moduleRecord, uint32_t index,
- uint32_t* lineNumber, JS::ColumnNumberOneOrigin* columnNumber);
-
-/*
* Get the module type of a requested module.
*/
extern JS_PUBLIC_API ModuleType GetRequestedModuleType(
diff --git a/js/src/vm/Modules.cpp b/js/src/vm/Modules.cpp
@@ -403,57 +403,6 @@ JS_PUBLIC_API bool JS::ThrowOnModuleEvaluationFailure(
return OnModuleEvaluationFailure(cx, evaluationPromise, errorBehaviour);
}
-JS_PUBLIC_API uint32_t
-JS::GetRequestedModulesCount(JSContext* cx, Handle<JSObject*> moduleRecord) {
- AssertHeapIsIdle();
- CHECK_THREAD(cx);
- cx->check(moduleRecord);
-
- return moduleRecord->as<ModuleObject>().requestedModules().Length();
-}
-
-JS_PUBLIC_API JSString* JS::GetRequestedModuleSpecifier(
- JSContext* cx, Handle<JSObject*> moduleRecord, uint32_t index) {
- AssertHeapIsIdle();
- CHECK_THREAD(cx);
- cx->check(moduleRecord);
-
- auto* moduleRequest = moduleRecord->as<ModuleObject>()
- .requestedModules()[index]
- .moduleRequest();
-
- // This implements step 7.1.1 in HostLoadImportedModule.
- // https://html.spec.whatwg.org/multipage/webappapis.html#hostloadimportedmodule
- //
- // If moduleRequest.[[Attributes]] contains a Record entry such that
- // entry.[[Key]] is not "type",
- if (moduleRequest->hasFirstUnsupportedAttributeKey()) {
- UniqueChars printableKey = AtomToPrintableString(
- cx, moduleRequest->getFirstUnsupportedAttributeKey());
- JS_ReportErrorNumberASCII(
- cx, GetErrorMessage, nullptr,
- JSMSG_IMPORT_ATTRIBUTES_STATIC_IMPORT_UNSUPPORTED_ATTRIBUTE,
- printableKey ? printableKey.get() : "");
- return nullptr;
- }
-
- return moduleRequest->specifier();
-}
-
-JS_PUBLIC_API void JS::GetRequestedModuleSourcePos(
- JSContext* cx, Handle<JSObject*> moduleRecord, uint32_t index,
- uint32_t* lineNumber, JS::ColumnNumberOneOrigin* columnNumber) {
- AssertHeapIsIdle();
- CHECK_THREAD(cx);
- cx->check(moduleRecord);
- MOZ_ASSERT(lineNumber);
- MOZ_ASSERT(columnNumber);
-
- auto& module = moduleRecord->as<ModuleObject>();
- *lineNumber = module.requestedModules()[index].lineNumber();
- *columnNumber = module.requestedModules()[index].columnNumber();
-}
-
JS_PUBLIC_API JS::ModuleType JS::GetRequestedModuleType(
JSContext* cx, Handle<JSObject*> moduleRecord, uint32_t index) {
AssertHeapIsIdle();