Bug 1781268 - Clean up ResizeObserver error handling. r=Oriol

unobserve() never throws. observe() only threw on a case which should
never be reached (an already unlinked observer). We can assert and
return instead.

Differential Revision: https://phabricator.services.mozilla.com/D152769
This commit is contained in:
Emilio Cobos Álvarez
2022-07-26 15:30:19 +00:00
parent 9f853f39f4
commit 2bc04ca6f4
3 changed files with 7 additions and 15 deletions

View File

@@ -176,11 +176,7 @@ void ResizeObservation::Unlink(RemoveFromObserver aRemoveFromObserver) {
nsCOMPtr<Element> target = std::move(mTarget);
if (observer && target) {
if (aRemoveFromObserver == RemoveFromObserver::Yes) {
IgnoredErrorResult rv;
observer->Unobserve(*target, rv);
MOZ_DIAGNOSTIC_ASSERT(!rv.Failed(),
"How could we keep the observer and target around "
"without being in the observation map?");
observer->Unobserve(*target);
}
target->UnbindObject(observer);
}
@@ -243,10 +239,10 @@ already_AddRefed<ResizeObserver> ResizeObserver::Constructor(
}
void ResizeObserver::Observe(Element& aTarget,
const ResizeObserverOptions& aOptions,
ErrorResult& aRv) {
const ResizeObserverOptions& aOptions) {
if (MOZ_UNLIKELY(!mDocument)) {
return aRv.Throw(NS_ERROR_FAILURE);
MOZ_ASSERT_UNREACHABLE("How did we call observe() after unlink?");
return;
}
// NOTE(emilio): Per spec, this is supposed to happen on construction, but the
@@ -289,7 +285,7 @@ void ResizeObserver::Observe(Element& aTarget,
mDocument->ScheduleResizeObserversNotification();
}
void ResizeObserver::Unobserve(Element& aTarget, ErrorResult& aRv) {
void ResizeObserver::Unobserve(Element& aTarget) {
RefPtr<ResizeObservation> observation;
if (!mObservationMap.Remove(&aTarget, getter_AddRefs(observation))) {
return;