/** * If the current item in the event target chain has an event listener * manager, this method calls nsEventListenerManager::HandleEvent(). */ void HandleEvent(nsEventChainPostVisitor& aVisitor, ELMCreationDetector& aCd) { if (WantsWillHandleEvent()) { mTarget->WillHandleEvent(aVisitor); } if (aVisitor.mEvent->mFlags.mPropagationStopped) { return; } if (!mManager) { if (!MayHaveListenerManager() && !aCd.MayHaveNewListenerManager()) { return; } mManager = mTarget->GetExistingListenerManager(); } if (mManager) { NS_ASSERTION(aVisitor.mEvent->currentTarget == nullptr, "CurrentTarget should be null!"); mManager->HandleEvent(aVisitor.mPresContext, aVisitor.mEvent, &aVisitor.mDOMEvent, CurrentTarget(), &aVisitor.mEventStatus); NS_ASSERTION(aVisitor.mEvent->currentTarget == nullptr, "CurrentTarget should be null!"); } }
/** * If the current item in the event target chain has an event listener * manager, this method calls nsEventListenerManager::HandleEvent(). */ nsresult HandleEvent(nsEventChainPostVisitor& aVisitor, ELMCreationDetector& aCd, nsCxPusher* aPusher) { if (WantsWillHandleEvent()) { mTarget->WillHandleEvent(aVisitor); } if (aVisitor.mEvent->mFlags.mPropagationStopped) { return NS_OK; } if (!mManager) { if (!MayHaveListenerManager() && !aCd.MayHaveNewListenerManager()) { return NS_OK; } mManager = static_cast<nsEventListenerManager*>(mTarget->GetListenerManager(false)); } if (mManager) { NS_ASSERTION(aVisitor.mEvent->currentTarget == nullptr, "CurrentTarget should be null!"); mManager->HandleEvent(aVisitor.mPresContext, aVisitor.mEvent, &aVisitor.mDOMEvent, CurrentTarget(), &aVisitor.mEventStatus, aPusher); NS_ASSERTION(aVisitor.mEvent->currentTarget == nullptr, "CurrentTarget should be null!"); } return NS_OK; }