| <!doctype html> | |
| <meta charset=utf-8> | |
| <title>CSSAnimation.startTime</title> | |
| <!-- TODO: Add a more specific link for this once it is specified. --> | |
| <link rel="help" href="https://drafts.csswg.org/css-animations-2/#cssanimation"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="support/testcommon.js"></script> | |
| <style> | |
| .animated-div { | |
| margin-left: 10px; | |
| /* Make it easier to calculate expected values: */ | |
| animation-timing-function: linear ! important; | |
| } | |
| @keyframes anim { | |
| from { margin-left: 100px; } | |
| to { margin-left: 200px; } | |
| } | |
| </style> | |
| <div id="log"></div> | |
| <script type="text/javascript"> | |
| 'use strict'; | |
| test(t => { | |
| const div = addDiv(t, { 'class': 'animated-div' }); | |
| div.style.animation = 'anim 100s 100s'; | |
| const animation = div.getAnimations()[0]; | |
| const timelineTime = animation.timeline.currentTime; | |
| animation.startTime = timelineTime; | |
| assert_times_equal(animation.startTime, timelineTime, | |
| 'Check setting of startTime actually works'); | |
| }, 'The start time of a CSS animation can be set'); | |
| promise_test(async t => { | |
| const div = addDiv(t, { 'class': 'animated-div' }); | |
| div.style.animation = 'anim 100s 100s'; | |
| const animation = div.getAnimations()[0]; | |
| // Seek to the half-way point | |
| animation.startTime = animation.timeline.currentTime - 150 * MS_PER_SEC; | |
| assert_equals(getComputedStyle(div).marginLeft, '150px'); | |
| }, 'The start time can be set to seek a CSS animation'); | |
| promise_test(async t => { | |
| const div = addDiv(t, { class: 'animated-div' }); | |
| const eventWatcher = new EventWatcher(t, div, [ | |
| 'animationstart', | |
| 'animationend', | |
| ]); | |
| div.style.animation = 'anim 100s 100s'; | |
| const animation = div.getAnimations()[0]; | |
| await animation.ready; | |
| animation.startTime = animation.timeline.currentTime - 100 * MS_PER_SEC; | |
| await eventWatcher.wait_for('animationstart'); | |
| animation.startTime = animation.timeline.currentTime - 200 * MS_PER_SEC; | |
| await eventWatcher.wait_for('animationend'); | |
| }, 'Seeking a CSS animation using the start time dispatches animation events'); | |
| </script> |