mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-04 13:07:52 +00:00
Bug 1426440 - Fix processing of non-parser-generated module scripts r=smaug
This commit is contained in:
parent
09b342610e
commit
42419122ec
@ -845,9 +845,28 @@ ScriptLoader::CheckModuleDependenciesLoaded(ModuleLoadRequest* aRequest)
|
||||
LOG(("ScriptLoadRequest (%p): all ok", aRequest));
|
||||
}
|
||||
|
||||
class ScriptRequestProcessor : public Runnable
|
||||
{
|
||||
private:
|
||||
RefPtr<ScriptLoader> mLoader;
|
||||
RefPtr<ScriptLoadRequest> mRequest;
|
||||
public:
|
||||
ScriptRequestProcessor(ScriptLoader* aLoader, ScriptLoadRequest* aRequest)
|
||||
: Runnable("dom::ScriptRequestProcessor")
|
||||
, mLoader(aLoader)
|
||||
, mRequest(aRequest)
|
||||
{}
|
||||
NS_IMETHOD Run() override
|
||||
{
|
||||
return mLoader->ProcessRequest(mRequest);
|
||||
}
|
||||
};
|
||||
|
||||
void
|
||||
ScriptLoader::ProcessLoadedModuleTree(ModuleLoadRequest* aRequest)
|
||||
{
|
||||
MOZ_ASSERT(aRequest->IsReadyToRun());
|
||||
|
||||
if (aRequest->IsTopLevel()) {
|
||||
ModuleScript* moduleScript = aRequest->mModuleScript;
|
||||
if (moduleScript && !moduleScript->HasErrorToRethrow()) {
|
||||
@ -855,8 +874,17 @@ ScriptLoader::ProcessLoadedModuleTree(ModuleLoadRequest* aRequest)
|
||||
aRequest->mModuleScript = nullptr;
|
||||
}
|
||||
}
|
||||
MaybeMoveToLoadedList(aRequest);
|
||||
ProcessPendingRequests();
|
||||
|
||||
if (aRequest->mIsInline &&
|
||||
aRequest->mElement->GetParserCreated() == NOT_FROM_PARSER)
|
||||
{
|
||||
MOZ_ASSERT(!aRequest->isInList());
|
||||
nsContentUtils::AddScriptRunner(
|
||||
new ScriptRequestProcessor(this, aRequest));
|
||||
} else {
|
||||
MaybeMoveToLoadedList(aRequest);
|
||||
ProcessPendingRequests();
|
||||
}
|
||||
}
|
||||
|
||||
if (aRequest->mWasCompiledOMT) {
|
||||
@ -1165,23 +1193,6 @@ ScriptLoader::PreloadURIComparator::Equals(const PreloadInfo& aPi,
|
||||
same;
|
||||
}
|
||||
|
||||
class ScriptRequestProcessor : public Runnable
|
||||
{
|
||||
private:
|
||||
RefPtr<ScriptLoader> mLoader;
|
||||
RefPtr<ScriptLoadRequest> mRequest;
|
||||
public:
|
||||
ScriptRequestProcessor(ScriptLoader* aLoader, ScriptLoadRequest* aRequest)
|
||||
: Runnable("dom::ScriptRequestProcessor")
|
||||
, mLoader(aLoader)
|
||||
, mRequest(aRequest)
|
||||
{}
|
||||
NS_IMETHOD Run() override
|
||||
{
|
||||
return mLoader->ProcessRequest(mRequest);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns ValidJSVersion::Valid if aVersionStr is a string of the form
|
||||
* '1.n', n = 0, ..., 8, and ValidJSVersion::Invalid for other strings.
|
||||
@ -1583,12 +1594,14 @@ ScriptLoader::ProcessScriptElement(nsIScriptElement* aElement)
|
||||
if (request->IsModuleRequest()) {
|
||||
ModuleLoadRequest* modReq = request->AsModuleRequest();
|
||||
modReq->mBaseURL = mDocument->GetDocBaseURI();
|
||||
modReq->mIsAsync = aElement->GetScriptAsync();
|
||||
|
||||
if (aElement->GetScriptAsync()) {
|
||||
modReq->mIsAsync = true;
|
||||
mLoadingAsyncRequests.AppendElement(modReq);
|
||||
} else {
|
||||
AddDeferRequest(modReq);
|
||||
if (aElement->GetParserCreated() != NOT_FROM_PARSER) {
|
||||
if (modReq->mIsAsync) {
|
||||
mLoadingAsyncRequests.AppendElement(modReq);
|
||||
} else {
|
||||
AddDeferRequest(modReq);
|
||||
}
|
||||
}
|
||||
|
||||
nsresult rv = ProcessFetchedModuleSource(modReq);
|
||||
@ -1612,7 +1625,7 @@ ScriptLoader::ProcessScriptElement(nsIScriptElement* aElement)
|
||||
NS_ASSERTION(!nsContentUtils::IsSafeToRunScript(),
|
||||
"A script-inserted script is inserted without an update batch?");
|
||||
nsContentUtils::AddScriptRunner(new ScriptRequestProcessor(this,
|
||||
request));
|
||||
request));
|
||||
return false;
|
||||
}
|
||||
if (aElement->GetParserCreated() == FROM_PARSER_NETWORK &&
|
||||
|
@ -1,5 +0,0 @@
|
||||
[instantiation-error-8.html]
|
||||
expected: TIMEOUT
|
||||
[Instantiate attempt on a tree w/ previously instantiate-failed tree as a sub-tree shouldn't crash.]
|
||||
expected: TIMEOUT
|
||||
|
Loading…
x
Reference in New Issue
Block a user