| <!DOCTYPE html> |
| <script src="../../resources/run-after-layout-and-paint.js"></script> |
| <style> |
| |
| .a { } |
| #f { |
| position: absolute; |
| left: 120px; |
| top: 120px; |
| width: 250px; |
| height: 250px; |
| border: 0; |
| outline: 100px solid #fc8; |
| } |
| |
| </style> |
| <div class="a"></div> |
| <iframe id="f" srcdoc=" |
| <style> |
| body { will-change: transform; } |
| #b { height: 200px; background: blue; } |
| </style> |
| <div id=b></div>"></iframe> |
| <script> |
| |
| if (window.testRunner) |
| testRunner.waitUntilDone(); |
| onload = () => { |
| var a = document.querySelector(".a"); |
| var f = document.querySelector("#f"); |
| var b = f.contentWindow.document.querySelector("#b"); |
| runAfterLayoutAndPaint(() => { |
| |
| // Invalidate main frame lifecycle without affecting compositing. |
| a.className = ""; |
| |
| // Invalidate child frame compositing state. |
| b.style.opacity = "0.2"; |
| |
| }, true); |
| }; |
| |
| </script> |