| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../resources/run-after-layout-and-paint.js"></script> |
| <style> |
| div { |
| position: absolute; |
| z-index: 1; |
| width: 100px; |
| height: 100px; |
| } |
| |
| .composited { |
| will-change: transform; |
| top: 60px; |
| left: 60px; |
| background-color: gray; |
| } |
| |
| .overlap1 { |
| top: 140px; |
| left: 140px; |
| background-color: blue; |
| } |
| |
| .overlap2 { |
| top: 220px; |
| left: 220px; |
| background-color: lime; |
| } |
| |
| .overlap3 { |
| top: 300px; |
| left: 300px; |
| background-color: magenta; |
| } |
| |
| div:hover { |
| background-color: green; |
| } |
| |
| .green { |
| background-color: green; |
| } |
| |
| #testResults { |
| display: none; |
| } |
| |
| </style> |
| <script> |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| function runTest() |
| { |
| if (!window.internals) |
| return; |
| runAfterLayoutAndPaint(executeTestCases); |
| } |
| |
| function executeTestCases() |
| { |
| // Case 1 |
| document.getElementById('Case1').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_INVALIDATIONS); |
| |
| // Case 2 |
| internals.startTrackingRepaints(document); |
| document.getElementById("A").style.backgroundColor = "green"; |
| document.getElementById('Case2').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_INVALIDATIONS); |
| internals.stopTrackingRepaints(document); |
| |
| // Case 3 |
| internals.startTrackingRepaints(document); |
| document.getElementById("A").style.backgroundColor = "blue"; |
| document.getElementById("B").style.backgroundColor = "green"; |
| document.getElementById('Case3').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_INVALIDATIONS); |
| internals.stopTrackingRepaints(document); |
| |
| // Case 4 |
| internals.startTrackingRepaints(document); |
| document.getElementById("B").style.backgroundColor = "blue"; |
| document.getElementById("C").style.backgroundColor = "green"; |
| document.getElementById('Case4').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_INVALIDATIONS); |
| internals.stopTrackingRepaints(document); |
| |
| // Case 5 |
| internals.startTrackingRepaints(document); |
| document.getElementById("C").style.backgroundColor = "blue"; |
| document.getElementById("A").style.backgroundColor = "green"; |
| document.getElementById('Case5').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_INVALIDATIONS); |
| internals.stopTrackingRepaints(document); |
| |
| // Display the test results only after test is done so that it does not affect repaint rect results. |
| document.getElementById('testResults').style.display = "block"; |
| |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| } |
| </script> |
| </head> |
| |
| <body onload="runTest()"> |
| |
| <p>Basic repaint test for squashed layers. The entire squashing layer should not need repainting when |
| only a portion of it is invalidated. Test interactively by using --show-paint-rects and hovering |
| over elements to change their color.</p> |
| |
| <div class="composited"></div> |
| <div id="A" class="overlap1"></div> |
| <div id="B" class="overlap2"></div> |
| <div id="C" class="overlap3"></div> |
| |
| <div id="testResults"> |
| CASE 1, original layer tree: |
| <pre id="Case1"></pre> |
| |
| CASE 2, overlap1 changes color: |
| <pre id="Case2"></pre> |
| |
| CASE 3, overlap1 and overlap2 change color: |
| <pre id="Case3"></pre> |
| |
| CASE 4, overlap2 and overlap3 change color: |
| <pre id="Case4"></pre> |
| |
| CASE 5, overlap3 and overlap1 change color: |
| <pre id="Case5"></pre> |
| </div> |
| |
| </body> |
| |
| </html> |