mirror of
https://github.com/roytam1/UXP.git
synced 2026-05-26 23:28:36 +00:00
Issue #618 - (async) Split out function to add async request.
This commit is contained in:
+30
-23
@@ -1358,17 +1358,14 @@ ScriptLoader::ProcessScriptElement(nsIScriptElement *aElement)
|
||||
request->mJSVersion = version;
|
||||
|
||||
if (aElement->GetScriptAsync()) {
|
||||
request->mInAsyncList = true;
|
||||
AddAsyncRequest(request);
|
||||
if (request->IsReadyToRun()) {
|
||||
mLoadedAsyncRequests.AppendElement(request);
|
||||
// The script is available already. Run it ASAP when the event
|
||||
// loop gets a chance to spin.
|
||||
|
||||
// KVKV TODO: Instead of processing immediately, try off-thread-parsing
|
||||
// it and only schedule a pending ProcessRequest if that fails.
|
||||
ProcessPendingRequestsAsync();
|
||||
} else {
|
||||
mLoadingAsyncRequests.AppendElement(request);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -1469,8 +1466,7 @@ ScriptLoader::ProcessScriptElement(nsIScriptElement *aElement)
|
||||
modReq->mBaseURL = mDocument->GetDocBaseURI();
|
||||
|
||||
if (aElement->GetScriptAsync()) {
|
||||
modReq->mInAsyncList = true;
|
||||
mLoadingAsyncRequests.AppendElement(modReq);
|
||||
AddAsyncRequest(modReq);
|
||||
} else {
|
||||
AddDeferRequest(modReq);
|
||||
}
|
||||
@@ -2418,23 +2414,6 @@ ScriptLoader::NumberOfProcessors()
|
||||
return mNumberOfProcessors;
|
||||
}
|
||||
|
||||
void
|
||||
ScriptLoader::MaybeMoveToLoadedList(ScriptLoadRequest* aRequest)
|
||||
{
|
||||
MOZ_ASSERT(aRequest->IsReadyToRun());
|
||||
|
||||
// If it's async, move it to the loaded list. aRequest->mInAsyncList really
|
||||
// _should_ be in a list, but the consequences if it's not are bad enough we
|
||||
// want to avoid trying to move it if it's not.
|
||||
if (aRequest->mInAsyncList) {
|
||||
MOZ_ASSERT(aRequest->isInList());
|
||||
if (aRequest->isInList()) {
|
||||
RefPtr<ScriptLoadRequest> req = mLoadingAsyncRequests.Steal(aRequest);
|
||||
mLoadedAsyncRequests.AppendElement(req);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nsresult
|
||||
ScriptLoader::PrepareLoadedRequest(ScriptLoadRequest* aRequest,
|
||||
nsIIncrementalStreamLoader* aLoader,
|
||||
@@ -2646,6 +2625,34 @@ ScriptLoader::AddDeferRequest(ScriptLoadRequest* aRequest)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ScriptLoader::AddAsyncRequest(ScriptLoadRequest* aRequest)
|
||||
{
|
||||
aRequest->mInAsyncList = true;
|
||||
if (aRequest->IsReadyToRun()) {
|
||||
mLoadedAsyncRequests.AppendElement(aRequest);
|
||||
} else {
|
||||
mLoadingAsyncRequests.AppendElement(aRequest);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ScriptLoader::MaybeMoveToLoadedList(ScriptLoadRequest* aRequest)
|
||||
{
|
||||
MOZ_ASSERT(aRequest->IsReadyToRun());
|
||||
|
||||
// If it's async, move it to the loaded list. aRequest->mInAsyncList really
|
||||
// _should_ be in a list, but the consequences if it's not are bad enough we
|
||||
// want to avoid trying to move it if it's not.
|
||||
if (aRequest->mInAsyncList) {
|
||||
MOZ_ASSERT(aRequest->isInList());
|
||||
if (aRequest->isInList()) {
|
||||
RefPtr<ScriptLoadRequest> req = mLoadingAsyncRequests.Steal(aRequest);
|
||||
mLoadedAsyncRequests.AppendElement(req);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
ScriptLoader::MaybeRemovedDeferRequests()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user