| OLD | NEW |
| (Empty) |
| 1 <!DOCTYPE HTML> | |
| 2 <html> | |
| 3 <head> | |
| 4 <script> | |
| 5 if (window.testRunner) | |
| 6 window.testRunner.dumpAsText(); | |
| 7 | |
| 8 if (window.internals) { | |
| 9 window.internals.settings.setPreferCompositingToLCDTextEnabled(false); | |
| 10 } | |
| 11 | |
| 12 function hasScrollbarRepaint(layerTree) | |
| 13 { | |
| 14 return hasScrollbarRepaintHelper(JSON.parse(layerTree)); | |
| 15 } | |
| 16 | |
| 17 function hasScrollbarRepaintHelper(jsonLayerTree) { | |
| 18 var repaintRects = jsonLayerTree["repaintRects"]; | |
| 19 if (repaintRects) { | |
| 20 for (var i = 0; i < repaintRects.length; ++i) { | |
| 21 var width = repaintRects[i][2]; | |
| 22 var height = repaintRects[i][3]; | |
| 23 if (width == 15 && height == 285) | |
| 24 return true; | |
| 25 } | |
| 26 } | |
| 27 var children = jsonLayerTree["children"]; | |
| 28 if (children) { | |
| 29 for (var i = 0; i < children.length; i++) { | |
| 30 if (hasScrollbarRepaintHelper(children[i])) | |
| 31 return true; | |
| 32 } | |
| 33 } | |
| 34 return false; | |
| 35 } | |
| 36 | |
| 37 function testRepaint() { | |
| 38 var result = ""; | |
| 39 var container = document.getElementById("container"); | |
| 40 | |
| 41 document.body.offsetTop; | |
| 42 | |
| 43 if (window.internals) | |
| 44 window.internals.startTrackingRepaints(document); | |
| 45 | |
| 46 container.scrollTop = 100; | |
| 47 | |
| 48 if (window.internals) { | |
| 49 if (hasScrollbarRepaint(window.internals.layerTreeAsText(document, i
nternals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS))) | |
| 50 result += "PASS repainted when expected\n"; | |
| 51 else | |
| 52 result += "FAIL did not repaint when expected\n"; | |
| 53 window.internals.stopTrackingRepaints(document); | |
| 54 } | |
| 55 | |
| 56 var pre = document.createElement('pre'); | |
| 57 document.body.appendChild(pre); | |
| 58 pre.innerHTML = result; | |
| 59 if (!window.internals) | |
| 60 document.getElementById("description").style.display = "block"; | |
| 61 } | |
| 62 | |
| 63 window.onload = testRepaint; | |
| 64 </script> | |
| 65 <style> | |
| 66 #container { | |
| 67 width: 100px; | |
| 68 height: 300px; | |
| 69 box-shadow: inset 3px 3px 10px grey; | |
| 70 overflow: auto; | |
| 71 border: 1px black solid; | |
| 72 overflow: scroll; | |
| 73 position: relative; | |
| 74 -webkit-backface-visibility: hidden; | |
| 75 } | |
| 76 | |
| 77 #neg-z { | |
| 78 position: relative; | |
| 79 z-index: -1; | |
| 80 } | |
| 81 | |
| 82 .scrolled { | |
| 83 width: 50px; | |
| 84 height: 50px; | |
| 85 margin: 10px; | |
| 86 position: relative; | |
| 87 background-color: green; | |
| 88 } | |
| 89 | |
| 90 #description { | |
| 91 display: none; | |
| 92 } | |
| 93 </style> | |
| 94 </head> | |
| 95 <body> | |
| 96 <pre id="description"> | |
| 97 This test ensures that the logic for ensuring that we don't repaint when | |
| 98 scrolling composited layers works correctly in the face of neg z-order | |
| 99 descendants. | |
| 100 </pre> | |
| 101 <div id="container"> | |
| 102 <div id="neg-z"> | |
| 103 <div class="scrolled"></div> | |
| 104 <div class="scrolled"></div> | |
| 105 <div class="scrolled"></div> | |
| 106 <div class="scrolled"></div> | |
| 107 <div class="scrolled"></div> | |
| 108 <div class="scrolled"></div> | |
| 109 <div class="scrolled"></div> | |
| 110 </div> | |
| 111 </div> | |
| 112 </body> | |
| 113 </html> | |
| OLD | NEW |