mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-20 04:14:21 +08:00
web animation updates
This commit is contained in:
76
scripts/vendor/web-animations-js/test/js/effect-callback.js
vendored
Executable file
76
scripts/vendor/web-animations-js/test/js/effect-callback.js
vendored
Executable file
@ -0,0 +1,76 @@
|
||||
suite('effect-callback', function() {
|
||||
setup(function() {
|
||||
document.timeline._animations = [];
|
||||
webAnimations1.timeline._animations = [];
|
||||
});
|
||||
|
||||
test('animations starting in the future are not in effect', function() {
|
||||
var fractions = [];
|
||||
tick(100);
|
||||
var animation = document.body.animate(function(fraction) { fractions.push(fraction); }, 1000);
|
||||
animation.startTime = 1000;
|
||||
tick(200);
|
||||
tick(1000);
|
||||
tick(1100);
|
||||
assert.deepEqual(fractions, [0, 0.1]);
|
||||
});
|
||||
|
||||
test('duration 0 animations get sampled at least once', function() {
|
||||
var timeFraction;
|
||||
tick(0);
|
||||
var animation = document.body.animate(function(t) {
|
||||
timeFraction = t;
|
||||
}, {duration: 0, fill: 'both'});
|
||||
tick(100);
|
||||
assert.equal(timeFraction, 1);
|
||||
assert.equal(isTicking(), false);
|
||||
});
|
||||
|
||||
test('animations added during custom effect callbacks get updated in the same tick', function() {
|
||||
var animation;
|
||||
var called = false;
|
||||
tick(0);
|
||||
document.body.animate(function() {
|
||||
animation = document.body.animate(function() {
|
||||
called = true;
|
||||
}, 1);
|
||||
}, 2);
|
||||
tick(1);
|
||||
assert.isTrue(animation.startTime >= 0);
|
||||
assert.isFalse(called);
|
||||
});
|
||||
|
||||
test('custom effect should be called after cancel', function() {
|
||||
var fractions = [];
|
||||
var animation = document.body.animate(function(fraction) { fractions.push(fraction); }, 1000);
|
||||
tick(0);
|
||||
tick(500);
|
||||
animation.cancel();
|
||||
tick(501);
|
||||
assert.deepEqual(fractions, [0, 0.5, null]);
|
||||
});
|
||||
|
||||
test('element.animate is given effect', function() {
|
||||
var callbackAnim;
|
||||
var animation = document.body.animate(function(t, target, a) {
|
||||
callbackAnim = a;
|
||||
}, 100);
|
||||
tick(50);
|
||||
tick(150);
|
||||
assert.equal(isTicking(), false);
|
||||
assert(callbackAnim, 'callback should be set');
|
||||
assert.equal(callbackAnim.target, document.body);
|
||||
});
|
||||
|
||||
test('custom callback on effect is given source effect', function() {
|
||||
var callbackAnim;
|
||||
var effect = new KeyframeEffect(document.body, function(t, target, a) {
|
||||
callbackAnim = a;
|
||||
}, 1000);
|
||||
var animation = document.timeline.play(effect);
|
||||
tick(50);
|
||||
tick(550);
|
||||
assert.equal(animation.currentTime, 500);
|
||||
assert.equal(callbackAnim, effect);
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user