mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-24 18:55:30 +00:00
Bug 1298504, ensure existing listeners are correctly counted before disabling some device APIs, r=mccr8
This commit is contained in:
parent
8744d0ccf8
commit
9530ccd561
@ -654,6 +654,7 @@ EventListenerManager::RemoveEventListenerInternal(
|
||||
uint32_t count = mListeners.Length();
|
||||
uint32_t typeCount = 0;
|
||||
bool deviceType = IsDeviceType(aEventMessage);
|
||||
bool didRemove = false;
|
||||
|
||||
RefPtr<EventListenerManager> kungFuDeathGrip(this);
|
||||
|
||||
@ -665,20 +666,24 @@ EventListenerManager::RemoveEventListenerInternal(
|
||||
if (listener->mListener == aListenerHolder &&
|
||||
listener->mFlags.EqualsForRemoval(aFlags)) {
|
||||
mListeners.RemoveElementAt(i);
|
||||
didRemove = true;
|
||||
--count;
|
||||
NotifyEventListenerRemoved(aUserType);
|
||||
--i;
|
||||
if (!deviceType) {
|
||||
return;
|
||||
break;
|
||||
}
|
||||
--typeCount;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(didRemove) {
|
||||
NotifyEventListenerRemoved(aUserType);
|
||||
if (!aAllEvents && deviceType && typeCount == 0) {
|
||||
DisableDevice(aEventMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
EventListenerManager::ListenerCanHandle(const Listener* aListener,
|
||||
|
Loading…
Reference in New Issue
Block a user