зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1228277 P2 Make skipWaiting() check the evaluating service worker script. r=asuth
This commit is contained in:
Родитель
cc9a82558b
Коммит
c8cef10a01
|
@ -2836,7 +2836,7 @@ ServiceWorkerManager::ClaimClients(nsIPrincipal* aPrincipal,
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
void
|
||||||
ServiceWorkerManager::SetSkipWaitingFlag(nsIPrincipal* aPrincipal,
|
ServiceWorkerManager::SetSkipWaitingFlag(nsIPrincipal* aPrincipal,
|
||||||
const nsCString& aScope,
|
const nsCString& aScope,
|
||||||
uint64_t aServiceWorkerID)
|
uint64_t aServiceWorkerID)
|
||||||
|
@ -2844,24 +2844,21 @@ ServiceWorkerManager::SetSkipWaitingFlag(nsIPrincipal* aPrincipal,
|
||||||
RefPtr<ServiceWorkerRegistrationInfo> registration =
|
RefPtr<ServiceWorkerRegistrationInfo> registration =
|
||||||
GetRegistration(aPrincipal, aScope);
|
GetRegistration(aPrincipal, aScope);
|
||||||
if (NS_WARN_IF(!registration)) {
|
if (NS_WARN_IF(!registration)) {
|
||||||
return NS_ERROR_FAILURE;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (registration->GetInstalling() &&
|
RefPtr<ServiceWorkerInfo> worker =
|
||||||
(registration->GetInstalling()->ID() == aServiceWorkerID)) {
|
registration->GetServiceWorkerInfoById(aServiceWorkerID);
|
||||||
registration->GetInstalling()->SetSkipWaitingFlag();
|
|
||||||
} else if (registration->GetWaiting() &&
|
if (NS_WARN_IF(!worker)) {
|
||||||
(registration->GetWaiting()->ID() == aServiceWorkerID)) {
|
return;
|
||||||
registration->GetWaiting()->SetSkipWaitingFlag();
|
|
||||||
if (registration->GetWaiting()->State() == ServiceWorkerState::Installed) {
|
|
||||||
registration->TryToActivateAsync();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
NS_WARNING("Failed to set skipWaiting flag, no matching worker.");
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return NS_OK;
|
worker->SetSkipWaitingFlag();
|
||||||
|
|
||||||
|
if (worker->State() == ServiceWorkerState::Installed) {
|
||||||
|
registration->TryToActivateAsync();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -255,7 +255,7 @@ public:
|
||||||
nsresult
|
nsresult
|
||||||
ClaimClients(nsIPrincipal* aPrincipal, const nsCString& aScope, uint64_t aId);
|
ClaimClients(nsIPrincipal* aPrincipal, const nsCString& aScope, uint64_t aId);
|
||||||
|
|
||||||
nsresult
|
void
|
||||||
SetSkipWaitingFlag(nsIPrincipal* aPrincipal, const nsCString& aScope,
|
SetSkipWaitingFlag(nsIPrincipal* aPrincipal, const nsCString& aScope,
|
||||||
uint64_t aServiceWorkerID);
|
uint64_t aServiceWorkerID);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче