blob: af6a4fed055779db56bdad4d88cfeeea1e67d096 [file] [log] [blame]
<!-- Based on compositing/repaint/fixed-pos-inside-composited-intermediate-layer.html -->
<!DOCTYPE html>
<script src="resources/paint-invalidation-test.js"></script>
.compositedBehind {
width: 500px;
height: 500px;
transform: translatez(0);
background-color: cyan;
.containerOverlapsComposited {
position: absolute;
z-index: 2; /* Creates a stacking context so that the fixed-pos layer is contained instead of a sibling */
top: 20px;
left: 20px;
width: 100px;
height: 30000px;
background-color: green;
.fixed {
position: fixed;
top: 45px;
left: 45px;
background-color: lime;
width: 50px;
height: 50px;
if (window.internals) {
/* Note carefully, compositing for fixed position is _disabled_ here */
window.expectedPaintInvalidationObjects = [
"LayoutBlockFlow (positioned) DIV class='fixed'",
function paintInvalidationTest() {
window.scrollTo(0, 100);
<body onload="runPaintInvalidationTest()">
Among other duplicate bugs:
A non-composited fixed-position element can get grouped into a composited container.
In this case, repaint invalidations were incorrectly going to the LayoutView instead
of the composited container. The incorrect result was that the fixed-position element
never repainted, and it appeared to scroll along with the composited container.
<div class="compositedBehind"> </div>
<div class="containerOverlapsComposited">
<div class="fixed"></div>