| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Reconcile layer position recursive</title> |
| <meta charset="utf-8"/> |
| <style> |
| #container div { |
| margin: 50px; |
| border: 5px solid black; |
| } |
| .scrollable { |
| background: linear-gradient(135deg, cyan, green); |
| overflow: auto; |
| -webkit-overflow-scrolling: touch; |
| } |
| .fixed { |
| position: fixed; |
| height: 100px; |
| width: 100px; |
| background: yellow; |
| } |
| .sticky { |
| position: -webkit-sticky; |
| position: sticky; |
| height: 100px; |
| width: 100px; |
| background: magenta; |
| } |
| </style> |
| <script> |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| if (window.internals) |
| window.internals.settings.setAsyncFrameScrollingEnabled(true); |
| function getSwipeUIScript(fromX, fromY, toX, toY, duration) |
| { |
| return `(() => { |
| uiController.dragFromPointToPoint(${fromX}, ${fromY}, ${toX}, ${toY}, ${duration}, () => { |
| uiController.uiScriptComplete(""); |
| }); |
| })();`; |
| } |
| function doTest() |
| { |
| if (window.testRunner && testRunner.runUIScript && window.internals) { |
| testRunner.runUIScript(getSwipeUIScript(2, 200, 0, 2, .05), () => { |
| setTimeout(() => { |
| document.getElementById('layerTree').innerText = internals.layerTreeAsText(document, |
| internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS | internals.LAYER_TREE_INCLUDES_TILE_CACHES); |
| testRunner.notifyDone(); |
| }, 3000); |
| }); |
| } |
| } |
| window.addEventListener('load', doTest, false); |
| </script> |
| </head> |
| <body> |
| <div style="height: 1000px"></div> |
| <div id="container" class="scrollable" style="height: 300px; width: 300px"> |
| <div class="scrollable" style="height: 400px; width: 200px"> |
| <div style="height: 500px; width: 100px; background: gray"> |
| <div class="fixed" style="left: 20px; top: 20px;"> |
| <div class="sticky" style="left: 30px; top: 30px;"></div> |
| </div> |
| <div class="sticky" style="left: 20px; top: 70px;"> |
| <div class="sticky" style="left: 30px; top: 30px;"></div> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div style="height: 300px"></div> |
| <pre id="layerTree"></pre> |
| </body> |
| </html> |