diff --git a/dom/presentation/ipc/PresentationIPCService.cpp b/dom/presentation/ipc/PresentationIPCService.cpp index 12c4ea90d02b1..714483c9c5e4d 100644 --- a/dom/presentation/ipc/PresentationIPCService.cpp +++ b/dom/presentation/ipc/PresentationIPCService.cpp @@ -248,14 +248,14 @@ PresentationIPCService::RegisterSessionListener( MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(aListener); - nsCOMPtr listener; - if (mSessionListeners.Get(aSessionId, getter_AddRefs(listener))) { - mSessionListeners.InsertOrUpdate(aSessionId, RefPtr{aListener}); - return NS_OK; - } - - mSessionListeners.InsertOrUpdate(aSessionId, RefPtr{aListener}); - if (sPresentationChild) { + bool hadEntry = + mSessionListeners.WithEntryHandle(aSessionId, [&](auto&& entry) { + const bool hadEntry = entry.HasEntry(); + entry.InsertOrUpdate(RefPtr{aListener}); + return hadEntry; + }); + + if (!hadEntry && sPresentationChild) { Unused << NS_WARN_IF(!sPresentationChild->SendRegisterSessionHandler( nsString(aSessionId), aRole)); }