Bug 1305458 Part6: Move fire change event from HTMLTextAreaElement::GetEventTargetParent to PreHandleEvent. r=smaug

MozReview-Commit-ID: K0tuWlUOLw7

--HG--
extra : rebase_source : ade1219fe5e90b8c08a596b919a118a0508d23d0
This commit is contained in:
Stone Shih 2016-10-21 17:33:41 +08:00
parent 56a3971717
commit 8400e13089
2 changed files with 14 additions and 2 deletions

View File

@ -531,14 +531,25 @@ HTMLTextAreaElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
aVisitor.mEvent->mFlags.mNoContentDispatch = false;
}
// Fire onchange (if necessary), before we do the blur, bug 370521.
if (aVisitor.mEvent->mMessage == eBlur) {
FireChangeEventIfNeeded();
// Set mWantsPreHandleEvent and fire change event in PreHandleEvent to
// prevent it breaks event target chain creation.
aVisitor.mWantsPreHandleEvent = true;
}
return nsGenericHTMLFormElementWithState::GetEventTargetParent(aVisitor);
}
nsresult
HTMLTextAreaElement::PreHandleEvent(EventChainVisitor& aVisitor)
{
if (aVisitor.mEvent->mMessage == eBlur) {
// Fire onchange (if necessary), before we do the blur, bug 370521.
FireChangeEventIfNeeded();
}
return nsGenericHTMLFormElementWithState::PreHandleEvent(aVisitor);
}
void
HTMLTextAreaElement::FireChangeEventIfNeeded()
{

View File

@ -127,6 +127,7 @@ public:
virtual nsresult GetEventTargetParent(
EventChainPreVisitor& aVisitor) override;
virtual nsresult PreHandleEvent(EventChainVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;