diff --git a/dom/script/ScriptLoader.cpp b/dom/script/ScriptLoader.cpp index 65b046f17579..c8de481d0e39 100644 --- a/dom/script/ScriptLoader.cpp +++ b/dom/script/ScriptLoader.cpp @@ -2064,8 +2064,7 @@ nsresult ScriptLoader::EvaluateScriptElement(ScriptLoadRequest* aRequest) { nsCOMPtr globalObject; nsCOMPtr context; if (aRequest->GetLoadContext()->GetWebExtGlobal()) { - // Executing a module from a WebExtension content-script. - globalObject = aRequest->GetLoadContext()->GetWebExtGlobal(); + MOZ_ASSERT(aRequest->IsModuleRequest()); } else { // Otherwise we have to ensure that there is a nsIScriptContext. nsCOMPtr scriptGlobal = @@ -2100,8 +2099,9 @@ nsresult ScriptLoader::EvaluateScriptElement(ScriptLoadRequest* aRequest) { } if (aRequest->IsModuleRequest()) { - return aRequest->AsModuleRequest()->EvaluateModule(globalObject); + return aRequest->AsModuleRequest()->EvaluateModule(); } + return EvaluateScript(globalObject, aRequest); } diff --git a/dom/script/ScriptLoader.h b/dom/script/ScriptLoader.h index de8541a47998..8b0284a9b057 100644 --- a/dom/script/ScriptLoader.h +++ b/dom/script/ScriptLoader.h @@ -626,7 +626,7 @@ class ScriptLoader final : public JS::loader::ScriptLoaderInterface { void GiveUpBytecodeEncoding(); already_AddRefed GetGlobalForRequest( - ScriptLoadRequest* aRequest) override; + ScriptLoadRequest* aRequest); // This is a marker class to ensure proper handling of requests with a // WebExtGlobal. diff --git a/js/loader/ModuleLoadRequest.h b/js/loader/ModuleLoadRequest.h index 60ca2abaf635..eae9691feb62 100644 --- a/js/loader/ModuleLoadRequest.h +++ b/js/loader/ModuleLoadRequest.h @@ -106,9 +106,7 @@ class ModuleLoadRequest final : public ScriptLoadRequest { return mLoader->ProcessFetchedModuleSource(this); } bool InstantiateModuleTree() { return mLoader->InstantiateModuleTree(this); } - nsresult EvaluateModule(nsIGlobalObject* aGlobalObject) { - return mLoader->EvaluateModule(aGlobalObject, this); - } + nsresult EvaluateModule() { return mLoader->EvaluateModule(this); } void StartDynamicImport() { mLoader->StartDynamicImport(this); } void ProcessDynamicImport() { mLoader->ProcessDynamicImport(this); } diff --git a/js/loader/ModuleLoaderBase.cpp b/js/loader/ModuleLoaderBase.cpp index 8d3506057626..54ccf6b2bf8b 100644 --- a/js/loader/ModuleLoaderBase.cpp +++ b/js/loader/ModuleLoaderBase.cpp @@ -457,16 +457,8 @@ nsresult ModuleLoaderBase::CreateModuleScript(ModuleLoadRequest* aRequest) { LOG(("ScriptLoadRequest (%p): Create module script", aRequest)); - nsCOMPtr globalObject = - mLoader->GetGlobalForRequest(aRequest); - if (!globalObject) { - return NS_ERROR_FAILURE; - } - - MOZ_ASSERT(globalObject == mGlobalObject); - AutoJSAPI jsapi; - if (!jsapi.Init(globalObject)) { + if (!jsapi.Init(mGlobalObject)) { return NS_ERROR_FAILURE; } @@ -481,7 +473,7 @@ nsresult ModuleLoaderBase::CreateModuleScript(ModuleLoadRequest* aRequest) { &introductionScript); if (NS_SUCCEEDED(rv)) { - JS::Rooted global(cx, globalObject->GetGlobalJSObject()); + JS::Rooted global(cx, mGlobalObject->GetGlobalJSObject()); rv = CompileOrFinishModuleScript(cx, global, options, aRequest, &module); } @@ -997,15 +989,13 @@ void ModuleLoaderBase::ProcessDynamicImport(ModuleLoadRequest* aRequest) { } } -nsresult ModuleLoaderBase::EvaluateModule(nsIGlobalObject* aGlobalObject, - ModuleLoadRequest* aRequest) { +nsresult ModuleLoaderBase::EvaluateModule(ModuleLoadRequest* aRequest) { MOZ_ASSERT(aRequest->mLoader == this); - MOZ_ASSERT(aGlobalObject == mGlobalObject); AUTO_PROFILER_LABEL("ModuleLoaderBase::EvaluateModule", JS); mozilla::nsAutoMicroTask mt; - mozilla::dom::AutoEntryScript aes(aGlobalObject, "EvaluateModule", true); + mozilla::dom::AutoEntryScript aes(mGlobalObject, "EvaluateModule", true); JSContext* cx = aes.cx(); nsAutoCString profilerLabelString; @@ -1094,16 +1084,6 @@ nsresult ModuleLoaderBase::EvaluateModule(nsIGlobalObject* aGlobalObject, return rv; } -nsresult ModuleLoaderBase::EvaluateModule(ModuleLoadRequest* aRequest) { - nsCOMPtr globalObject = - mLoader->GetGlobalForRequest(aRequest); - if (!globalObject) { - return NS_ERROR_FAILURE; - } - - return EvaluateModule(globalObject, aRequest); -} - void ModuleLoaderBase::CancelAndClearDynamicImports() { for (ScriptLoadRequest* req = mDynamicImportRequests.getFirst(); req; req = req->getNext()) { diff --git a/js/loader/ModuleLoaderBase.h b/js/loader/ModuleLoaderBase.h index 2ebd516529db..3e9e98dcd96a 100644 --- a/js/loader/ModuleLoaderBase.h +++ b/js/loader/ModuleLoaderBase.h @@ -57,10 +57,6 @@ class ScriptLoaderInterface : public nsISupports { // In some environments, we will need to default to a base URI virtual nsIURI* GetBaseURI() const = 0; - // Get the global for the associated request. - virtual already_AddRefed GetGlobalForRequest( - ScriptLoadRequest* aRequest) = 0; - virtual void ReportErrorToConsole(ScriptLoadRequest* aRequest, nsresult aResult) const = 0; @@ -166,8 +162,7 @@ class ModuleLoaderBase : public nsISupports { bool InstantiateModuleTree(ModuleLoadRequest* aRequest); // Implements https://html.spec.whatwg.org/#run-a-module-script - nsresult EvaluateModule(nsIGlobalObject* aGlobalObject, - ModuleLoadRequest* aRequest); + nsresult EvaluateModule(ModuleLoadRequest* aRequest); void StartDynamicImport(ModuleLoadRequest* aRequest); void ProcessDynamicImport(ModuleLoadRequest* aRequest); @@ -219,9 +214,6 @@ class ModuleLoaderBase : public nsISupports { ModuleScript* GetFetchedModule(nsIURI* aURL) const; - // Helper function to set up the global correctly for dynamic imports. - nsresult EvaluateModule(ModuleLoadRequest* aRequest); - JS::Value FindFirstParseError(ModuleLoadRequest* aRequest); static nsresult InitDebuggerDataForModuleTree(JSContext* aCx, ModuleLoadRequest* aRequest);