| <!DOCTYPE html> |
| <style> |
| .shouldNotComposite { |
| width: 30px; |
| height: 30px; |
| margin: 4px; |
| background-color: blue; |
| } |
| |
| .positioned { |
| position: relative; |
| left: 40px; |
| } |
| |
| #willChangeContents { |
| will-change: contents; |
| } |
| |
| #willChangeOpacity { |
| will-change: opacity; |
| } |
| |
| #willChangeTransform { |
| will-change: -webkit-transform; |
| } |
| |
| #willChangeTop { |
| will-change: top; |
| } |
| |
| #willChangeLeft { |
| will-change: left; |
| } |
| |
| #animateOpacity { |
| -webkit-animation: fade-in-out 0.1s linear infinite alternate; |
| } |
| |
| @-webkit-keyframes fade-in-out { from { opacity: 0.3; } to { opacity: 0.9; } } |
| </style> |
| |
| <script> |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| function animationEventListener() { |
| if (window.testRunner) { |
| document.getElementById('layertree').innerText = internals.layerTreeAsText(document); |
| testRunner.notifyDone(); |
| } |
| } |
| |
| onload = function() { |
| document.getElementById('animateOpacity').addEventListener('webkitAnimationIteration', animationEventListener); |
| }; |
| </script> |
| <div id="willChangeContents"> |
| <div id="willChangeOpacity" class="shouldNotComposite"></div> |
| <div> |
| <div id="willChangeLeft" class="positioned shouldNotComposite"></div> |
| </div> |
| <div> |
| <div> |
| <div id="willChangeTransform" class="shouldNotComposite"> |
| <div id="willChangeTop" class="positioned shouldNotComposite"></div> |
| </div> |
| </div> |
| </div> |
| <div id="animateOpacity" class="shouldNotComposite"></div> |
| </div> |
| |
| <pre id="layertree"></pre> |