| <!DOCTYPE HTML> |
| <html class="reftest-wait"> |
| <head> |
| <style> |
| div { |
| position: relative; |
| width: 200px; |
| height: 200px; |
| } |
| |
| .composited { |
| transform: translateZ(0px); |
| } |
| </style> |
| </head> |
| <body> |
| |
| <div class="composited" style="position: absolute"></div> |
| |
| <!-- div composited due to overlap, with two backing sharing descendants --> |
| <div> |
| <div id="sharing"> |
| <div></div> |
| </div> |
| </div> |
| |
| <div id="mutation"></div> |
| |
| <p>This test should not crash.</p> |
| <script> |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| |
| async function test() { |
| await new Promise(requestAnimationFrame); |
| await new Promise(requestAnimationFrame); |
| |
| // Make the first sharing layer composited (synchronously) |
| document.getElementById("sharing").classList.add("composited"); |
| |
| // Wait for a rendering update so that the second sharing layer gets updated to no longer share |
| await new Promise(requestAnimationFrame); |
| |
| // Trigger an unrelated style change to update layer positions and verify that it was left in |
| // a valid state after the previous rendering update. |
| document.getElementById("mutation").style.backgroundColor = "blue"; |
| document.documentElement.classList.remove("reftest-wait"); |
| } |
| window.addEventListener('load', test, false); |
| </script> |
| </body> |
| </html> |
| |