Bug 1759881 - Part 3: Don't pass a global to FillCompileOptionsForRequest r=yulia

This can work it out if it needs it by calling GetGlobalForRequest.

Depends on D141249

Differential Revision: https://phabricator.services.mozilla.com/D141250
This commit is contained in:
Jon Coppeard
2022-03-17 15:22:17 +00:00
parent f6463f2f65
commit 1db05a03a1
4 changed files with 12 additions and 14 deletions

View File

@@ -1484,13 +1484,12 @@ nsresult ScriptLoader::AttemptAsyncScriptCompile(ScriptLoadRequest* aRequest,
}
JSContext* cx = jsapi.cx();
JS::Rooted<JSObject*> global(cx, globalObject->GetGlobalJSObject());
JS::CompileOptions options(cx);
// Introduction script will actually be computed and set when the script is
// collected from offthread
JS::RootedScript dummyIntroductionScript(cx);
nsresult rv = FillCompileOptionsForRequest(cx, aRequest, global, &options,
nsresult rv = FillCompileOptionsForRequest(cx, aRequest, &options,
&dummyIntroductionScript);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
@@ -1836,8 +1835,7 @@ already_AddRefed<nsIScriptGlobalObject> ScriptLoader::GetScriptGlobalObject(
}
nsresult ScriptLoader::FillCompileOptionsForRequest(
JSContext* aCx, ScriptLoadRequest* aRequest,
JS::Handle<JSObject*> aScopeChain, JS::CompileOptions* aOptions,
JSContext* aCx, ScriptLoadRequest* aRequest, JS::CompileOptions* aOptions,
JS::MutableHandle<JSScript*> aIntroductionScript) {
// It's very important to use aRequest->mURI, not the final URI of the channel
// aRequest ended up getting script data from, as the script filename.
@@ -1873,7 +1871,9 @@ nsresult ScriptLoader::FillCompileOptionsForRequest(
aOptions->setSourceMapURL(aRequest->mSourceMapURL->get());
}
if (aRequest->mOriginPrincipal) {
nsIPrincipal* scriptPrin = nsContentUtils::ObjectPrincipal(aScopeChain);
nsCOMPtr<nsIGlobalObject> globalObject = GetGlobalForRequest(aRequest);
nsIPrincipal* scriptPrin = globalObject->PrincipalOrNull();
MOZ_ASSERT(scriptPrin);
bool subsumes = scriptPrin->Subsumes(aRequest->mOriginPrincipal);
aOptions->setMutedErrors(!subsumes);
}
@@ -2222,7 +2222,6 @@ nsresult ScriptLoader::EvaluateScript(nsIGlobalObject* aGlobalObject,
nsAutoMicroTask mt;
AutoEntryScript aes(aGlobalObject, "EvaluateScript", true);
JSContext* cx = aes.cx();
JS::Rooted<JSObject*> global(cx, aGlobalObject->GetGlobalJSObject());
nsAutoCString profilerLabelString;
aRequest->GetLoadContext()->GetProfilerLabel(profilerLabelString);
@@ -2235,8 +2234,8 @@ nsresult ScriptLoader::EvaluateScript(nsIGlobalObject* aGlobalObject,
JS::CompileOptions options(cx);
JS::RootedScript introductionScript(cx);
nsresult rv = FillCompileOptionsForRequest(cx, aRequest, global, &options,
&introductionScript);
nsresult rv =
FillCompileOptionsForRequest(cx, aRequest, &options, &introductionScript);
if (NS_FAILED(rv)) {
return rv;
@@ -2244,6 +2243,7 @@ nsresult ScriptLoader::EvaluateScript(nsIGlobalObject* aGlobalObject,
TRACE_FOR_TEST(aRequest->GetLoadContext()->GetScriptElement(),
"scriptloader_execute");
JS::Rooted<JSObject*> global(cx, aGlobalObject->GetGlobalJSObject());
JSExecutionContext exec(cx, global, options, classicScriptValue,
introductionScript);