diff options
Diffstat (limited to 'testing/web-platform/tests/animation-worklet/current-time.https.html')
-rw-r--r-- | testing/web-platform/tests/animation-worklet/current-time.https.html | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/testing/web-platform/tests/animation-worklet/current-time.https.html b/testing/web-platform/tests/animation-worklet/current-time.https.html new file mode 100644 index 0000000000..a445d5b004 --- /dev/null +++ b/testing/web-platform/tests/animation-worklet/current-time.https.html @@ -0,0 +1,64 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>The current time of a worklet animation</title> +<link rel="help" href="https://drafts.css-houdini.org/css-animationworklet/"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/web-animations/testcommon.js"></script> +<script src="common.js"></script> + +<div id="box"></div> + +<script> +'use strict'; + +function CreateAnimation() { + const box = document.getElementById('box'); + const effect = new KeyframeEffect( + box, + { height: ['100px', '50px'] }, + 10000); + + return new WorkletAnimation('passthrough', effect); +} + +setup(setupAndRegisterTests, {explicit_done: true}); + +function setupAndRegisterTests() { + registerPassthroughAnimator().then(() => { + promise_test(async t => { + const animation = CreateAnimation(); + animation.play(); + + assert_equals(animation.currentTime, 0, + 'Current time returns the hold time set when entering the play-pending' + + 'state'); + + animation.cancel(); + }, 'The current time returns the hold time when set'); + + promise_test(async t => { + const animation = CreateAnimation(); + animation.play(); + + // Allow one async animation frame to pass so that animation is running. + await waitForAsyncAnimationFrames(1); + assert_equals(animation.playState, "running"); + // Allow time to advance so that we have a non-zero current time. + await waitForDocumentTimelineAdvance(); + const timelineTime = document.timeline.currentTime; + assert_greater_than(animation.currentTime, 0); + assert_times_equal(animation.currentTime, (timelineTime - animation.startTime)); + + animation.cancel(); + }, 'The current time is calculated from the timeline time and start time'); + + done(); + }); +} + +// TODO(majidvp): Add tests for playbackRate and animations that are not +// associated with a timeline once these are supported in WorkletAnimation. +// http://crbug.com/833846 +</script> |