Bug 1336899 - Should not fire the transitioncancel after ending CSS Transition. r=birtles

MozReview-Commit-ID: IrqNNjVg0xg

--HG--
extra : rebase_source : 769e4646375d41b5621ee71c8f0ce5eb44bae8d1
This commit is contained in:
Mantaroh Yoshinaga 2017-02-06 16:21:01 +09:00
parent 114603b64b
commit 1ba8149d5d
2 changed files with 9 additions and 8 deletions

View File

@ -464,7 +464,9 @@ promise_test(function(t) {
return watcher.wait_for('transitionend');
}).then(function(evt) {
transition.cancel();
return watcher.wait_for('transitioncancel');
// Then wait a couple of frames and check that no event was dispatched
return waitForAnimationFrames(2);
});
}, 'Cancel the transition after clearing the target effect');

View File

@ -202,8 +202,6 @@ CSSTransition::QueueEvents(StickyTimeDuration aActiveTime)
if (!mEffect) {
currentPhase = GetTransitionPhaseWithoutEffect();
intervalStartTime = zeroDuration;
intervalEndTime = zeroDuration;
} else {
ComputedTiming computedTiming = mEffect->GetComputedTiming();
@ -221,9 +219,9 @@ CSSTransition::QueueEvents(StickyTimeDuration aActiveTime)
// perhaps even with different timelines.
// The zero timestamp is for transitionrun events where we ignore the delay
// for the purpose of ordering events.
TimeStamp zeroTimeStamp = AnimationTimeToTimeStamp(zeroDuration);
TimeStamp startTimeStamp = ElapsedTimeToTimeStamp(intervalStartTime);
TimeStamp endTimeStamp = ElapsedTimeToTimeStamp(intervalEndTime);
TimeStamp zeroTimeStamp = AnimationTimeToTimeStamp(zeroDuration);
TimeStamp startTimeStamp = ElapsedTimeToTimeStamp(intervalStartTime);
TimeStamp endTimeStamp = ElapsedTimeToTimeStamp(intervalEndTime);
if (mPendingState != PendingState::NotPending &&
(mPreviousTransitionPhase == TransitionPhase::Idle ||
@ -234,8 +232,9 @@ CSSTransition::QueueEvents(StickyTimeDuration aActiveTime)
AutoTArray<TransitionEventParams, 3> events;
// Handle cancel events firts
if (mPreviousTransitionPhase != TransitionPhase::Idle &&
// Handle cancel events first
if ((mPreviousTransitionPhase != TransitionPhase::Idle &&
mPreviousTransitionPhase != TransitionPhase::After) &&
currentPhase == TransitionPhase::Idle) {
TimeStamp activeTimeStamp = ElapsedTimeToTimeStamp(aActiveTime);
events.AppendElement(TransitionEventParams{ eTransitionCancel,