| <style> |
| #testdiv { |
| background-color: inherit; /* needed to dodge the matched properties cache */ |
| } |
| .test { |
| transition: 1s; |
| width: calc(100% - 10px); /* calc compares inequal with the same exact calc value */ |
| } |
| </style> |
| <body onload="test()"> |
| Test that calc values in transitions don't lead to a style resolution spin. |
| <div id=log></div> |
| <div id=testdiv></div> |
| <script> |
| if (window.testRunner) { |
| testRunner.waitUntilDone(); |
| testRunner.dumpAsText(); |
| } |
| |
| function test() { |
| document.body.offsetWidth; |
| |
| const startStyleRecalcCount = window.internals ? internals.styleRecalcCount() : 0; |
| |
| testdiv.classList.add('test'); |
| |
| if (!window.internals) |
| return; |
| setTimeout(() => { |
| const styleRecalcCount = internals.styleRecalcCount() - startStyleRecalcCount; |
| if (styleRecalcCount <= 3) |
| log.innerHTML = "PASS" |
| else |
| log.innerHTML = `FAIL: styleRecalcCount: ${ internals.styleRecalcCount() - startStyleRecalcCount}`; |
| testRunner.notifyDone(); |
| }, 10); |
| } |
| </script> |
| </div> |