Bug 1273202, make sure to not keep objects alive too long because of some useless event dispatching, r=jwatt

This commit is contained in:
Olli Pettay
2016-05-16 21:42:24 +03:00
parent 110220f199
commit 9abfb88f79
2 changed files with 14 additions and 4 deletions

View File

@@ -1007,7 +1007,7 @@ HTMLInputElement::HTMLInputElement(already_AddRefed<mozilla::dom::NodeInfo>& aNo
HTMLInputElement::~HTMLInputElement()
{
if (mNumberControlSpinnerIsSpinning) {
StopNumberControlSpinnerSpin();
StopNumberControlSpinnerSpin(eDisallowDispatchingEvents);
}
DestroyImageLoadingContent();
FreeData();
@@ -3597,7 +3597,7 @@ HTMLInputElement::StartNumberControlSpinnerSpin()
}
void
HTMLInputElement::StopNumberControlSpinnerSpin()
HTMLInputElement::StopNumberControlSpinnerSpin(SpinnerStopState aState)
{
if (mNumberControlSpinnerIsSpinning) {
if (nsIPresShell::GetCapturingContent() == this) {
@@ -3608,11 +3608,16 @@ HTMLInputElement::StopNumberControlSpinnerSpin()
mNumberControlSpinnerIsSpinning = false;
FireChangeEventIfNeeded();
if (aState == eAllowDispatchingEvents) {
FireChangeEventIfNeeded();
}
nsNumberControlFrame* numberControlFrame =
do_QueryFrame(GetPrimaryFrame());
if (numberControlFrame) {
MOZ_ASSERT(aState == eAllowDispatchingEvents,
"Shouldn't have primary frame for the element when we're not "
"allowed to dispatch events to it anymore.");
numberControlFrame->SpinnerStateChanged();
}
}