зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1466681 P2 Make ServiceWorkerContainer::Inner::GetRegistration() use callbacks instead of MozPromise. r=asuth
This commit is contained in:
Родитель
639857f640
Коммит
a65f650d11
|
@ -485,13 +485,9 @@ ServiceWorkerContainer::GetRegistration(const nsAString& aURL,
|
|||
}
|
||||
|
||||
RefPtr<ServiceWorkerContainer> self = this;
|
||||
RefPtr<DOMMozPromiseRequestHolder<ServiceWorkerRegistrationPromise>> holder =
|
||||
new DOMMozPromiseRequestHolder<ServiceWorkerRegistrationPromise>(global);
|
||||
|
||||
mInner->GetRegistration(clientInfo.ref(), spec)->Then(
|
||||
global->EventTargetFor(TaskCategory::Other), __func__,
|
||||
[self, outer, holder] (const ServiceWorkerRegistrationDescriptor& aDescriptor) {
|
||||
holder->Complete();
|
||||
mInner->GetRegistration(clientInfo.ref(), spec,
|
||||
[self, outer] (const ServiceWorkerRegistrationDescriptor& aDescriptor) {
|
||||
ErrorResult rv;
|
||||
nsIGlobalObject* global = self->GetGlobalIfValid(rv);
|
||||
if (rv.Failed()) {
|
||||
|
@ -501,16 +497,16 @@ ServiceWorkerContainer::GetRegistration(const nsAString& aURL,
|
|||
RefPtr<ServiceWorkerRegistration> reg =
|
||||
global->GetOrCreateServiceWorkerRegistration(aDescriptor);
|
||||
outer->MaybeResolve(reg);
|
||||
}, [self, outer, holder] (const CopyableErrorResult& aRv) {
|
||||
holder->Complete();
|
||||
ErrorResult rv;
|
||||
Unused << self->GetGlobalIfValid(rv);
|
||||
if (!rv.Failed() && !aRv.Failed()) {
|
||||
outer->MaybeResolveWithUndefined();
|
||||
return;
|
||||
}, [self, outer] (ErrorResult& aRv) {
|
||||
if (!aRv.Failed()) {
|
||||
Unused << self->GetGlobalIfValid(aRv);
|
||||
if (!aRv.Failed()) {
|
||||
outer->MaybeResolveWithUndefined();
|
||||
return;
|
||||
}
|
||||
}
|
||||
outer->MaybeReject(CopyableErrorResult(aRv));
|
||||
})->Track(*holder);
|
||||
outer->MaybeReject(aRv);
|
||||
});
|
||||
|
||||
return outer.forget();
|
||||
}
|
||||
|
|
|
@ -40,9 +40,11 @@ public:
|
|||
ServiceWorkerRegistrationCallback&& aSuccessCB,
|
||||
ServiceWorkerFailureCallback&& aFailureCB) const = 0;
|
||||
|
||||
virtual RefPtr<ServiceWorkerRegistrationPromise>
|
||||
virtual void
|
||||
GetRegistration(const ClientInfo& aClientInfo,
|
||||
const nsACString& aURL) const = 0;
|
||||
const nsACString& aURL,
|
||||
ServiceWorkerRegistrationCallback&& aSuccessCB,
|
||||
ServiceWorkerFailureCallback&& aFailureCB) const = 0;
|
||||
|
||||
virtual RefPtr<ServiceWorkerRegistrationListPromise>
|
||||
GetRegistrations(const ClientInfo& aClientInfo) const = 0;
|
||||
|
|
|
@ -71,17 +71,38 @@ ServiceWorkerContainerImpl::Register(const ClientInfo& aClientInfo,
|
|||
})->Track(*holder);
|
||||
}
|
||||
|
||||
RefPtr<ServiceWorkerRegistrationPromise>
|
||||
void
|
||||
ServiceWorkerContainerImpl::GetRegistration(const ClientInfo& aClientInfo,
|
||||
const nsACString& aURL) const
|
||||
const nsACString& aURL,
|
||||
ServiceWorkerRegistrationCallback&& aSuccessCB,
|
||||
ServiceWorkerFailureCallback&& aFailureCB) const
|
||||
{
|
||||
RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance();
|
||||
if (NS_WARN_IF(!swm)) {
|
||||
return ServiceWorkerRegistrationPromise::CreateAndReject(NS_ERROR_DOM_INVALID_STATE_ERR,
|
||||
__func__);
|
||||
MOZ_DIAGNOSTIC_ASSERT(mOuter);
|
||||
|
||||
nsIGlobalObject* global = mOuter->GetParentObject();
|
||||
if (NS_WARN_IF(!global)) {
|
||||
aFailureCB(CopyableErrorResult(NS_ERROR_DOM_INVALID_STATE_ERR));
|
||||
return;
|
||||
}
|
||||
|
||||
return swm->GetRegistration(aClientInfo, aURL);
|
||||
RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance();
|
||||
if (NS_WARN_IF(!swm)) {
|
||||
aFailureCB(CopyableErrorResult(NS_ERROR_DOM_INVALID_STATE_ERR));
|
||||
return;
|
||||
}
|
||||
|
||||
auto holder =
|
||||
MakeRefPtr<DOMMozPromiseRequestHolder<ServiceWorkerRegistrationPromise>>(global);
|
||||
|
||||
swm->GetRegistration(aClientInfo, aURL)->Then(
|
||||
global->EventTargetFor(TaskCategory::Other), __func__,
|
||||
[successCB = std::move(aSuccessCB), holder] (const ServiceWorkerRegistrationDescriptor& aDescriptor) {
|
||||
holder->Complete();
|
||||
successCB(aDescriptor);
|
||||
}, [failureCB = std::move(aFailureCB), holder] (const CopyableErrorResult& aResult) {
|
||||
holder->Complete();
|
||||
failureCB(CopyableErrorResult(aResult));
|
||||
})->Track(*holder);
|
||||
}
|
||||
|
||||
RefPtr<ServiceWorkerRegistrationListPromise>
|
||||
|
|
|
@ -36,9 +36,11 @@ public:
|
|||
ServiceWorkerRegistrationCallback&& aSuccessCB,
|
||||
ServiceWorkerFailureCallback&& aFailureCB) const override;
|
||||
|
||||
RefPtr<ServiceWorkerRegistrationPromise>
|
||||
void
|
||||
GetRegistration(const ClientInfo& aClientInfo,
|
||||
const nsACString& aURL) const override;
|
||||
const nsACString& aURL,
|
||||
ServiceWorkerRegistrationCallback&& aSuccessCB,
|
||||
ServiceWorkerFailureCallback&& aFailureCB) const override;
|
||||
|
||||
RefPtr<ServiceWorkerRegistrationListPromise>
|
||||
GetRegistrations(const ClientInfo& aClientInfo) const override;
|
||||
|
|
Загрузка…
Ссылка в новой задаче