Bug 1287983 part 7 - Add negative delay tests for CSS-Transitions event. r=birtles

MozReview-Commit-ID: KOVljOtRqFt

--HG--
extra : rebase_source : 324e0075339a99e7abadb82f3033ec7e4e7175e8
This commit is contained in:
Mantaroh Yoshinaga 2016-10-21 11:37:53 +09:00
parent cf59836bae
commit e04fc55c09

View File

@ -32,9 +32,10 @@ TransitionEventHandler.prototype.clear = function() {
this.transitionend = undefined;
};
function setupTransition(t) {
function setupTransition(t, transitionStyle) {
var div, watcher, handler, transition;
div = addDiv(t, { style: 'transition: margin-left 100s 100s' });
transitionStyle = transitionStyle || 'transition: margin-left 100s 100s';
div = addDiv(t, { style: transitionStyle });
watcher = new EventWatcher(t, div, [ 'transitionrun',
'transitionstart',
'transitionend' ]);
@ -176,6 +177,46 @@ promise_test(function(t) {
});
}, 'After -> Active');
promise_test(function(t) {
var [transition, watcher, handler] =
setupTransition(t, 'transition: margin-left 100s -50s');
return watcher.wait_for([ 'transitionrun',
'transitionstart' ]).then(function() {
assert_equals(handler.transitionrun, 50.0);
assert_equals(handler.transitionstart, 50.0);
transition.finish();
return watcher.wait_for('transitionend');
}).then(function(evt) {
assert_equals(evt.elapsedTime, 100.0);
});
}, 'Calculating the interval start and end time with negative start delay.');
promise_test(function(t) {
var [transition, watcher, handler] = setupTransition(t);
return watcher.wait_for('transitionrun').then(function(evt) {
// We can't set the end delay via generated effect timing.
// Because CSS-Transition use the AnimationEffectTimingReadOnly.
transition.effect = new KeyframeEffect(handler.target,
{ marginleft: [ '0px', '100px' ]},
{ duration: 100 * MS_PER_SEC,
endDelay: -50 * MS_PER_SEC });
// Seek to Before and play.
transition.cancel();
transition.play();
return watcher.wait_for('transitionstart');
}).then(function() {
assert_equals(handler.transitionstart, 0.0);
// Seek to After phase.
transition.finish();
return watcher.wait_for('transitionend');
}).then(function(evt) {
assert_equals(evt.elapsedTime, 50.0);
});
}, 'Calculating the interval start and end time with negative end delay.');
done();
</script>
</body>