mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
d52fb9224a
This patch splits the code paths for registration.update and soft update since they have different behaviour. Next, it changes ServiceWorkerRegisterJob to use just one callback and just prevents soft update from queuing a new task if another one is pending.
101 lines
2.3 KiB
C++
101 lines
2.3 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "ServiceWorkerManagerChild.h"
|
|
#include "ServiceWorkerManager.h"
|
|
#include "mozilla/unused.h"
|
|
|
|
namespace mozilla {
|
|
|
|
using namespace ipc;
|
|
|
|
namespace dom {
|
|
namespace workers {
|
|
|
|
bool
|
|
ServiceWorkerManagerChild::RecvNotifyRegister(
|
|
const ServiceWorkerRegistrationData& aData)
|
|
{
|
|
if (mShuttingDown) {
|
|
return true;
|
|
}
|
|
|
|
RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance();
|
|
MOZ_ASSERT(swm);
|
|
|
|
swm->LoadRegistration(aData);
|
|
return true;
|
|
}
|
|
|
|
bool
|
|
ServiceWorkerManagerChild::RecvNotifySoftUpdate(
|
|
const PrincipalOriginAttributes& aOriginAttributes,
|
|
const nsString& aScope)
|
|
{
|
|
if (mShuttingDown) {
|
|
return true;
|
|
}
|
|
|
|
RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance();
|
|
MOZ_ASSERT(swm);
|
|
|
|
swm->SoftUpdate(aOriginAttributes, NS_ConvertUTF16toUTF8(aScope));
|
|
return true;
|
|
}
|
|
|
|
bool
|
|
ServiceWorkerManagerChild::RecvNotifyUnregister(const PrincipalInfo& aPrincipalInfo,
|
|
const nsString& aScope)
|
|
{
|
|
if (mShuttingDown) {
|
|
return true;
|
|
}
|
|
|
|
RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance();
|
|
MOZ_ASSERT(swm);
|
|
|
|
nsCOMPtr<nsIPrincipal> principal = PrincipalInfoToPrincipal(aPrincipalInfo);
|
|
if (NS_WARN_IF(!principal)) {
|
|
return true;
|
|
}
|
|
|
|
nsresult rv = swm->Unregister(principal, nullptr, aScope);
|
|
Unused << NS_WARN_IF(NS_FAILED(rv));
|
|
return true;
|
|
}
|
|
|
|
bool
|
|
ServiceWorkerManagerChild::RecvNotifyRemove(const nsCString& aHost)
|
|
{
|
|
if (mShuttingDown) {
|
|
return true;
|
|
}
|
|
|
|
RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance();
|
|
MOZ_ASSERT(swm);
|
|
|
|
swm->Remove(aHost);
|
|
return true;
|
|
}
|
|
|
|
bool
|
|
ServiceWorkerManagerChild::RecvNotifyRemoveAll()
|
|
{
|
|
if (mShuttingDown) {
|
|
return true;
|
|
}
|
|
|
|
RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance();
|
|
MOZ_ASSERT(swm);
|
|
|
|
swm->RemoveAll();
|
|
return true;
|
|
}
|
|
|
|
} // namespace workers
|
|
} // namespace dom
|
|
} // namespace mozilla
|