| <!DOCTYPE html> |
| <html> |
| <head> |
| <style> |
| |
| .animated { |
| width: 100px; |
| height: 100px; |
| position: absolute; |
| background-color: black; |
| } |
| |
| </style> |
| </head> |
| <body> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <div class="animated"></div> |
| <div class="animated"></div> |
| <script> |
| |
| promise_test(async () => { |
| for (let element of document.querySelectorAll(".animated")) |
| element.animate({ transform: ["translateX(0)", "translateX(100px)"] }, { duration: 1000, iterations: Infinity }); |
| |
| // Wait a few frames to make sure the accelerated animations have started. |
| await new Promise(requestAnimationFrame); |
| await new Promise(requestAnimationFrame); |
| await new Promise(requestAnimationFrame); |
| |
| window.internals.startTrackingStyleRecalcs(); |
| |
| // Wait a few more frames to allow time for a style update to occur if the running animations would have triggered one. |
| await new Promise(requestAnimationFrame); |
| await new Promise(requestAnimationFrame); |
| await new Promise(requestAnimationFrame); |
| |
| assert_equals(window.internals.styleRecalcCount(), 0); |
| }, "There should not be style updates while accelerated JS-originated animations are running on sibling elements with the same CSS class."); |
| |
| </script> |
| </body> |
| </html> |