4 <script src="../../resources/run-after-display.js"></script>
7 -webkit-transform: translatez(0);
12 background-color: lightgray;
20 background-color: cyan;
24 background-color: lime;
51 if (window.testRunner) {
52 testRunner.waitUntilDone();
53 testRunner.dumpAsText();
56 if (window.internals) {
57 internals.settings.setAcceleratedCompositingForFixedPositionEnabled(true);
58 internals.settings.setLayerSquashingEnabled(true);
63 if (!window.internals)
68 return new Promise(function(resolve) {
70 document.getElementById('Case1').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_REPAINT_RECTS);
75 })().then(function() {
77 return new Promise(function(resolve) {
80 window.internals.startTrackingRepaints(document);
81 window.scrollTo(0, 80);
82 runAfterDisplay(function() {
83 document.getElementById('Case2').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_REPAINT_RECTS);
84 window.internals.stopTrackingRepaints(document);
93 return new Promise(function(resolve) {
96 window.internals.startTrackingRepaints(document);
97 window.scrollTo(0, 120);
98 runAfterDisplay(function() {
99 document.getElementById('Case3').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_REPAINT_RECTS);
100 window.internals.stopTrackingRepaints(document);
109 return new Promise(function(resolve) {
112 window.internals.startTrackingRepaints(document);
113 window.scrollTo(0, 170);
114 runAfterDisplay(function() {
115 document.getElementById('Case4').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_REPAINT_RECTS);
116 window.internals.stopTrackingRepaints(document);
125 // Display the test results only after test is done so that it does not affect repaint rect results.
126 document.getElementById('testResults').style.display = "block";
128 if (window.testRunner)
129 testRunner.notifyDone();
131 }).catch(function(e) {
140 <body onload="runTest()">
142 <div id="description">
143 <p>The gray div is a composited fixed-position element, and the cyan/lime
144 elements should be squashed together on top. When scrolling, paragraphs may
145 pop in-and-out of the squashing layer when they change overlapping status
146 with respect to the composited layer underneath.</p>
148 <p>This scenario tests (1) that content repaints correctly as layers pop in
149 and out of squashing, and (2) that the positioning of the squashing layer
150 remains correct (i.e. scrolls properly) when the squashing layer is on top
151 of a fixed-position composited layer.</p>
154 <div class="composited background"> </div>
156 <div id="paragraph-a" class="overlapping cyan"></div>
157 <div id="paragraph-b" class="overlapping lime"></div>
158 <div id="paragraph-c" class="overlapping cyan"></div>
159 <div id="paragraph-d" class="overlapping lime"></div>
160 <div id="paragraph-e" class="overlapping cyan"></div>
161 <div id="paragraph-f" class="overlapping lime"></div>
162 <div id="paragraph-g" class="overlapping cyan"></div>
163 <div id="paragraph-h" class="overlapping lime"></div>
164 <div id="paragraph-i" class="overlapping cyan"></div>
165 <div id="paragraph-j" class="overlapping lime"></div>
166 <div id="paragraph-k" class="overlapping cyan"></div>
167 <div id="paragraph-l" class="overlapping lime"></div>
168 <div id="paragraph-m" class="overlapping cyan"></div>
169 <div id="paragraph-n" class="overlapping lime"></div>
171 <div id="testResults">
172 CASE 1, original layer tree:
173 <pre id="Case1"></pre>
175 CASE 2, scrolling y to 80, new layers will be squashed, so things repaint:
176 <pre id="Case2"></pre>
178 CASE 3, scrolling y to 120, no repaints expected:
179 <pre id="Case3"></pre>
181 CASE 4, scrolling y to 170 new layers will be squashed, so things repaint:
182 <pre id="Case4"></pre>