From 9a19e9d165d612bfb331dfe4d37844e64f083dbc Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Tue, 11 Apr 2023 12:58:23 -0500 Subject: [PATCH] Issue #1691 - Part 6c: Fix a few issues with the earlier commits. Need PNK_CALL_IMPORT and PNK_IMPORT_META in the node children list or it will abort. When porting ScriptFetchOptions support, I had 2 constructors, I picked the wrong one. Missed adding the preference javascript.options.dynamicImport to all.js. (cherry picked from commit b95ccb711dc41b343d02ae69b3dc4747bbbe86fb) --- dom/script/ScriptLoader.cpp | 29 +++++++++++++++++++++++++++++ dom/script/ScriptLoader.h | 22 +--------------------- js/src/frontend/ParseNode.cpp | 2 ++ modules/libpref/init/all.js | 2 ++ 4 files changed, 34 insertions(+), 21 deletions(-) diff --git a/dom/script/ScriptLoader.cpp b/dom/script/ScriptLoader.cpp index c623111c92..6e385dd9df 100644 --- a/dom/script/ScriptLoader.cpp +++ b/dom/script/ScriptLoader.cpp @@ -118,6 +118,35 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(ScriptLoadRequest) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mFetchOptions) NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END + +ScriptLoadRequest::ScriptLoadRequest(ScriptKind aKind, + nsIURI* aURI, + ScriptFetchOptions* aFetchOptions, + const SRIMetadata& aIntegrity, + nsIURI* aReferrer) + : mKind(aKind), + mScriptMode(ScriptMode::eBlocking), + mProgress(Progress::Loading), + mIsInline(true), + mHasSourceMapURL(false), + mInDeferList(false), + mInAsyncList(false), + mIsNonAsyncScriptInserted(false), + mIsXSLT(false), + mIsCanceled(false), + mWasCompiledOMT(false), + mOffThreadToken(nullptr), + mScriptTextBuf(nullptr), + mScriptTextLength(0), + mURI(aURI), + mLineNo(1), + mIntegrity(aIntegrity), + mReferrer(aReferrer), + mFetchOptions(aFetchOptions) +{ + MOZ_ASSERT(mFetchOptions); +} + ScriptLoadRequest::~ScriptLoadRequest() { js_free(mScriptTextBuf); diff --git a/dom/script/ScriptLoader.h b/dom/script/ScriptLoader.h index a3d01fe061..2e2b1592cd 100644 --- a/dom/script/ScriptLoader.h +++ b/dom/script/ScriptLoader.h @@ -91,27 +91,7 @@ public: nsIURI* aURI, ScriptFetchOptions* aFetchOptions, const SRIMetadata& aIntegrity, - nsIURI* aReferrer) - : mKind(aKind), - mScriptMode(ScriptMode::eBlocking), - mProgress(Progress::Loading), - mIsInline(true), - mHasSourceMapURL(false), - mInDeferList(false), - mInAsyncList(false), - mIsNonAsyncScriptInserted(false), - mIsXSLT(false), - mIsCanceled(false), - mWasCompiledOMT(false), - mOffThreadToken(nullptr), - mScriptTextBuf(nullptr), - mScriptTextLength(0), - mURI(aURI), - mLineNo(1), - mIntegrity(aIntegrity), - mReferrer(aReferrer) - { - } + nsIURI* aReferrer); NS_DECL_CYCLE_COLLECTING_ISUPPORTS NS_DECL_CYCLE_COLLECTION_CLASS(ScriptLoadRequest) diff --git a/js/src/frontend/ParseNode.cpp b/js/src/frontend/ParseNode.cpp index 6a7e4681d7..f80ae462cd 100644 --- a/js/src/frontend/ParseNode.cpp +++ b/js/src/frontend/ParseNode.cpp @@ -493,6 +493,8 @@ PushNodeChildren(ParseNode* pn, NodeStack* stack) case PNK_EXPORT_SPEC_LIST: case PNK_PARAMSBODY: case PNK_CLASSMETHODLIST: + case PNK_IMPORT_META: + case PNK_CALL_IMPORT: return PushListNodeChildren(&pn->as(), stack); // Array comprehension nodes are lists with a single child: diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index d1d001c799..c06a400520 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -1325,6 +1325,8 @@ pref("javascript.options.main_thread_stack_quota_cap", 6291456); pref("javascript.options.main_thread_stack_quota_cap", 2097152); #endif +// Dynamic module import. +pref("javascript.options.dynamicImport", false); // advanced prefs pref("advanced.mailftp", false);