| <!DOCTYPE html> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <style> |
| @keyframes noSyntheticKeyframes { |
| from { color: black; } |
| to { color: green; } |
| } |
| @keyframes customPropertySyntheticKeyframes { |
| to { --x: pants; } |
| } |
| @keyframes nonCompositedSyntheticKeyframes { |
| to { color: green; } |
| } |
| @keyframes compositedSyntheticKeyframes { |
| from { |
| opacity: 0; |
| } |
| to { |
| transform: rotate(45deg); |
| opacity: 1; |
| } |
| } |
| #target { |
| animation-duration: 1s; |
| } |
| </style> |
| <div id="target"></div> |
| <script> |
| // From UseCounter.h. |
| var SyntheticKeyframesInCompositedCSSAnimation = 664; |
| |
| function forceStyleRecalc() { |
| getComputedStyle(target).left; |
| } |
| |
| test(() => { |
| forceStyleRecalc(); |
| assert_false(internals.isUseCounted(document, SyntheticKeyframesInCompositedCSSAnimation), 'No animations started'); |
| |
| target.style.animationName = 'noSyntheticKeyframes'; |
| forceStyleRecalc(); |
| assert_false(internals.isUseCounted(document, SyntheticKeyframesInCompositedCSSAnimation), 'noSyntheticKeyframes'); |
| |
| target.style.animationName = 'customPropertySyntheticKeyframes'; |
| forceStyleRecalc(); |
| assert_false(internals.isUseCounted(document, SyntheticKeyframesInCompositedCSSAnimation), 'customPropertySyntheticKeyframes'); |
| |
| target.style.animationName = 'nonCompositedSyntheticKeyframes'; |
| forceStyleRecalc(); |
| assert_false(internals.isUseCounted(document, SyntheticKeyframesInCompositedCSSAnimation), 'nonCompositedSyntheticKeyframes'); |
| |
| target.style.animationName = 'compositedSyntheticKeyframes'; |
| forceStyleRecalc(); |
| assert_true(internals.isUseCounted(document, SyntheticKeyframesInCompositedCSSAnimation), 'compositedSyntheticKeyframes'); |
| }, 'The SyntheticKeyframesInCompositedCSSAnimation use counter should only be triggered by animations with composited properties with neutral keyframes'); |
| </script> |