chromium/third_party/blink/web_tests/animations/usecounters/use-count-SyntheticKeyframesInCompositedCSSAnimation.html

<!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>