Index: third_party/WebKit/LayoutTests/imported/wpt/web-animations/timing-model/animation-effects/active-time.html |
diff --git a/third_party/WebKit/LayoutTests/imported/wpt/web-animations/timing-model/animation-effects/active-time.html b/third_party/WebKit/LayoutTests/imported/wpt/web-animations/timing-model/animation-effects/active-time.html |
index 2fb028fe79bd56866691e348bc7566b6758d7bcc..37b7f8abae24dcb9befbbb0c80357e045fa18686 100644 |
--- a/third_party/WebKit/LayoutTests/imported/wpt/web-animations/timing-model/animation-effects/active-time.html |
+++ b/third_party/WebKit/LayoutTests/imported/wpt/web-animations/timing-model/animation-effects/active-time.html |
@@ -1,7 +1,7 @@ |
<!DOCTYPE html> |
<meta charset=utf-8> |
<title>Active time tests</title> |
-<link rel="help" href="https://w3c.github.io/web-animations/#active-time"> |
+<link rel="help" href="https://w3c.github.io/web-animations/#calculating-the-active-time"> |
<script src="/resources/testharness.js"></script> |
<script src="/resources/testharnessreport.js"></script> |
<script src="../../testcommon.js"></script> |
@@ -10,15 +10,133 @@ |
<script> |
'use strict'; |
-async_test(function(t) { |
- var div = createDiv(t); |
- var anim = div.animate({ opacity: [ 0, 1 ] }, { delay: 1 }); |
+test(function(t) { |
+ var tests = [ { fill: 'none', progress: null }, |
+ { fill: 'backwards', progress: 0 }, |
+ { fill: 'forwards', progress: null }, |
+ { fill: 'both', progress: 0 } ]; |
+ tests.forEach(function(test) { |
+ var anim = createDiv(t).animate(null, { delay: 1, fill: test.fill }); |
+ assert_equals(anim.effect.getComputedTiming().progress, test.progress, |
+ 'Progress in before phase when using \'' + test.fill |
+ + '\' fill'); |
+ }); |
+}, 'Active time in before phase'); |
+ |
+test(function(t) { |
+ var anim = createDiv(t).animate(null, 1000); |
+ anim.currentTime = 500; |
+ assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); |
+}, 'Active time in active phase and no start delay is the local time'); |
+ |
+test(function(t) { |
+ var anim = createDiv(t).animate(null, { duration: 1000, delay: 500 }); |
+ anim.currentTime = 1000; |
+ assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); |
+}, 'Active time in active phase and positive start delay is the local time' |
+ + ' minus the start delay'); |
+ |
+test(function(t) { |
+ var anim = createDiv(t).animate(null, { duration: 1000, delay: -500 }); |
+ assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); |
+}, 'Active time in active phase and negative start delay is the local time' |
+ + ' minus the start delay'); |
+ |
+test(function(t) { |
+ var anim = createDiv(t).animate(null); |
assert_equals(anim.effect.getComputedTiming().progress, null); |
- anim.finished.then(t.step_func(function() { |
- assert_equals(anim.effect.getComputedTiming().progress, null); |
- t.done(); |
- })); |
-}, 'Test progress during before and after phase when fill is none'); |
+}, 'Active time in after phase with no fill is unresolved'); |
+ |
+test(function(t) { |
+ var anim = createDiv(t).animate(null, { fill: 'backwards' }); |
+ assert_equals(anim.effect.getComputedTiming().progress, null); |
+}, 'Active time in after phase with backwards-only fill is unresolved'); |
+ |
+test(function(t) { |
+ var anim = createDiv(t).animate(null, { duration: 1000, |
+ iterations: 2.3, |
+ delay: 500, // Should have no effect |
+ fill: 'forwards' }); |
+ anim.finish(); |
+ assert_equals(anim.effect.getComputedTiming().currentIteration, 2); |
+ assert_times_equal(anim.effect.getComputedTiming().progress, 0.3); |
+}, 'Active time in after phase with forwards fill is the active duration'); |
+ |
+test(function(t) { |
+ var anim = createDiv(t).animate(null, { duration: 0, |
+ iterations: Infinity, |
+ fill: 'forwards' }); |
+ anim.finish(); |
+ assert_equals(anim.effect.getComputedTiming().currentIteration, Infinity); |
+ assert_equals(anim.effect.getComputedTiming().progress, 1); |
+}, 'Active time in after phase with forwards fill, zero-duration, and ' |
+ + ' infinite iteration count is the active duration'); |
+ |
+test(function(t) { |
+ var anim = createDiv(t).animate(null, { duration: 1000, |
+ iterations: 2.3, |
+ delay: 500, |
+ endDelay: 4000, |
+ fill: 'forwards' }); |
+ anim.finish(); |
+ assert_equals(anim.effect.getComputedTiming().currentIteration, 2); |
+ assert_times_equal(anim.effect.getComputedTiming().progress, 0.3); |
+}, 'Active time in after phase with forwards fill and positive end delay' |
+ + ' is the active duration'); |
+ |
+test(function(t) { |
+ var anim = createDiv(t).animate(null, { duration: 1000, |
+ iterations: 2.3, |
+ delay: 500, |
+ endDelay: -800, |
+ fill: 'forwards' }); |
+ anim.finish(); |
+ assert_equals(anim.effect.getComputedTiming().currentIteration, 1); |
+ assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); |
+}, 'Active time in after phase with forwards fill and negative end delay' |
+ + ' is the active duration + end delay'); |
+ |
+test(function(t) { |
+ var anim = createDiv(t).animate(null, { duration: 1000, |
+ iterations: 2.3, |
+ delay: 500, |
+ endDelay: -3000, |
+ fill: 'forwards' }); |
+ anim.finish(); |
+ assert_equals(anim.effect.getComputedTiming().currentIteration, 0); |
+ assert_equals(anim.effect.getComputedTiming().progress, 0); |
+}, 'Active time in after phase with forwards fill and negative end delay' |
+ + ' greater in magnitude than the active duration is zero'); |
+ |
+test(function(t) { |
+ var anim = createDiv(t).animate(null, { duration: 1000, |
+ iterations: 2.3, |
+ delay: 500, |
+ endDelay: -4000, |
+ fill: 'forwards' }); |
+ anim.finish(); |
+ assert_equals(anim.effect.getComputedTiming().currentIteration, 0); |
+ assert_equals(anim.effect.getComputedTiming().progress, 0); |
+}, 'Active time in after phase with forwards fill and negative end delay' |
+ + ' greater in magnitude than the sum of the active duration and start delay' |
+ + ' is zero'); |
+ |
+test(function(t) { |
+ var anim = createDiv(t).animate(null, { duration: 1000, |
+ iterations: 2.3, |
+ delay: 500, |
+ fill: 'both' }); |
+ anim.finish(); |
+ assert_equals(anim.effect.getComputedTiming().currentIteration, 2); |
+ assert_times_equal(anim.effect.getComputedTiming().progress, 0.3); |
+}, 'Active time in after phase with \'both\' fill is the active duration'); |
+ |
+test(function(t) { |
+ // Create an effect with a non-zero duration so we ensure we're not just |
+ // testing the after-phase behavior. |
+ var effect = new KeyframeEffect(null, null, 1); |
+ assert_equals(effect.getComputedTiming().progress, null); |
+}, 'Active time when the local time is unresolved, is unresolved'); |
</script> |
</body> |