| <!DOCTYPE html> |
| <title>beginElement() timing</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <svg width="100" height="20" style="border: grey 1px solid"> |
| <rect width="1" height="20"> |
| <animateMotion path="M0,0h100" dur="100ms"/> |
| </rect> |
| </svg> |
| <script> |
| async_test(t => { |
| const svg = document.querySelector('svg'); |
| const motion = document.querySelector('animateMotion'); |
| motion.addEventListener('endEvent', t.step_func(() => { |
| t.step_timeout(t.step_func(() => { |
| motion.beginElement(); |
| let start = svg.getCurrentTime(); |
| requestAnimationFrame(t.step_func_done(() => { |
| svg.pauseAnimations(); |
| let elapsed = svg.getCurrentTime() - start; |
| let expected_pos = Math.min(elapsed * 1000, 100); |
| let actual_pos = motion.parentElement.getCTM().e; |
| assert_approx_equals(actual_pos, expected_pos, 2, `position after ${elapsed}`); |
| })); |
| }), 50); |
| }), { once: true }); |
| }); |
| </script> |