зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1287706 part 6 - Separate notifying listener removal to an independent method. r=smaug
MozReview-Commit-ID: EE4fp4eqzqK --HG-- extra : source : 51a979be13f77f84e69ea202ddb2838612b324c0
This commit is contained in:
Родитель
5b8c16a02b
Коммит
55d860ca4a
|
@ -605,6 +605,22 @@ EventListenerManager::DisableDevice(EventMessage aEventMessage)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
EventListenerManager::NotifyEventListenerRemoved(nsIAtom* aUserType)
|
||||
{
|
||||
// If the following code is changed, other callsites of EventListenerRemoved
|
||||
// and NotifyAboutMainThreadListenerChange should be changed too.
|
||||
mNoListenerForEvent = eVoidEvent;
|
||||
mNoListenerForEventAtom = nullptr;
|
||||
if (mTarget && aUserType) {
|
||||
mTarget->EventListenerRemoved(aUserType);
|
||||
}
|
||||
if (mIsMainThreadELM && mTarget) {
|
||||
EventListenerService::NotifyAboutMainThreadListenerChange(mTarget,
|
||||
aUserType);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
EventListenerManager::RemoveEventListenerInternal(
|
||||
EventListenerHolder aListenerHolder,
|
||||
|
@ -634,16 +650,7 @@ EventListenerManager::RemoveEventListenerInternal(
|
|||
RefPtr<EventListenerManager> kungFuDeathGrip(this);
|
||||
mListeners.RemoveElementAt(i);
|
||||
--count;
|
||||
mNoListenerForEvent = eVoidEvent;
|
||||
mNoListenerForEventAtom = nullptr;
|
||||
if (mTarget && aUserType) {
|
||||
mTarget->EventListenerRemoved(aUserType);
|
||||
}
|
||||
if (mIsMainThreadELM && mTarget) {
|
||||
EventListenerService::NotifyAboutMainThreadListenerChange(mTarget,
|
||||
aUserType);
|
||||
}
|
||||
|
||||
NotifyEventListenerRemoved(aUserType);
|
||||
if (!deviceType) {
|
||||
return;
|
||||
}
|
||||
|
@ -903,14 +910,7 @@ EventListenerManager::RemoveEventHandler(nsIAtom* aName,
|
|||
|
||||
if (listener) {
|
||||
mListeners.RemoveElementAt(uint32_t(listener - &mListeners.ElementAt(0)));
|
||||
mNoListenerForEvent = eVoidEvent;
|
||||
mNoListenerForEventAtom = nullptr;
|
||||
if (mTarget && aName) {
|
||||
mTarget->EventListenerRemoved(aName);
|
||||
}
|
||||
if (mIsMainThreadELM && mTarget) {
|
||||
EventListenerService::NotifyAboutMainThreadListenerChange(mTarget, aName);
|
||||
}
|
||||
NotifyEventListenerRemoved(aName);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -602,6 +602,7 @@ protected:
|
|||
const EventListenerFlags& aFlags,
|
||||
bool aAllEvents = false);
|
||||
void RemoveAllListeners();
|
||||
void NotifyEventListenerRemoved(nsIAtom* aUserType);
|
||||
const EventTypeData* GetTypeDataForIID(const nsIID& aIID);
|
||||
const EventTypeData* GetTypeDataForEventName(nsIAtom* aName);
|
||||
nsPIDOMWindowInner* GetInnerWindowForTarget();
|
||||
|
|
Загрузка…
Ссылка в новой задаче