tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 3d14ba282465a04561840b2c494ffd446a238d59
parent c322e57e94dc27679773e5bee6a1f0a032903d62
Author: Yoshi Cheng-Hao Huang <allstars.chh@gmail.com>
Date:   Thu, 23 Oct 2025 08:47:59 +0000

Bug 1968885 - Part 1: Pass lineNo and columnNo to HostLoadImportedModule. r=jonco

Differential Revision: https://phabricator.services.mozilla.com/D269566

Diffstat:
Mjs/loader/ModuleLoaderBase.cpp | 12++++++------
Mjs/loader/ModuleLoaderBase.h | 4+++-
Mjs/public/Modules.h | 3++-
Mjs/src/shell/ModuleLoader.cpp | 4+++-
Mjs/src/shell/ModuleLoader.h | 4+++-
Mjs/src/vm/Modules.cpp | 9++++++---
Mjs/src/vm/Modules.h | 7++++---
7 files changed, 27 insertions(+), 16 deletions(-)

diff --git a/js/loader/ModuleLoaderBase.cpp b/js/loader/ModuleLoaderBase.cpp @@ -142,11 +142,11 @@ static bool CreateBadModuleTypeError(JSContext* aCx, LoadedScript* aScript, // https://html.spec.whatwg.org/#hostloadimportedmodule // static -bool ModuleLoaderBase::HostLoadImportedModule(JSContext* aCx, - Handle<JSScript*> aReferrer, - Handle<JSObject*> aModuleRequest, - Handle<Value> aHostDefined, - Handle<Value> aPayload) { +bool ModuleLoaderBase::HostLoadImportedModule( + JSContext* aCx, Handle<JSScript*> aReferrer, + Handle<JSObject*> aModuleRequest, Handle<Value> aHostDefined, + Handle<Value> aPayload, uint32_t aLineNumber, + JS::ColumnNumberOneOrigin aColumnNumber) { Rooted<JSObject*> object(aCx); if (aPayload.isObject()) { object = &aPayload.toObject(); @@ -195,7 +195,7 @@ bool ModuleLoaderBase::HostLoadImportedModule(JSContext* aCx, Rooted<Value> error(aCx); nsresult rv = loader->HandleResolveFailure(aCx, script, string, result.unwrapErr(), - 0, ColumnNumberOneOrigin(), &error); + aLineNumber, aColumnNumber, &error); if (NS_FAILED(rv)) { JS_ReportOutOfMemory(aCx); return false; diff --git a/js/loader/ModuleLoaderBase.h b/js/loader/ModuleLoaderBase.h @@ -488,7 +488,9 @@ class ModuleLoaderBase : public nsISupports { Handle<JSScript*> aReferrer, Handle<JSObject*> aModuleRequest, Handle<Value> aHostDefined, - Handle<Value> aPayload); + Handle<Value> aPayload, + uint32_t aLineNumber, + JS::ColumnNumberOneOrigin aColumnNumber); static bool FinishLoadingImportedModule(JSContext* aCx, ModuleLoadRequest* aRequest); diff --git a/js/public/Modules.h b/js/public/Modules.h @@ -79,7 +79,8 @@ enum class ModuleType : uint32_t { using ModuleLoadHook = bool (*)(JSContext* cx, Handle<JSScript*> referrer, Handle<JSObject*> moduleRequest, Handle<Value> hostDefined, - Handle<Value> payload); + Handle<Value> payload, uint32_t lineNumber, + JS::ColumnNumberOneOrigin columnNumber); /** * Get the HostLoadImportedModule hook for the runtime. diff --git a/js/src/shell/ModuleLoader.cpp b/js/src/shell/ModuleLoader.cpp @@ -72,7 +72,9 @@ bool ModuleLoader::LoadImportedModule(JSContext* cx, JS::Handle<JSScript*> referrer, JS::Handle<JSObject*> moduleRequest, JS::HandleValue hostDefined, - JS::HandleValue payload) { + JS::HandleValue payload, + uint32_t lineNumber, + JS::ColumnNumberOneOrigin columnNumber) { ShellContext* scx = GetShellContext(cx); return scx->moduleLoader->loadImportedModule(cx, referrer, moduleRequest, payload); diff --git a/js/src/shell/ModuleLoader.h b/js/src/shell/ModuleLoader.h @@ -28,7 +28,9 @@ class ModuleLoader { private: static bool LoadImportedModule(JSContext* cx, JS::Handle<JSScript*> referrer, HandleObject moduleRequest, - HandleValue hostDefined, HandleValue payload); + HandleValue hostDefined, HandleValue payload, + uint32_t lineNumber, + JS::ColumnNumberOneOrigin columnNumber); static bool GetImportMetaProperties(JSContext* cx, HandleValue privateValue, HandleObject metaObject); diff --git a/js/src/vm/Modules.cpp b/js/src/vm/Modules.cpp @@ -813,7 +813,8 @@ static void ThrowUnexpectedModuleStatus(JSContext* cx, ModuleStatus status) { bool js::HostLoadImportedModule(JSContext* cx, Handle<JSScript*> referrer, Handle<JSObject*> moduleRequest, Handle<Value> hostDefined, - Handle<Value> payload) { + Handle<Value> payload, uint32_t lineNumber, + JS::ColumnNumberOneOrigin columnNumber) { MOZ_ASSERT(moduleRequest); MOZ_ASSERT(!payload.isUndefined()); @@ -823,7 +824,8 @@ bool js::HostLoadImportedModule(JSContext* cx, Handle<JSScript*> referrer, return false; } - bool ok = moduleLoadHook(cx, referrer, moduleRequest, hostDefined, payload); + bool ok = moduleLoadHook(cx, referrer, moduleRequest, hostDefined, payload, + lineNumber, columnNumber); if (!ok) { MOZ_ASSERT(JS_IsExceptionPending(cx)); @@ -1561,7 +1563,8 @@ static bool InnerModuleLoading(JSContext* cx, Rooted<Value> hostDefined(cx, state->hostDefined()); Rooted<Value> payload(cx, ObjectValue(*state)); if (!HostLoadImportedModule(cx, referrer, moduleRequest, hostDefined, - payload)) { + payload, request.lineNumber(), + request.columnNumber())) { return false; } } diff --git a/js/src/vm/Modules.h b/js/src/vm/Modules.h @@ -64,9 +64,10 @@ bool LoadRequestedModules(JSContext* cx, Handle<ModuleObject*> module, HandleValue hostDefined, MutableHandle<JSObject*> promiseOut); -bool HostLoadImportedModule(JSContext* cx, Handle<JSScript*> referrer, - Handle<JSObject*> moduleRequest, - Handle<Value> hostDefined, Handle<Value> payload); +bool HostLoadImportedModule( + JSContext* cx, Handle<JSScript*> referrer, Handle<JSObject*> moduleRequest, + Handle<Value> hostDefined, Handle<Value> payload, uint32_t lineNumber = 0, + JS::ColumnNumberOneOrigin columnNumber = JS::ColumnNumberOneOrigin()); } // namespace js