Bug 1466681 P2 Make ServiceWorkerContainer::Inner::GetRegistration() use callbacks instead of MozPromise. r=asuth

This commit is contained in:
Ben Kelly 2018-06-15 12:21:33 -07:00
Родитель 639857f640
Коммит a65f650d11
4 изменённых файлов: 47 добавлений и 26 удалений

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

@ -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;