| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <title>Operating on an animation with a null timeline</title> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <body> |
| <script> |
| // Ensure that operations on an animation object are well behaved with a |
| // null timeline. TODO(crbug.com/967416) Consider moving to WPT once edge cases |
| // for handling of null timelines are fully flushed out. |
| |
| // crbug.com/967509 |
| test(t => { |
| const effect = new KeyframeEffect(null, null, 1000); |
| const animation = new Animation(effect, null); |
| animation.finish(); |
| assert_equals(animation.startTime, null); |
| assert_equals(animation.currentTime, 1000); |
| assert_equals(animation.playState, 'paused'); |
| }, 'Animation finished with a null timeline'); |
| |
| // crbug.com/967507 |
| test(t => { |
| const effect = new KeyframeEffect(null, null, 1000); |
| const animation1 = document.body.animate([], 1000); |
| assert_true(!!animation1.effect.target); |
| const animation2 = new Animation(effect, null); |
| assert_false(!!animation2.effect.target); |
| animation2.pause(); |
| animation2.currentTime = 500; |
| assert_equals(animation2.playState, 'paused'); |
| assert_equals(animation2.currentTime, 500); |
| animation1.effect = effect; |
| assert_false(!!animation1.effect.target); |
| assert_false(!!animation2.effect); |
| assert_equals(animation2.playState, 'paused'); |
| }, 'Set effect with a null timeline'); |
| </script> |