From 059ca97fcef1efc0aa6f4ab70000094898a38e91 Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Wed, 1 Aug 2018 00:19:15 +0200 Subject: [PATCH] Bug 1278831 - DOMEventTargetHelper must release itself when disconnected from the owner and when kept alive by some event listener, r=smaug --- dom/events/DOMEventTargetHelper.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/dom/events/DOMEventTargetHelper.cpp b/dom/events/DOMEventTargetHelper.cpp index af44845748c1..fb7abaa7d367 100644 --- a/dom/events/DOMEventTargetHelper.cpp +++ b/dom/events/DOMEventTargetHelper.cpp @@ -295,20 +295,22 @@ DOMEventTargetHelper::MaybeUpdateKeepAlive() { bool shouldBeKeptAlive = false; - if (!mKeepingAliveTypes.mAtoms.IsEmpty()) { - for (uint32_t i = 0; i < mKeepingAliveTypes.mAtoms.Length(); ++i) { - if (HasListenersFor(mKeepingAliveTypes.mAtoms[i])) { - shouldBeKeptAlive = true; - break; + if (NS_SUCCEEDED(CheckInnerWindowCorrectness())) { + if (!mKeepingAliveTypes.mAtoms.IsEmpty()) { + for (uint32_t i = 0; i < mKeepingAliveTypes.mAtoms.Length(); ++i) { + if (HasListenersFor(mKeepingAliveTypes.mAtoms[i])) { + shouldBeKeptAlive = true; + break; + } } } - } - if (!shouldBeKeptAlive && !mKeepingAliveTypes.mStrings.IsEmpty()) { - for (uint32_t i = 0; i < mKeepingAliveTypes.mStrings.Length(); ++i) { - if (HasListenersFor(mKeepingAliveTypes.mStrings[i])) { - shouldBeKeptAlive = true; - break; + if (!shouldBeKeptAlive && !mKeepingAliveTypes.mStrings.IsEmpty()) { + for (uint32_t i = 0; i < mKeepingAliveTypes.mStrings.Length(); ++i) { + if (HasListenersFor(mKeepingAliveTypes.mStrings[i])) { + shouldBeKeptAlive = true; + break; + } } } }