| <!DOCTYPE html> |
| <title>SVGAnimationElement.getStartTime() returns the start time of the current interval.</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <svg height="0"> |
| <animate attributeName="visibility" begin="1s; 3s" dur="1s"/> |
| <animate attributeName="visibility" begin="1s; 3s" dur="1s" fill="freeze"/> |
| </svg> |
| <script> |
| setup(function() { |
| window.animationElements = document.querySelectorAll('animate'); |
| window.timeContainer = document.querySelector('svg'); |
| }); |
| |
| function checkStartTime(values, t) { |
| assert_equals(animationElements[0].getStartTime(), values[0], |
| 'start time @ ' + t); |
| assert_equals(animationElements[1].getStartTime(), values[1], |
| 'start time @ ' + t); |
| } |
| |
| function checkHasNoCurrentInterval(t) { |
| assert_throws_dom('InvalidStateError', () => { |
| animationElements[0].getStartTime() |
| }, 'no interval @ ' + t); |
| assert_throws_dom('InvalidStateError', () => { |
| animationElements[1].getStartTime() |
| }, 'no interval @ ' + t); |
| } |
| |
| async_test(t => { |
| timeContainer.pauseAnimations(); |
| // Wait for the timeline to start. |
| onload = t.step_func(() => { |
| t.step_timeout(function() { |
| assert_equals(timeContainer.getCurrentTime(), 0); |
| checkStartTime([1, 1], 0); |
| timeContainer.setCurrentTime(1); |
| checkStartTime([1, 1], 1); |
| timeContainer.setCurrentTime(1.5); |
| checkStartTime([1, 1], 1.5); |
| timeContainer.setCurrentTime(2); |
| checkStartTime([3, 3], 2); |
| timeContainer.setCurrentTime(2.5); |
| checkStartTime([3, 3], 2.5); |
| timeContainer.setCurrentTime(3); |
| checkStartTime([3, 3], 3); |
| timeContainer.setCurrentTime(4); |
| checkHasNoCurrentInterval(4); |
| timeContainer.setCurrentTime(5); |
| checkHasNoCurrentInterval(5); |
| t.done(); |
| }, 0); |
| }); |
| }); |
| </script> |