Bug 1228277 P2 Make skipWaiting() check the evaluating service worker script. r=asuth

This commit is contained in:
Ben Kelly 2016-07-27 19:09:15 -04:00
Родитель cc9a82558b
Коммит c8cef10a01
2 изменённых файлов: 13 добавлений и 16 удалений

Просмотреть файл

@ -2836,7 +2836,7 @@ ServiceWorkerManager::ClaimClients(nsIPrincipal* aPrincipal,
return NS_OK;
}
nsresult
void
ServiceWorkerManager::SetSkipWaitingFlag(nsIPrincipal* aPrincipal,
const nsCString& aScope,
uint64_t aServiceWorkerID)
@ -2844,24 +2844,21 @@ ServiceWorkerManager::SetSkipWaitingFlag(nsIPrincipal* aPrincipal,
RefPtr<ServiceWorkerRegistrationInfo> registration =
GetRegistration(aPrincipal, aScope);
if (NS_WARN_IF(!registration)) {
return NS_ERROR_FAILURE;
return;
}
if (registration->GetInstalling() &&
(registration->GetInstalling()->ID() == aServiceWorkerID)) {
registration->GetInstalling()->SetSkipWaitingFlag();
} else if (registration->GetWaiting() &&
(registration->GetWaiting()->ID() == aServiceWorkerID)) {
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;
RefPtr<ServiceWorkerInfo> worker =
registration->GetServiceWorkerInfoById(aServiceWorkerID);
if (NS_WARN_IF(!worker)) {
return;
}
return NS_OK;
worker->SetSkipWaitingFlag();
if (worker->State() == ServiceWorkerState::Installed) {
registration->TryToActivateAsync();
}
}
void

Просмотреть файл

@ -255,7 +255,7 @@ public:
nsresult
ClaimClients(nsIPrincipal* aPrincipal, const nsCString& aScope, uint64_t aId);
nsresult
void
SetSkipWaitingFlag(nsIPrincipal* aPrincipal, const nsCString& aScope,
uint64_t aServiceWorkerID);