From 2697a9f4396138eb9df96b7a8fc3db27b95f27bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Thu, 27 Nov 2025 15:34:52 +0200 Subject: [PATCH 1/2] Avoid uses of ?. in locations that are not Babeled, to help Firefox 68.12.0esr pass browser tests. --- src/modularize.js | 5 +++++ test/browser_reporting.js | 4 ++-- tools/file_packager.py | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/modularize.js b/src/modularize.js index 33a46e08a1054..ee676dea59d17 100644 --- a/src/modularize.js +++ b/src/modularize.js @@ -18,7 +18,12 @@ var {{{ EXPORT_NAME }}} = (() => { // When MODULARIZE this JS may be executed later, // after document.currentScript is gone, so we save it. // In EXPORT_ES6 mode we can just use 'import.meta.url'. +#if MIN_FIREFOX_VERSION < 74 + // This modularize.js script is not Babeled, so manually adapt for old browsers. + var _scriptName = typeof globalThis !== 'undefined' && globalThis.document && globalThis.document.currentScript ? globalThis.document.currentScript.src : undefined; +#else var _scriptName = globalThis.document?.currentScript?.src; +#endif return async function(moduleArg = {}) { var moduleRtn; diff --git a/test/browser_reporting.js b/test/browser_reporting.js index a4bcef8bb8100..90cd6b435ae02 100644 --- a/test/browser_reporting.js +++ b/test/browser_reporting.js @@ -125,12 +125,12 @@ if (hasModule) { const origPrintErr = Module['printErr']; Module['print'] = (...args) => { - origPrint?.(...args); + origPrint && origPrint(args); reportStdoutToServer(args.join(' ')); }; Module['printErr'] = (...args) => { - origPrintErr?.(...args); + origPrintErr && origPrintErr(args); reportStderrToServer(args.join(' ')); }; } diff --git a/tools/file_packager.py b/tools/file_packager.py index 8eae3ce6a33ac..ca57f7b19d5b1 100755 --- a/tools/file_packager.py +++ b/tools/file_packager.py @@ -1017,7 +1017,7 @@ def generate_preload_js(data_target, data_files, metadata): # is async, so we handle both orderings. ret += ''' var fetchPromise; - var fetched = Module['getPreloadedPackage']?.(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE); + var fetched = Module['getPreloadedPackage'] && Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE); if (!fetched) { // Note that we don't use await here because we want to execute the From 857b66221bf57cf5187058bd36e9a3c18ff704b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Thu, 27 Nov 2025 21:35:18 +0200 Subject: [PATCH 2/2] review --- src/modularize.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modularize.js b/src/modularize.js index ee676dea59d17..b9a8414b2ce7c 100644 --- a/src/modularize.js +++ b/src/modularize.js @@ -18,9 +18,9 @@ var {{{ EXPORT_NAME }}} = (() => { // When MODULARIZE this JS may be executed later, // after document.currentScript is gone, so we save it. // In EXPORT_ES6 mode we can just use 'import.meta.url'. -#if MIN_FIREFOX_VERSION < 74 +#if MIN_FIREFOX_VERSION < 74 || LEGACY_VM_SUPPORT // This modularize.js script is not Babeled, so manually adapt for old browsers. - var _scriptName = typeof globalThis !== 'undefined' && globalThis.document && globalThis.document.currentScript ? globalThis.document.currentScript.src : undefined; + var _scriptName = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; #else var _scriptName = globalThis.document?.currentScript?.src; #endif