mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-24 19:37:15 +00:00
Bug 1761938 - Part 5: Use module loader's global where possible and remove GetGlobalForRequest from script loader interface r=yulia
Differential Revision: https://phabricator.services.mozilla.com/D142832
This commit is contained in:
parent
d4aae71cf3
commit
3b308851b4
@ -2064,8 +2064,7 @@ nsresult ScriptLoader::EvaluateScriptElement(ScriptLoadRequest* aRequest) {
|
||||
nsCOMPtr<nsIGlobalObject> globalObject;
|
||||
nsCOMPtr<nsIScriptContext> 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<nsIScriptGlobalObject> 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);
|
||||
}
|
||||
|
||||
|
@ -626,7 +626,7 @@ class ScriptLoader final : public JS::loader::ScriptLoaderInterface {
|
||||
void GiveUpBytecodeEncoding();
|
||||
|
||||
already_AddRefed<nsIGlobalObject> GetGlobalForRequest(
|
||||
ScriptLoadRequest* aRequest) override;
|
||||
ScriptLoadRequest* aRequest);
|
||||
|
||||
// This is a marker class to ensure proper handling of requests with a
|
||||
// WebExtGlobal.
|
||||
|
@ -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); }
|
||||
|
||||
|
@ -457,16 +457,8 @@ nsresult ModuleLoaderBase::CreateModuleScript(ModuleLoadRequest* aRequest) {
|
||||
|
||||
LOG(("ScriptLoadRequest (%p): Create module script", aRequest));
|
||||
|
||||
nsCOMPtr<nsIGlobalObject> 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<JSObject*> global(cx, globalObject->GetGlobalJSObject());
|
||||
JS::Rooted<JSObject*> 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<nsIGlobalObject> 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()) {
|
||||
|
@ -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<nsIGlobalObject> 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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user