| <!DOCTYPE html> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| |
| <style> |
| #target { |
| width: 100px; |
| height: 100px; |
| transition: width 1s; |
| } |
| </style> |
| |
| <div id="target"></div> |
| |
| <script> |
| 'use strict'; |
| |
| function waitForProgress() { |
| var initialWidth = getComputedStyle(target).width; |
| return new Promise(resolve => { |
| function poll() { |
| var width = getComputedStyle(target).width; |
| if (width === initialWidth) { |
| requestAnimationFrame(poll); |
| } else { |
| resolve(); |
| } |
| } |
| requestAnimationFrame(poll); |
| }); |
| } |
| |
| async_test(t => { |
| assert_true( |
| internals.isCSSPropertyUseCounted(document, "width"), |
| 'Usage of width in style causes it to be counted in normal CSS ' + |
| 'property UseCounter'); |
| assert_true( |
| internals.isCSSPropertyUseCounted(document, "height"), |
| 'Usage of height in style causes it to be counted in normal CSS ' + |
| 'property UseCounter'); |
| |
| assert_false( |
| internals.isAnimatedCSSPropertyUseCounted(document, "width"), |
| 'Initially width animation has not been UseCounted'); |
| assert_false( |
| internals.isAnimatedCSSPropertyUseCounted(document, "height"), |
| 'Initially height animation has not been UseCounted'); |
| |
| target.offsetTop; // force recalc |
| target.style.width = '200px'; |
| |
| waitForProgress().then(t.step_func_done(() => { |
| assert_true( |
| internals.isAnimatedCSSPropertyUseCounted(document, "width"), |
| 'After triggering the transition, width has been counted'); |
| assert_false( |
| internals.isAnimatedCSSPropertyUseCounted(document, "height"), |
| 'Height is not animated, so not counted'); |
| })); |
| }, 'Using CSS transitions causes UseCounter to be incremented.'); |
| </script> |